layout: article
title: 机器学习 100 天 -- 实现简单线性回归 (第二天)
- mathjax: true
- ---
线性回归算法的作用是使用单一特征来预测响应值. 是一种根据自变量 X 预测因变量 Y 的方法. 假设两个变量是线性相关的, 那么我们要找到一个线性函数, 根据特征或自变量 X 来精确预测响应值 Y.
如何找到最佳拟合线
在这个回归模型中, 我们尝试通过寻找最佳拟合线来最小化预测的误差 -- 根据线性回归预测的结果误差最小. 我们尝试最小化观察值和预测值之间的长度, 长度越小, 误差就越小, 反之亦然.
我们将使用一个根据学生花费在学习上的小时数预测他们分数的百分比的例子学习如何使用线性回归模型. 请看下图:
线性回归模型为:
$ y = b_0 + b_1x_1$
将上图中的自变量和因变量代入到上面的模型中, 则变为:
$ Score = b_0 + b_1 * hours $
线性回归其实就是解一元一次方程, 求出截距和斜率.
下面介绍使用 Python 实现线性回归算法的步骤.
步骤 1: 数据预处理
导入相关库
导入数据集
检查缺失数据
划分数据集
使用简单线性回归模型进行特征缩放
步骤 2: 通过训练集来训练简单线性回归模型
为了使用模型来训练数据集, 我们将使用来自 sklern.liner_model 库的 LinearRegression 类, 然后创建一个 LinearRegression 类对象 regressor, 最后使用该对象的 fit() 方法对数据集进行训练.
步骤 3: 预测结果
现在我们将预测来自训练集的观察结果. 我们将把输出保存在向量 Y_pred 中. 我们使用前一步中训练的回归模型 regressor 的 LinearGression 类的预测方法来对结果进行预测.
步骤 4: 预测结果可视化
使用 matplotlib.pyplot 库对我们的训练结果和测试结果做散点图, 以查看我们的模型预测效果.
具体实现代码如下:
第一步: 数据预处理
- import pandas as pd
- import numpy as np
- import matplotlib.pyplot as plt
- dataset = pd.read_csv('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()
测试数据请加本人的微信公众号获取.
来源: https://www.cnblogs.com/airnew/p/9758241.html