当前位置: 首页 > news >正文

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

💻博主现有专栏:

                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)

相关文章:

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

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…...

最全的Redis常用命令

Redis是一个开源的内存数据结构存储系统,用作数据库、缓存和消息代理。它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets&#xff09…...

sourcetree推送到git上面

官网:Sourcetree | Free Git GUI for Mac and Windows 下载到1次提交 下载后打开 点击跳过 下一步 名字邮箱 点击clone 把自己要上传的代码粘贴到里面去 返回点击远程->点击暂存所有 加载完毕后,输入提交内容提交 提交完成了 2次提交 把文件夹内的…...

勒索病毒的策略与建议

随着网络技术的快速发展,勒索病毒攻击成为全球范围内日益严重的网络安全威胁。勒索病毒通过加密用户文件或锁定系统来勒索赎金,给个人和企业带来了巨大的损失。因此,了解如何应对勒索病毒攻击至关重要。本文将概述一些有效的防范措施和应对策…...

doxygen 1.11.0 使用详解(十四)——输出格式

目录 HTMLLATEXMan pagesRTFXMLDocBookCompiled HTML Help (a.k.a. Windows 98 help)Qt Compressed Help (.qch)Eclipse HelpXCode DocSetsPostScriptPDF The following output formats are directly supported by doxygen: HTML Generated if GENERATE_HTML is set to YES i…...

java list<AnalystEducationDO> 转成List<AnalystEducationRespVO>两个对象的属性一样

如果AnalystEducationDO和AnalystEducationRespVO两个类的属性完全相同,且遵循Java Bean的命名规范(即具有相应的getter和setter方法),你可以利用一些库来简化转换过程,比如Apache BeanUtils或Spring Framework的BeanU…...

[Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解

目录 1.买卖股票的最佳时机含冷冻期1.题目链接买卖股票的最佳时机含冷冻期2.算法原理详解3.代码实现 2.买卖股票的最佳时机含手续费1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机含冷冻期 1.题目链接 买卖股票的最佳时机含冷冻期 2.算法原理详解 思路&#xff…...

微服务:利用RestTemplate实现远程调用

打算系统学习一下微服务知识,从今天开始记录。 远程调用 调用order接口,查询。 由于实现还未封装用户信息,所以为null。 下面我们来使用远程调用用户服务的接口,然后封装一下用户信息返回即可。 流程图 配置类中注入RestTe…...

【Linux】TCP的三次握手和四次挥手

三次握手 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。注意!三次握手只是用来建立连接用的,和TCP可靠稳定没有关系,TCP的可靠是通过重传和检错等机制实现的。 默认创建一个socket后&#xff…...

爬山算法全解析:掌握优化技巧,攀登技术高峰!

一、引言 爬山算法是一种局部搜索算法,它基于当前解的邻域中进行搜索,通过比较当前解与邻域解的优劣来更新当前解,从而逐步逼近最优解。本文将对爬山算法进行详细的介绍。 二、爬山算法简介 爬山算法是一种基于贪心策略的优化算法&#xff…...

使用 Ollama框架 下载和使用 Llama3 AI大模型的完整指南

🏡作者主页:点击! 🤖AI大模型部署与应用专栏:点击! ⏰️创作时间:2024年5月24日20点59分 🀄️文章质量:96分 目录 💥Ollama介绍 主要特点 主要优点 应…...

最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版

最新流媒体在线音乐系统网站源码 源码免费下载地址抄笔记 (chaobiji.cn)...

中国改革报是什么级别的报刊?在哪些领域具有较高的影响力?

中国改革报是什么级别的报刊?在哪些领域具有较高的影响力? 《中国改革报》是国家发展和改革委员会主管的全国性综合类报纸。它在经济领域和改革发展方面具有重要的影响力,是传递国家政策、反映改革动态的重要平台。该报对于推动中国的经济改…...

乡村振兴的乡村公共服务提升:提升乡村公共服务水平,满足农民多样化需求,构建幸福美好的美丽乡村

目录 一、引言 二、乡村公共服务提升的必要性 (一)满足农民多样化需求 (二)促进乡村经济发展 (三)构建幸福美好的美丽乡村 三、乡村公共服务面临的挑战 (一)基础设施薄弱 &a…...

【在 Windows 上使用 ADB 安装 Android 设备上的 atx-agent】

在进行 Android 应用的 UI 自动化测试时,通常需要在设备上安装一些辅助工具。其中一个常用的工具是 atx-agent,它可以帮助我们在 Android 设备上进行 UI 自动化操作。本文将介绍如何在 Windows 环境下使用 ADB 安装 Android 设备上的 atx-agent。 1. 下…...

iptables 防火墙

linux防火墙基础 iptables的表,链结构 数据包控制的匹配流程 编写防火墙规则 基本语法,控制类型 添加,查看,删除规则 规则的匹配条件 iptables组件 netfilter :属于内核态的功能体系,是一个内核模块…...

软件设计师笔记1

分享一下学习软考时做的笔记,笔者太懒了,后续篇章都没咋记录,现在放出来水几篇文章 另外,本章内容都是结合教材,B站课堂记录。下一篇软考笔记知识点来自真题 软考笔记 第一章 1. 计算机的组成 1. 控制器 控制器由…...

springboot集成mybatis 单元测试

1、依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…...

ecc dsa rsa des

ECC&#xff08;椭圆曲线密码学&#xff09;、DSA&#xff08;数字签名算法&#xff09;、RSA&#xff08;一种公钥加密技术&#xff09;和DES&#xff08;数据加密标准&#xff09;都是密码学领域中重要的加密和安全技术。下面是对这四种技术的简要介绍&#xff1a; 椭圆曲线密…...

Gitee的原理及应用详解(三)

本系列文章简介&#xff1a; Gitee是一款开源的代码托管平台&#xff0c;是国内最大的代码托管平台之一。它基于Git版本控制系统&#xff0c;提供了代码托管、项目管理、协作开发、代码审查等功能&#xff0c;方便团队协作和项目管理。Gitee的出现&#xff0c;在国内的开发者社…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...