什么是线性回归
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析
![](https://img.haomeiwen.com/i944794/818b853ca21aee64.png)
1. 单变量预测结果
单变量预测的目标是通过一个自变量X预测一个因变量Y,它假设两个数据是线性相关的,我们的目标是找到一个线性方程,它基于X预测Y',尽可能的是Y'与实际的Y接近。
2. 怎么找到最佳拟合线
在我们的线性模型中,我们尝试最小化预测值Yp和实际值Yi之间的误差error
![](https://img.haomeiwen.com/i944794/043a90e9f972f3ce.png)
本次的任务目标是基于一个学生学习的小时数来预测他的学习成绩,如下图
![](https://img.haomeiwen.com/i944794/a94198dc6d63d763.png)
所要预测的模型:
![](https://img.haomeiwen.com/i944794/7401c2cebfa15a56.png)
3. 行动起来
预处理数据
- 导入必须包
- 导入数据
- 检查数据缺失
- 分割数据集
- 特征缩放
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dataset = pd.read_csv('studentscores.csv')
X = dataset.values[:, :1]
Y = dataset.values[:, 1]
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(
X, Y, test_size=1/4, random_state=0)
训练模型
我们希望使用训练集训练模型,这里我们采用了sickit-learn提供的LinearRegression
,然后我们实例化一个线性模型,随后我们使用fit
方法加载训练集来训练该模型
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
预测结果
现在我们使用测试集进行预测了,我们把测试结果保存为变量Y_pred
Y_pred = regressor.predict(X_test)
可视化
最后一步是可视化我们的结果,我们使用matplotlib
来画出预测结果和实际项的散点图以便于观察我们的模型预测的结果与实际结果是多么的接近
plt.scatter(X_train, Y_train, color='orange')
plt.scatter(X_train, regressor.predict(X_train), color='blue')
plt.show()
💡 同样可以使用其他库进行可是化,例如Seaborn
import seaborn as sns
sns.set_style("darkgrid")
sns.scatterplot(X_train[:,0], Y_train)
sns.scatterplot(X_train[:,0], regressor.predict(X_train))
plt.show()
结果如下图
![](https://img.haomeiwen.com/i944794/2e5199bdf5d73034.png)
一旦导入了seaborn,matplotlib的默认作图风格就会被覆盖成seaborn的格式,即使不使用seaborn画图
网友评论