机器学习100天(Day 2)
机器学习100天(Day2)
今天的学习内容是简单线性回归,简单了说就是一次线性回归。
直接上代码吧!
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()
第四部就是把预测值和实际值显示在坐标系里。
显示结果如图所示:
第二天的学习比较简单,只是一个线性回归知识的预热。
看到这里的线性回归,让我想起了曲线拟合,感觉直线拟合与简单的线性回归性质是一样的,查阅资料也证实了我的想法,一般都是用的最小二乘法对其进行求解。
好了,今天的学习就到这,明天继续加油!!!