机器学习100天(Day 2)

机器学习100天(Day2)

今天的学习内容是简单线性回归,简单了说就是一次线性回归。
机器学习100天(Day 2)

直接上代码吧!

Step 1:

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)

首先是对数据的预处理,这个在第一天的学习里已经学习过了。

不过也回顾下昨天的学习内容。首先导入库,然后导入数据,再将数据拆分为训练集和测试集,比例为1:3;

值得讲一下的是,在第一天学习中拆分数据库导入的是sklearn.cross_validation中的函数,而不是sklearn.model_selection的,原因是sklearn.cross_validation在2.0版本中会被弃用,在运行中会出现警告。

Step 2:

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor = regressor.fit(X_train, Y_train)

第二步直接对数据进行训练线性回归

这里使用的是fit进行训练的。

fit的使用方法为fit(X,y,sample_weight=None),sample_weight是每条测试数据的权重,以array格式传入,我们这里的sample_weight为空。

Step 3:

Y_pred = regressor.predict(X_test)

第三步是使用训练好的线性回归模型对测试集进行预测。

Step 4:

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

第四部就是把预测值和实际值显示在坐标系里。

显示结果如图所示:

机器学习100天(Day 2)

第二天的学习比较简单,只是一个线性回归知识的预热。

看到这里的线性回归,让我想起了曲线拟合,感觉直线拟合与简单的线性回归性质是一样的,查阅资料也证实了我的想法,一般都是用的最小二乘法对其进行求解。

好了,今天的学习就到这,明天继续加油!!!