https://github.com/LiuChuang0059/100days-ML-code/blob/master/Day2_SImple_Linear_regression/README.md
简单线性回归
使用单一特征预测响应值。基于自变量X来预测因变量Y的方法,假设两者线性相关,寻找一种根据特征或自变量X的线性函数来预测Y。
目标
- 找最佳拟合线,最小化预测误差(最小化观测值 Y i Y_i Yi和模型预测值 Y p Y_p Yp之间的长度)
- m i n { s u m ( y i − y p ) 2 } min \{ sum(y_i - y_p)^2\} min{sum(yi−yp)2}
- y = b 0 + b 1 x 1 y = b_0+b_1x_1 y=b0+b1x1( b 0 b_0 b0截距, b 1 b_1 b1斜率)
步骤
- 数据预处理:同day1 六步骤(导入库–导入数据集–检查缺失数据–解析分类数据–拆分数据集–特征缩放)
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 #new
# sklearn.cross_validation 模块已经在最新版本的 Scikit-learn 中被移除了。
#from sklearn.cross_validation import train_test_split #old
X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0)
- 通过训练集训练简单线性回归模型:使用sklearn.linear_model库的LinearRegression类,得到模型regressor
### Step 2: Fitting Simple Linear Regression Model to the training set
# 把数据集拟合到简单线性回归模型,使用fit函数
from sklearn.linear_model import LinearRegression
regressor = LinearRegression() ## 创建一个regressor 对象
regressor = regressor.fit(X_train, Y_train) ### 对象拟合到数据集里面
# 使用fit()方法将 regressor 对象拟合到训练集的特征矩阵 X_train 和目标变量 Y_train
# 拟合过程根据线性回归计算b0和b1
- 预测结果:预测测试集,结果存到Y_pred,用2中训练的回归模型regressor的LinearRegression类的预测方法对结果进行预测。
### Step 3: Predecting the Result
#在训练好的regressor使用预测模型
#结果输出到向量Y_pred
Y_pred = regressor.predict(X_test)
- 可视化:用matplotlib.pyplot对训练集和测试集的结果做散点图,查看预测结果。
### Step 4: Visualization
plt.scatter(X_train , Y_train, color = 'red')
# 训练集散点图,红色,横轴X_train,纵轴Y_train
plt.plot(X_train , regressor.predict(X_train), color ='blue') ## 训练结果
# 回归线,横轴X_train,纵轴regressor.predict(X_train)--训练集预测结果
plt.scatter(X_test , Y_test, color = 'green')
# 测试集散点图,蓝色,横轴X_test,纵轴Y_test
plt.plot(X_test , regressor.predict(X_test), color ='blue') ## 测试结果
# 回归线,测试集合预测结果