所谓简单线性回归,其实就是自变量只有一个条件状况下的线性回归问题,是线性回归问题中最简单的一种了,这种问题在生活中也常常能简单,本文就用一个简单的例子来说解简单线性回归。python
如下有一组数据集,关于工做年限和薪水之间的联系(篇幅问题只给一部分):dom
YearsExperience,Salary 1.1,39343.00 1.3,46205.00 1.5,37731.00 2.0,43525.00 2.2,39891.00 2.9,56642.00 3.0,60150.00 3.2,54445.00 3.2,64445.00 3.7,57189.00 3.9,63218.00
正常状况下薪水都是会随着工做年限的增加而增加,所以这二者之间是有着很明显的线性关系的,且这里只有工做年限一个自变量,所以是个简单线性回归问题。咱们如今要作的,就是用数学公式来表示这二者之间的关系,并能预测不一样工做年限下可能的薪水值。测试
首先要对数据进行预处理,这里只须要导入数据集,切分红训练集和测试集两步便可。对于特征缩放这个点特别提一下,因为不少数据科学的包中其实已经包含了特征缩放的相关功能,所以某些状况下是不须要进行特征缩放的,但对于没有特征缩放的要注意下本身手动进行特征缩放,本文是不须要的。所以代码能够直接使用以前使用过的代码,以下所示(后面须要的包这里先导入了):spa
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt data_path = '../simple_regression/data/Salary_Data.csv' dataset = pd.read_csv(data_path) X = dataset.iloc[:, :-1].values y = dataset.iloc[:, 1].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=0)
拆分完测试集和训练集后就要进行线性回归处理了,这里一样适用的是sklearn包,首先构造回归器:code
# Fitting Simple Linear Regression to the Training Set regressor = LinearRegression() regressor.fit(X_train, y_train)
这里使用的是LinearRegression这个类,而后传入训练集让其训练的出一个线性回归器。而后再用得出的回归器来预测测试集的结果:rem
# Predicting the Test set results y_pred = regressor.predict(X_test)
得出预测结果后咱们来看看此次训练获得的结果是否足够准确,这里经过matplotlib包来将测试集和训练集的点以及得出的线性回归方程画到图像上来观察:数学
#Visualising the Training set results plt.scatter(X_train, y_train, c='red') plt.plot(X_train, regressor.predict(X_train), c='blue') plt.title('Salary VS Experience (training set)') plt.xlabel('Years of Experience') plt.ylabel('Salary') plt.show() #Visualising the test set results plt.scatter(X_test, y_test, c='red') plt.plot(X_train, regressor.predict(X_train), c='blue') plt.title('Salary VS Experience (test set)') plt.xlabel('Years of Experience') plt.ylabel('Salary') plt.show()
这里解释一下其中的一行代码:pandas
plt.plot(X_train, regressor.predict(X_train), c='blue')
it
虽然一个是画训练集一个是画测试集,但因为咱们实际上用的是经过训练集训练出的线性回归器,因此这里画出线性回归线的时候实际上不须要再将其中的参数换成X_test。而后此时获得的图像以下:io
很明显能看出这次的训练结果在测试集上的表现仍是比较使人满意的,基本和数据吻合,这样就得出了一个简单的线性回归的模型。后面的文章会继续讲解多变量的线性回归,此文只是最简单的回归,做为基础入门。