数据集下载地址:https://pan.baidu.com/s/1HaBVhEmSaBKBfZVRMww56Q
<https://pan.baidu.com/s/1HaBVhEmSaBKBfZVRMww56Q> 密码:qlge
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析
。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
本篇讨论的是关于一元线性回归,其基本形式为:Y=a * X + b。需要做到的是拟合训练集数据找出合适的参数a , b,确定方程式,用于预测未知的样本。
图像大致如下:
目标是找出拟合效果最好参数a , b,该如何确定呢?
最常见的方法是利用欧式距离。将数据视作一个个的点,进行计算,计算方法如下:
过程体现如下:
红点为实际值,绿点为预测的值。计算每个点跟预测点的欧式距离之和,方程不同,预测点不同,也就是欧式距离之和不同,取最小值,从而确定参数a ,b
#导入需要用到的库 import pandas as pd from sklearn.model_selection import
train_test_splitfrom sklearn.linear_model import LinearRegression import
matplotlib.pyplotas plt
载入数据并对数据预处理:
dataset = pd.read_csv('Salary_Data.csv') X = dataset.iloc[:,0].values Y =
dataset.iloc[:,-1].values#将数据分成训练集和测试集,训练集用于训练模型,测试集用于测试训练的模型的效果
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size =
0.3,random_state = 0)X_train = X_train.reshape(-1,1) Y_train =
Y_train.reshape(-1,1)
创建回归器,拟合训练集并作出训练集的预测
regresor = LinearRegression() regresor.fit(X_train,Y_train) #根据模型得出的对应训练集的预测Y值
predict = regresor.predict(X_train.reshape(-1,1))
可视化结果
plt.figure(figsize=(10,12)) #设置画布大小 figure = plt.subplot(211)
#将画布分成2行1列,当前位于第一块子画板 plt.scatter(X_train, Y_train,color = 'red') #描出训练集对应点
plt.plot(X_train,predict,color='black') #画出预测的模型图 plt.xlabel('YearsExperience')
plt.ylabel('Salary') plt.title('Train set') #将模型应用于测试集,检验拟合结果 plt.subplot(212)
plt.scatter(X_test, Y_test,color = 'red') plt.plot(X_train,predict,color='black'
) plt.xlabel('YearsExperience') plt.ylabel('Salary') plt.title('Test set')
输出:
#模型评估 from sklearn.metrics import r2_score print('r2_score : ' +
str(r2_score(Y_test,predict)))
输出:
r2_score : 0.9740993407213511 #R²分数,确定系数。最佳分数为1.0,可以为负数(因为模型可能会更糟)
热门工具 换一换