- sklearn模块的线性回归模型
from sklearn import datasets, linear_model
# 引入模型所在模块。
………………
regr = linear_model.LinearRegression()
# 实例化模型。
regr.fit(X_parameters,Y_parameters)
# 为模型赋予数据X_parameters(训练数据),Y_parameters(目标数据)。
predict_outcome = regr.predict(predict_value)
# 输入生成预测数据需要的参数predict_value.
predictions = {}
predictions['intercept'] = regr.intercept_
# 回归模型的theta0参数
predictions['coefficient'] = regr.coef_
# 回归模型的theta1参数
predictions['predicted_value']=predict_outcome
我们可以发现,回归模型需要的数据包括:
所以,我们的任务是要找出X
(训练数据)和Y
(目标值),X
的输入形式可以是数组或矩阵,Y
只能是数组。
- 分析整理训练数据X和目标值Y。已知房屋平米数和价格的关系数据如下:
用函数将input_data.csv中的数据读出来:
def get_data(file_name):
data = pd.read_csv(file_name)
# 读取csv文件的方法
print data
X_parameter = [ ]
Y_parameter = [ ]
for single_square_feet, single_price_value in zip(data['square_feet'],data['price']):
# 通过列名调用数据。
X_parameter.append([float(single_square_feet)])
Y_parameter.append([float(single_price_value)])
pdb.set_trace()
return X_parameter,Y_parameter
下图显示,我们得到了想要的训练数据X和目标值Y。
- 调用线性回归模型
# Function for Fitting our data to linear model
def linear_model_main(X_parameters,Y_parameters,predict_value):
# Create linear regression object
pdb.set_trace()
regr = linear_model.LinearRegression()
regr.fit(X_parameters,Y_parameters)
predict_outcome = regr.predict(predict_value)
predictions = {}
predictions['intercept'] = regr.intercept_
predictions['coefficient'] = regr.coef_
predictions['predicted_value']=predict_outcome
return predictions
我们构造了字典: 'predictions' ,将模型输出的 θ0(regr.intercept_) ,θ1(regr.coef_) 以及预测值都存储在字典中。
- 检验一下线性回归的拟合情况,将原有的数据点用蓝色标记在图中,求出对应X_parameters的每个估计值,将其用红线连接起来。
# Function to show the results of linear fit model
def show_linear_line(X_parameters,Y_parameters):
regr = linear_model.LinearRegression()
regr.fit(X_parameters,Y_parameters)
plt.scatter(X_parameters,Y_parameters,color='blue')
plt.plot(X_parameters,regr.predict(X_parameters),color='red',linewidth=4)
plt.xticks(())
plt.yticks(())
plt.show()cges/4225992-b20e17ea38bacb91.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
从直观上看,拟合的直线不错!
5.这里讨论的情况是在一维的情况下进行的,也即只用一个自变量x(房屋的平米数),来估计房屋的价格。这里构造x数组还是比较简单,那如果是多个变量(平米数、房间数等)又该怎么?我们可以同理处理,看下一集。
6.参考文献:
http://dataconomy.com/2015/02/linear-regression-implementation-in-python/