100 Days Of ML Code 学习笔记-Day 2
程序员文章站
2024-02-27 19:22:39
...
简单线性回归
先看下数据:studentscores.csv, 相应的数据可以在:https://github.com/Avik-Jain/100-Days-Of-ML-Code/blob/master/datasets/studentscores.csv 中下载(右击“Raw”然后另存为即可),简单线性回归方程式:y=ax+b
1.数据预处理:仿照Day1去处理;
import numpy
import pandas
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
#sklearn.cross_validation这个模块被弃用,我现在用的是model_selection模块
dataset = pandas.read_csv('/Users/agnes/Downloads/100Days/studentscores.csv')
X = dataset.iloc[:,:1].values #别写成[:,0].values了,不然后面regressor.fit会出错,原因就是它接受的是2D数组,具体解释看下面的备注吧
Y = dataset.iloc[:,1].values #取第二列
#训练组和测试组比例4:1
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2,random_state=0)
备注:
像这样的叫1D数组:
[2.5 5.1 3.2 8.5 3.5]
2D数组长这样,相当于在每个数据的外面加了list:
[[2.5]
[5.1]
[3.2]
[8.5]
[3.5]]
2.将简单线性回归模型拟合到训练集:我们用LinearRegression 模块;
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train,Y_train)
3.预测结果:我们用LinearRegression 模块中的predict方法;
Y_train_pred = regressor.predict(X_train)
Y_test_pred = regressor.predict(X_test)
4.将结果形象化:利用matplotlib.pyplot 模块画出训练集和测试集的结果。
plt.scatter(X_train,Y_train,color ='red')
plt.plot(X_train, Y_train_pred,color = 'blue')
plt.title('Training Set') #图片名称
plt.xlabel('Hours') #x轴的名称
plt.ylabel('Scores') #y轴的名称
#将生成的图片保存在我的路径里边,记得要将这步骤放在show函数的前边,否则生成的图片是空白的
plt.savefig('/Users/agnes/Downloads/100Days/day2_train.jpg')
plt.show()
plt.scatter(X_test,Y_test,color ='black')
plt.plot(X_test,Y_test_pred,color ='green')
plt.title('Testing Set')
plt.xlabel('Hours')
plt.ylabel('Scores')
plt.savefig('/Users/agnes/Downloads/100Days/day2_test.jpg')
plt.show()
运行,之后打开图片所保存的路径,可以看到所生成的两个图片: