简单线性回归


  好长一段时间挺想重新系统的学习回顾下机器学习的知识,看了些深度学习的论文和框架后,觉得机器学习的知识确实太重要了。接下来的半年时间,想系统的总结实践下,也算是2019年的第一个flag吧。

使用单一特征预测响应值

  这是一种基于自变量值(X)来预测因变量值(Y)的方法。假设X和Y两个变量是线性相关的。线性回归就是尝试寻找一种根据特征或自变量(X)的线性函数来精确预测响应值(Y)。

怎样找到最佳的拟合线

  在这个回归任务中,我们将通过找到“最佳拟合线”来最小化预测误差——回归线应该尽量拟合X-Y的分布,即误差是最小的。例如$y_p$是预测值,$y_i$是实际值,这个过程就是使$y_p$和$y_i$之间的关系满足$min\{SUM(y_i-y_p)^2\}$

  这里以学生分数数据集做这个实验,实验数据如下图所示:

enter description here

实验

数据预处理

  1. 导入相关库
  2. 导入数据集
  3. 检查缺失数据
  4. 划分数据集
  5. 特征缩放(这里使用简单线性模型的相关库进行)

通过训练集来训练简单线性回回归模型

  为了使用模型来训练数据集,这里使用python中的sklearn.linear_model库的LinearRegression类。然后实例化一个LinearRegression类的regressor对象。最后使用LinearRegression类的fit()方法。将regressor对象对数据集进行训练。

预测结果

  现在将预测来自测试集的观察结果。将实际的输出保存在向量Y_pred中。使用前一步中训练的回归模型regressorLinearRegression类的预测方法来对结果进行预测。

可视化

  为了直观的查看线性回归的效果,这里将对结果进行可视化。使用matplotlib.pyplot库对我们的训练结果和测试集结果做散点图,以查看模型的预测效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#python的数据处理库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


# 第一步:数据预处理
dataset = pd.read_csv('../datasets/studentscores.csv')
X = dataset.iloc[ : , : 1 ].values
Y = dataset.iloc[ : , 1 ].values


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)

# 第二步:训练集使用简单线性回归模型来训练
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor = regressor.fit(X_train, Y_train)

# 第三步:预测结果
Y_pred = regressor.predict(X_test)

# 第四步:可视化
# 训练集结果可视化
plt.scatter(X_train , Y_train, color = 'red')
plt.plot(X_train , regressor.predict(X_train), color ='blue')
plt.show()

# 测试集结果可视化
plt.scatter(X_test , Y_test, color = 'red')
plt.plot(X_test , regressor.predict(X_test), color ='blue')
plt.show()

实验结果

  训练集上的拟合结果:
enter description here

  测试集上拟合结果
enter description here

欢迎关注我的公众号

enter description here

-------------本文结束感谢您的阅读-------------