【机器学习】——线性模型

💻博主现有专栏:

                C51单片机(STC89C516),c语言,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结),jQuery,前端vue.js,Javaweb开发,Python机器学习等
🥏主页链接:

                Y小夜-CSDN博客

目录

🎯本文目的

🎯单变量线性回归预测披萨价格

🎃内容

🎃代码解析

🎃可能会发生的错误

✨测试数据无法测试进行reshape

✨不知道如何在图上显示测试后的数据

🎯二元线性模型预测学生成绩

 🎃内容

🎃代码解析

🎯岭回归预测波士顿房价

 🎃内容

🎃代码解析

🎯套索回归预测波士顿房价

 🎃内容

🎃代码解析

🎯逻辑回归识别鸢尾花

 🎃内容

🎃代码解析

🎃可能会发生的错误

✨逻辑回归模型最大迭代次数没有收敛

✨不知道如何调整逻辑回归模型的参数


🎯本文目的

  • (一)理解线性模型的基本原理
  • (二)能够使用pandas生成简单数据集
  • (三)能够使用sklearn库进行线性模型的训练和预测
  • (四)掌握岭回归、套索回归模型的参数调节
  • (五)能够使用sklearn库进行逻辑回归模型的训练和预测

🎯单变量线性回归预测披萨价格

🎃内容

披萨价格和披萨的直径关系如下表所示。

直径(英寸)

价格(美元)

6

7

8

11

10

13

14

17.5

18

18

要求:

  • 使用一元线性回归模型
  • 输出模型的参数。
  • 预测直径为12英寸的披萨价格是多少?
  • 图形展示样本数据及模型。(使用直线图形展示模型,使用散点图展示各个数据点)

🎃代码解析

import pandas as pddata={'foot':[6,8,10,14,18],'price':[7,11,13,17.5,18]}data_frame=pd.DataFrame(data)data_frame.head()

        使用了Pandas 库创建了一个数据框(DataFrame),其中包含了两列数据:footpricefoot 列包含了脚的尺寸数据,而 price 列包含了对应的鞋子价格数据。接下来,data_frame.head() 方法被调用,该方法用于显示数据框的前几行,默认显示前五行。这是为了让用户能够快速浏览数据框的内容。


import numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionreg=LinearRegression()x=data_frame['foot'].values.reshape(-1,1)y=data_frame['price']reg.fit(x,y)
        使用了 NumPy、Matplotlib 和 Scikit-learn 库。首先,它从 data_frame 数据框中提取了 foot 列和 price 列的数据作为自变量 x 和因变量 y。然后,使用 Scikit-learn 中的线性回归模型(LinearRegression)对数据进行拟合,即通过最小化残差平方和来拟合线性模型的系数。
print(reg.coef_,reg.intercept_)

        这段代码打印了线性回归模型的系数和截距。在线性回归模型中,系数表示自变量的变化对因变量的影响,截距表示当自变量为0时,因变量的值。


pisa=np.array([12]).reshape(-1,1)reg.predict(pisa)

        这段代码使用了训练好的线性回归模型 reg 对输入的 pisa 数据进行了预测。在这里,pisa 是一个 NumPy 数组,包含了一个值为 12 的数据点,通过 .reshape(-1,1) 将其转换成了二维数组的形式,以满足线性回归模型的输入要求。


z=np.linspace(5,20,20)
plt.scatter(x,y,s=80)
plt.scatter([12],reg.predict(pisa),s=80)
plt.plot(z,reg.predict(z.reshape(-1,1)),c='k')
plt.title('pisa')
plt.show()

        这段代码绘制了一个散点图,并在其中添加了线性回归模型的拟合线和一个新数据点的预测结果。

  • plt.scatter(x, y, s=80) 绘制了原始数据的散点图,其中 x 是脚的尺寸,y 是对应的鞋子价格。参数 s 控制了散点的大小。

  • plt.scatter([12], reg.predict(pisa), s=80) 添加了一个新数据点 (12, 预测值) 的散点,其中预测值通过模型对尺寸为 12 的脚进行预测得到。

  • plt.plot(z, reg.predict(z.reshape(-1,1)), c='k') 绘制了线性回归模型的拟合线,其中 z 是从 5 到 20 的一系列数值,表示了脚的尺寸范围。

    • z 是一个包含了一系列脚的尺寸的数组,范围从 5 到 20,这些数值用来表示横坐标的取值范围。

    • reg.predict(z.reshape(-1,1)) 使用训练好的线性回归模型 reg 对输入的尺寸数据进行预测,得到对应的价格预测值。

    • plt.plot(z, reg.predict(z.reshape(-1,1)), c='k') 绘制了这些尺寸数据与对应的价格预测值之间的关系。参数 c='k' 设置了线条的颜色为黑色。

  • plt.title('pisa') 设置了图表的标题为 'pisa'。

  • plt.show() 显示了绘制好的图表。

🎃可能会发生的错误

✨测试数据无法测试进行reshape

问题描述:

原因:

        当尝试使用 reg.predict(pisa) 进行预测时出现了错误。错误信息指出输入的数据需要是一个二维数组,但你提供了一个一维数组。为了解决这个问题,你可以按照提示使用 reshape(-1, 1) 方法将数据转换成二维数组的形式,或者直接将其作为包含单个样本的二维数组。

解决办法:

pisa=np.array([12]).reshape(-1,1)
reg.predict(pisa)

✨不知道如何在图上显示测试后的数据

 问题描述:

        没有x=12的那个点

原因:

        没有scatter()中生成

解决办法:

        在描述其他点后,在加入这个点(添加一下代码),最后在画图

plt.scatter([12],reg.predict(pisa),s=80)

🎯二元线性模型预测学生成绩

 🎃内容

学生的最终成绩由平时成绩和期末成绩构成。某课程的成绩构成标准未知。有7个学生的数据样本如下图所示。某位同学平时成绩83,期末成绩85,预测该同学的最终成绩是多少?

🎃代码解析

import pandas as pd
data={'pingshi':[80,82,85,90,86,82,78],'qimo':[86,80,78,90,82,90,80],'zuizhong':[84.2,80.6,80.1,90,83.2,87.6,79.4]}
data_frame=pd.DataFrame(data)
data_frame.head(7)

        创建了一个包含学生考试成绩的DataFrame,其中包括平时成绩(pingshi)、期末考试成绩(qimo)和最终总成绩(zuizhong)。数据包含了7个学生的成绩信息。

  • 平时成绩列包含了每个学生的平时考试成绩。
  • 期末考试成绩列包含了每个学生的期末考试成绩。
  • 最终总成绩列包含了每个学生的最终总成绩,这可能是平时成绩和期末考试成绩的加权平均值或者其他组合方式计算得出。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
reg=LinearRegression()
x=data_frame.drop('zuizhong',axis=1)
y=data['zuizhong']
reg.fit(x,y)

        使用了Scikit-Learn库中的LinearRegression模型对学生的平时成绩(pingshi)和期末考试成绩(qimo)来预测最终总成绩(zuizhong)。

具体步骤如下:

  1. 从DataFrame中提取特征x,这里是平时成绩和期末考试成绩,即去除了最终总成绩这一列。
  2. 从数据字典中提取目标变量y,即最终总成绩。
  3. 初始化一个LinearRegression模型reg。
  4. 使用提取的特征x和目标变量y来拟合(训练)LinearRegression模型。
  5. 训练后,模型将会得出最佳拟合的系数和截距,用于预测最终总成绩。

student=[[83,85]]
reg.predict(student)

        用训练好的线性回归模型reg对一个新的学生的平时成绩和期末考试成绩进行预测。这个新的学生的平时成绩为83,期末考试成绩为85。

具体步骤如下:

  1. 创建一个包含平时成绩和期末考试成绩的二维列表student,其中平时成绩为83,期末考试成绩为85。
  2. 调用reg.predict(student)方法,使用训练好的模型对这个学生的成绩进行预测。

print(reg.coef_,reg.intercept_)
print(f"所以该课程成绩构成标准为:最终成绩= {reg.coef_[0]}*平时成绩 + {reg.coef_[1]}*期末成绩 + {reg.intercept_}")

        打印了线性回归模型的系数(coefficients)和截距(intercept),然后使用这些参数构建了最终的成绩构成标准。

具体解析如下:

  • reg.coef_是一个数组,包含了线性回归模型中每个特征(平时成绩和期末考试成绩)的系数。
  • reg.intercept_是截距,表示当所有特征都为0时,最终总成绩的预测值。

🎯岭回归预测波士顿房价

 🎃内容

        使用岭回归预测波士顿房价,并调试参数拟合出一个合适的模型。提示:波士顿房价数据集在datasets.load_boston中。

🎃代码解析

from sklearn.datasets import load_boston
data1=load_boston()
from sklearn.model_selection import train_test_split
x,y=data1.data,data1.target
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=8)
x.shape,x_train.shapefrom sklearn.linear_model import Ridge
ridge=Ridge(alpha=200000).fit(x_train,y_train)
print(ridge.score(x_train,y_train))
print(ridge.score(x_test,y_test))

        使用了波士顿房价数据集(Boston House Prices dataset)进行岭回归(Ridge Regression)的建模和评估。

具体步骤如下:

  1. 导入波士顿房价数据集并分割数据集为训练集和测试集:

    • 使用load_boston()函数加载波士顿房价数据集,数据集包括房屋特征(x)和目标变量(y)。
    • 使用train_test_split函数将数据集分割为训练集(x_trainy_train)和测试集(x_testy_test),设置了random_state=8来确保随机性的可重复性。
  2. 建立岭回归模型并进行训练:

    • 使用Ridge类创建岭回归模型ridge,设置了alpha=200000作为正则化参数。
    • 使用训练集数据(x_trainy_train)对岭回归模型进行训练。
  3. 输出模型在训练集和测试集上的决定系数(R²分数):

    • 使用score方法分别计算并输出岭回归模型在训练集和测试集上的决定系数(R²分数),用于评估模型的拟合程度。

🎯套索回归预测波士顿房价

 🎃内容

        使用套索回归预测波士顿房价,并调试参数拟合出一个合适的模型。提示:波士顿房价数据集在datasets.load_boston中。

🎃代码解析

from sklearn.datasets import load_boston
data1=load_boston()
from sklearn.model_selection import train_test_split
x,y=data1.data,data1.target
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=8)
x.shape,x_train.shape
from sklearn.linear_model import Lasso
ridge=Lasso(alpha=20).fit(x_train,y_train)
print(ridge.score(x_train,y_train))
print(ridge.score(x_test,y_test))

        这段代码与上一个类似,但是使用的是Lasso回归(Lasso Regression)而不是岭回归。

具体步骤如下:

  1. 导入波士顿房价数据集并分割数据集为训练集和测试集,与之前相同。

  2. 建立Lasso回归模型并进行训练:

    • 使用Lasso类创建Lasso回归模型ridge,设置了alpha=20作为正则化参数。
    • 使用训练集数据(x_trainy_train)对Lasso回归模型进行训练。
  3. 输出模型在训练集和测试集上的决定系数(R²分数):

    • 使用score方法分别计算并输出Lasso回归模型在训练集和测试集上的决定系数(R²分数),用于评估模型的拟合程度。

🎯逻辑回归识别鸢尾花

 🎃内容

        请使用逻辑回归识别鸢尾花,并调试参数拟合出一个合适的模型。

提示:鸢尾花数据集在datasets.load_iris中。

🎃代码解析

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
iris=load_iris()
x,y=iris.data,iris.target
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=42)
clf=LogisticRegression(max_iter=1000000,C=10)
clf.fit(x_train,y_train)
print(clf.score(x_train,y_train))
print(clf.score(x_test,y_test))

使用了鸢尾花数据集(Iris dataset)进行逻辑回归(Logistic Regression)的建模和评估。

具体步骤如下:

  1. 导入鸢尾花数据集并分割数据集为训练集和测试集:

    • 使用load_iris()函数加载鸢尾花数据集,数据集包括花朵的特征(x)和类别标签(y)。
    • 使用train_test_split函数将数据集分割为训练集(x_trainy_train)和测试集(x_testy_test),设置了random_state=42来确保随机性的可重复性。
  2. 建立逻辑回归模型并进行训练:

    • 使用LogisticRegression类创建逻辑回归模型clf,设置了max_iter=1000000来增加最大迭代次数,C=10作为正则化参数。
    • 使用训练集数据(x_trainy_train)对逻辑回归模型进行训练。
  3. 输出模型在训练集和测试集上的准确率(Accuracy):

    • 使用score方法分别计算并输出逻辑回归模型在训练集和测试集上的准确率,用于评估模型的性能。

🎃可能会发生的错误

✨逻辑回归模型最大迭代次数没有收敛

问题描述:

原因:

    这个警告是由于逻辑回归模型在默认的最大迭代次数下没有收敛而产生的。你可以尝试增加 max_iter 参数的值来解决这个问题。

解决办法:

clf=LogisticRegression(max_iter=1000000,C=10)

✨不知道如何调整逻辑回归模型的参数

 问题描述:

        逻辑回归模型过拟合或者欠拟合时,不知道如何调整参数

解决办法:

        在Scikit-learn中,逻辑回归模型(LogisticRegression)不具有 alpha 参数。alpha 通常用于控制正则化的强度,但在逻辑回归模型中,正则化是通过 penalty 参数来控制的,默认情况下为L2正则化。

        如果你想要使用L2正则化并且调整正则化强度,可以修改 C 参数,其中 C 是正则化的倒数,因此较小的 C 值表示更强的正则化。

如:

clf = LogisticRegression(max_iter=1000, C=0.1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?

大家好,我是瑶琴呀。 面试被问到不懂的东西,是直接说不懂还是坚持狡辩一下?这个问题可以转变一下,如果你顺利拿到 offer,公司安排的工作跟你之前的技术和经验不匹配,你还愿意干下去吗? 转变一…

太速科技-FMC125-两路125Msps AD,两路160Msps DA FMC子卡

FMC125-两路125Msps AD,两路160Msps DA FMC子卡 一、板卡概述 板卡可实现2路14bit 125Msps AD 和2路16bit 160MspsDA功能,FMC LPC连接器用于扩展到xilinx用于模拟信号、中频信号采集,信号发出等应用。 二、性能指标 板卡功能 参…

幻影成像制作中,哪些技术细节不可忽视?

在当今多媒体展厅设计的潮流中,幻影成像技术以其立体的数字影像和卓越的视觉效果,脱颖而出,成为备受瞩目的焦点。它不仅吸引了众多参观者的目光,更在社交媒体上掀起了热烈的讨论。然而,要想在多媒体展厅中精心打造一场…

2024可信赖的企业级生成式 AI 白皮书

来源:COPU&IBM: 近期历史回顾:

k8s devops实战教程+生产实践+可就业

k8s devops实战教程 简介教程涉及到内容教程获取学习教程后的收货助学群 简介 越来越多的企业应用云原生化,催生很多应用的部署方式也发生了很多变化。 从物理机部署应用过度到虚机部署应用再到应用容器化,从单应用再到服务拆分为微服务,靠人…

是他将计算机从“一屋子”变成“一柜子”——量子前哨缅怀小型机之父 戈登·贝尔

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:6000字丨15分钟阅读 5 月 21 日, 美国贝尔实验室资深人士 John Mashey 发布消息称,计算机先驱戈登贝尔(Gordon…

机器人系统ros2-开发学习实践15-模拟用 URDF 建模 步行机器人行走示例

目标: 本教程将向您展示如何建模行走机器人、将状态发布为tf2消息并在 Rviz 中查看模拟。首先,我们创建描述机器人组件的 URDF 模型。接下来,我们编写一个节点来模拟运动并发布 JointState 和变换。然后我们使用robot_state_publisher将整个…

spring cloud alibaba sentinel 配置过程 流控 降级热点 授权

目录 1.基础理论 2.配置 3.加入依赖和配置文件 4.流控 1.基础理论 Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 丰富的应用场景 :Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心…

未授权访问:Jupyter Notebook 未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、利用terminal命令执行 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬总结好的文章…

cpolar内网穿透工具—无需部署,远程访问网址

文章目录 cpolar介绍安装教程隧道管理VIP客户cpolar介绍 cpolar是一种安全的内网穿透服务,它将局域网下面的本地服务器通过加密隧道暴露至公网,使得公网用户可以正常访问内网服务。 只需一行命令,就可以将内网站点发布至公网,方便给客户演示。高效调试微信公众号、小程序…

全域运营平台的优缺点各有哪些?听听使用者怎么说!

作为多个创业者交流群内的热点话题,关于全域运营平台优缺点的分析和点评不断涌现,为许多创业者更多信息的同时,也让他们的选择过程变得非常艰难。而在众多的全域运营平台中,被分析和点评次数最多的,当属全域运营平台。…

css3实现0.5px边框

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>css3实现0.5px边框</title><s…

电商API接口助力直播带货选品||助力电商平台搭建选品

如今&#xff0c;直播带货如火如荼。直播带货的核心是卖货、品牌盈利&#xff0c;那想要带货效果更好&#xff0c;选品及定价是最关键的环节。 事实上&#xff0c;品牌企业可以直接使用API接口工具来辅助自身选品及定价&#xff0c;这主要是因为比价工具在直播带货选品环节能起…

dubbo复习:(4) 和springboot 整合时,客户端负载均衡的配置

需要在DubboReference注解指定loadbalance属性。示例如下&#xff1a; package cn.edu.tju.service;import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Ser…

Java+IDEA+SpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码

JavaIDEASpringBoot药物不良反应ADR智能监测系统源码 ADR智能化监测系统源码 药物不良反应&#xff08;Adverse Drug Reaction&#xff0c;ADR&#xff09;是指在使用合格药品时&#xff0c;在正常的用法和用量下出现的与用药目的无关的有害反应。这些反应往往因药物种类、使用…

【全开源】排队叫号系统源码(FastAdmin+GatewayWorker)

一款基于FastAdminGatewayWorker开发的多项目多场景排队叫号系统&#xff0c;支持大屏幕投屏&#xff0c;语音播报叫号&#xff0c;可用于餐厅排队取餐、美甲店排队取号、排队领取、排队就诊、排队办理业务等诸多场景&#xff0c;助你轻松应对各种排队取号叫号场景。 ​打造高…

03. Spring 事务管理

文章目录 1. Spring 事务管理简介2. Transactional 注解属性信息3. Transactional 简单使用4. Transactional 使用注意事项4.1 正确指定事务回滚的异常类型4.1.1 Java 异常继承体系 4.2 Transactional 注解应用在 public 方法或类上才有效4.3 正确设置 Transactional 的 propag…

西门子smart line触摸屏软件安装 WinCC Flexible Smart V4SP1 V3

提示&#xff1a;Wincc flexible smart软件为西门子Smart line系列触摸屏的专用组态软件&#xff0c;这款屏不能用博途来组态&#xff0c;只能用这个软件来组态。西门子Smart line系列触摸屏的常用型号为SMART 700 IE V3/V4&#xff0c;SMART 1000 IE V3/V4。 Wincc flexible …

类和对象(上)【有关类的全面学习】【this指针的学习】

类和对象&#xff08;上&#xff09; 1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C语言注重过程&#xff1a; C是基于面向对象的&#xff0c;关注的是对象&#xff0…

Spring - Spring Cache 缓存注解这样用,实在是太香了!

作者最近在开发公司项目时使用到 Redis 缓存&#xff0c;并在翻看前人代码时&#xff0c;看到了一种关于 Cacheable 注解的自定义缓存有效期的解决方案&#xff0c;感觉比较实用&#xff0c;因此作者自己拓展完善了一番后分享给各位。 Spring 缓存常规配置 Spring Cache 框架给…