简单回归,从名字我们就可以看出来这是一个简单的回归方法,在这个实例中我们通过对房屋的价格预测来学习这个方法。简单回归,通过给出的一个输出,为预测的输出拟合出一条直线。假设:我们现在有了两个数据点,房屋的面积以及房屋的价格,我们可以将房屋的面积当作X(输入数据),把房屋的价格当作Y(输出数据)。
现在我们在jupyter Notebook 中利用简单的回归来预测数据结果。分析文件数据,现在我们有数据文件simple_regression_data.csv,文件中主要有两个数据,不同的厂商在不同时间采购的金属的体积与价格。在这个实例中我们,可以把采购的金属的体积作为X(输入数据),采购的金属的价格Y作为Y(输出数据),将文件的数据进行分割,80%作为训练集,20%作为测试集,利用训练集进行特征提取训练回归模型,然后使用测试集通过刚刚训练的模型进行预测。
导入库
import pandas as pd
import matplotlib.pyplot as plt
from pylab import rcParams
rcParams['figure.figsize'] = 10,8
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, Lasso, Ridge
from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error
利用pandas库读取文件数据
regression_data = pd.read_csv('../data/simple_regression_data.csv')
简单看一下数据里面的信息。
regression_data.head()
首先利用文件数据绘制图
plt.scatter(regression_data['Volume'], regression_data['Price'])
plt.xlabel('Volume')
plt.ylabel('Price')
plt.title('Price - Volume Data')
将数据分割成训练集和测试集,训练集包括80%的数据,测试集包括20%的数据。
X_train,X_test,Y_train,Y_test = train_test_split(regression_data['Volume'], regression_data['Price'], test_size=0.20)
建立模型并且预测测试数据
#建立模型并预测测试数据
#创建线性回归对象
simple_linear_regression = LinearRegression()
#利用训练集训练模型
X_train = X_train.values
Y_train = Y_train.values
X_test = X_test.values
simple_linear_regression.fit(pd.DataFrame(X_train), pd.DataFrame(Y_train))
#使用测试集进行预测
Y_pred = simple_linear_regression.predict(pd.DataFrame(X_test))
输出图像
#input image
plt.scatter(X_test, Y_test, colors='blue')
plt.plot(X_test, Y_pred, color='red', linewidth=2)
输出均方误差
#输出均方误差
print("Mean squared error: %.lf" % mean_squared_error(Y_test, Y_pred))
输出系数
print('R2 Score: %.2f' % r2_score(Y_test, Y_pred))
参考文献:python机器学习 [印]Abhishek Vijayvargia 著,宋格格 译;