机器学习:一元线性回归模型

目录

前言

一、讲在前面

1.data.csv:

2.完整代码:

3.运行结果:

二、实现步骤

1.导入库

2.导入数据

3.绘制散点图(这步可以省略)

4.求特征和标签的相关系数

5.建立并训练线性回归模型

6.检验模型

7.获取线性回归模型方程

8.利用模型进行预测

总结


前言

        线性回归是一种基本的回归分析方法,用于建模两个或多个变量之间的关系。其主要目标是通过一条直线(在简单线性回归中)或一个超平面(在多元线性回归中)来预测一个目标变量的值。

 

一、讲在前面

1.data.csv:

data.csv

 

2.完整代码:

# 一元线性回归
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression

data = pd.read_csv('data.csv')

# 绘制散点图
plt.scatter(data['广告投入'], data['销售额'])
# plt.show()

corr = data.corr()  # 求x和y的相关系数
# 估计模型参数,建立回归模型
lr = LinearRegression()   # 建立模型
x = data[['广告投入']]     # 特征数据
y = data[['销售额']]      # 结果数据
lr.fit(x, y)  # 训练模型  需要传入二维数据

# 对回归模型进行检验
result = lr.predict(x)
score = lr.score(x, y)   # 判断拟合优度 R方 [0,1] 越高越拟合
# print(result)
print(score)

b = round(lr.intercept_[0], 2)  # 查看截距 round()四舍五入至小数点后两位
k = round(lr.coef_[0][0], 2)  # 查看斜率
print(f"线性回归模型为: y = {k}x + {b}")

predict = lr.predict([[21], [23], [99]])   # 使用新数据进行预测
print(predict)

 

3.运行结果:

 

 

二、实现步骤

1.导入库

# 一元线性回归
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression

 

2.导入数据

data = pd.read_csv('data.csv')

 

3.绘制散点图(这步可以省略)

# 绘制散点图
plt.scatter(data['广告投入'], data['销售额'])
plt.show()

 

4.求特征和标签的相关系数

相关系数在线性回归模型里是一个重要指标!

相关程度越弱,说明特征数据越差!

  • 计算方法:
  • 各段数值解释

代码:

# 求x和y的相关系数
corr = data.corr()

输出:

 

5.建立并训练线性回归模型

  • 提取特征数据和标签也在这个步骤一并完成了
# 估计模型参数,建立回归模型
lr = LinearRegression()  # 建立模型
x = data[['广告投入']]  # 特征数据
y = data[['销售额']]  # 结果数据
lr.fit(x, y)  # 训练模型  需要传入二维数据

 

6.检验模型

拟合优度是判断模型好坏的一个指标

代码:

# 对回归模型进行检验
result = lr.predict(x)
score = lr.score(x, y)  # 判断拟合优度 R方 [0,1] 越高越拟合
# print(result)
print(score)

输出:

0.8225092881166945

 

7.获取线性回归模型方程

代码:

# 获取线性回归模型方程
b = round(lr.intercept_[0], 2)  # 查看截距 round()四舍五入至小数点后两位
k = round(lr.coef_[0][0], 2)  # 查看斜率
print(f"线性回归模型为: y = {k}x + {b}")

输出:

线性回归模型为: y = 3.74x + -36.36

 

8.利用模型进行预测

  • 给定x值,预测y值

代码:

predict = lr.predict([[21], [23], [99]])  # 使用新数据进行预测
print(predict)

输出:

[[ 42.13436123]
 [ 49.61013216]
 [333.68942731]]

 

总结

        其实具体的步骤与之前的KNN算法差不多,这里多了一步求相关系数

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃什么芹菜卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值