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

💻博主现有专栏:

                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 pd

data={'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 np

import matplotlib.pyplot as plt

from sklearn.linear_model import LinearRegression

reg=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.shape

from 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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端设计模式学习记录

设计模式介绍 概念 设计模式是我们在解决问题的时候针对特定的问题给出的简洁而优化的处理方案在JS设计模式中,最核心的思想:封装变化将变与不变分离,确保变化的部分灵活、不变的部分稳定 注意:下面文章介绍的设计模式&#xff…

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

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

流量控制的艺术:深入探索分布式限流策略与实践

前言 ​ 当资源成为瓶颈时,服务框架需要对消费者做限流,启动流控保护机制。流量控制有多种策略,比较常用的有:针对访问速率的静态流控、针对资源占用的动态流控、针对消费者并发连接数的连接控制和针对并行访问数的并发控制。 常…

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

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

【C语言】大小端字节序存储

引子 不知道你是否像我一样好奇过一个问题:为什么每当我们在调试查看内存窗口时,(以int类型为例)4个字节内容存储的顺序好像是倒着的。 比如下面这张图,十进制数2077转换为十六进制是0x81d,四个字节分别是…

Activiti7_使用

Activiti7_使用 一、Activiti7二、绘制工作流三、通过代码部署流程,再对流程进行实例化,完整运行一遍流程即可四、在springbooot中使用 一、Activiti7 为了实现后端的咨询流转功能,学习Activiti7,记录下使用的过程及遇到的问题 二…

【赠书第24期】Java项目开发实战(微视频版)

文章目录 前言 1 项目选择与需求分析 1.1 项目选择 1.2 需求分析 2 系统设计 2.1 系统架构设计 2.2 数据库设计 2.3 接口设计 3 编码实现 3.1 环境搭建 3.2 编码规范 3.3 编码实现 4 测试与部署 4.1 单元测试 4.2 系统测试 4.3 部署与上线 5 总结与展望 6 推…

行为神经科学研究利器 | FiPhA:光纤光度分析开源平台

摘要 意义:光纤光度法(FP)是现代行为神经科学中广泛使用的技术,利用基因编码荧光传感器监测清醒行为动物的神经活动和神经递质。然而,分析光度数据既费力又耗时。 目的:本研究提出了一种通用的FP分析应用——光纤光度分析(FiPhA…

n7. 图

1.定义 图的每个结构之间有着某种关系。 六度空间理论等; 1.1引子: 最短路径问题 1.2什么是图 表示一种多对多的关系 线性关系表示的是一对一的关系,树表示的是一对多的关系。其实线性表和树其实都可以认为是图的一种特殊的情况。包含&am…

一种改进的形态学滤波算法-以心电信号的基线校正和噪声抑制为例(MATLAB环境)

信号在釆集和传输过程中难免受到噪声源的干扰,反映非线性动力学行为的特征信息有可能被噪声所掩盖。尤其是在混沌振动信号噪声抑制方面,因为混沌信号的高度非线性及宽频特性,噪声和混沌信号往往具有重叠的带宽。传统的时域及频域降噪方法效果…

【设计模式】JAVA Design Patterns——Data Access Object(数据访问对象模式)

🔍目的 对象为某种类型的数据库或其他持久性机制提供了抽象接口。 🔍解释 真实世界例子 有一组客户数据需要持久化到数据库中。 我们需要整个额外的增删改查操作以便操作客户数据。 通俗描述 DAO是我们通过基本持久性机制提供的接口。 维基百科 在计算机…

第七届数字峰会即将举行!正宇软件助力数字赋能社会发展!

据人民日报消息,由国家发展改革委、国家数据局、国家网信办、科技部、国务院国资委、福建省人民政府共同主办,福州市人民政府和相关单位承办的“第七届数字中国建设峰会”,将于5月24日至25日在福建省福州市举行,主题是“释放数据要…

事务报错没有显示回滚导致DDL阻塞引发的问题

在业务开发过程中,显示的开启事务并且在事务处理过程中对不同的情况进行显示的COMMIT或ROLLBACK,这是一个完整数据库事务处理的闭环过程。 这种在应用开发逻辑层面去handle的事务执行的结果,既确保了事务操作的数据完整性,又遵循了…

C++:单例模型、强制类型转换

目录 特殊类的设计不能被拷贝的类实现一个类,只能在堆上实例化的对象实现一个类,只能在栈上实例化的对象不能被继承的类 单例模式饿汉模式懒汉模式饿汉模式与懒汉模式的对比饿汉优缺点懒汉优缺点懒汉模式简化版本(C11) 单例释放问…

速看!打造专属数字化能力模型的七大关键!

在数字化浪潮中,企业如何打造适应自身发展的数字化能力模型?这是许多企业面临的重要课题。今天,通过众多企业使用蚓链数字化生态解决方案实践总结,为大家分享至关重要的七大经验,助你开启数字化转型之旅! 1…

栈和队列OJ题详解

一.有效的括号: 20. 有效的括号 - 力扣(LeetCode) 首先拿到这个题目,我的第一个思路是利用双指针来走,看看是不是匹配的 但是这种情况就把双指针的这个思路直接pass了,明明是匹配的括号,用双指…

protobuf学习

学习了下protobuf这个工具,可以用来序列化数据结构,而且效率很高,数据可以压缩的更小。 记录下,我这里主要在C#里使用,从NuGet程序包安装以下两个 安装好后可以在该程序目录找到 packages\Google.Protobuf.Tools.3.26.…

【计算机毕业设计】安卓054基于Android校园助手

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

离线强化学习基础知识之offline MBRL和MFRL

1 离线强化学习介绍 离线强化学习(也称为批量强化学习或完全脱策略强化学习)仅依赖于先前收集的数据集,无需进一步交互。它提供了一种利用先前收集的数据集的方法以自动学习决策策略。 离线强化学习可以被定义为 data-driven 形式的强化学习…

一篇文章讲透排序算法之堆排序

1.前言 在学习这篇文章之前,请大家先学习堆这一数据结构中堆的概念,向下调整算法,向下调整建堆。 有关堆的实现方式请参考:堆的实现 堆排序就是利用堆里面学习过的知识点进行排序,如何进行排序呢? 2.堆…