目录
前言
线性回归是一种基本的回归分析方法,用于建模两个或多个变量之间的关系。其主要目标是通过一条直线(在简单线性回归中)或一个超平面(在多元线性回归中)来预测一个目标变量的值。
一、讲在前面
1.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算法差不多,这里多了一步求相关系数