欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()

运行,之后打开图片所保存的路径,可以看到所生成的两个图片:
100 Days Of ML Code 学习笔记-Day 2
100 Days Of ML Code 学习笔记-Day 2
100 Days Of ML Code 学习笔记-Day 2