- sklearn模塊的線性回歸模型
from sklearn import datasets, linear_model
# 引入模型所在模塊。
………………
regr = linear_model.LinearRegression()
# 實例化模型。
regr.fit(X_parameters,Y_parameters)
# 為模型賦予數(shù)據(jù)X_parameters(訓練數(shù)據(jù)),Y_parameters(目標數(shù)據(jù))。
predict_outcome = regr.predict(predict_value)
# 輸入生成預測數(shù)據(jù)需要的參數(shù)predict_value.
predictions = {}
predictions['intercept'] = regr.intercept_
# 回歸模型的theta0參數(shù)
predictions['coefficient'] = regr.coef_
# 回歸模型的theta1參數(shù)
predictions['predicted_value']=predict_outcome
我們可以發(fā)現(xiàn),回歸模型需要的數(shù)據(jù)包括:

Paste_Image.png
所以,我們的任務是要找出X(訓練數(shù)據(jù))和Y(目標值),X的輸入形式可以是數(shù)組或矩陣,Y只能是數(shù)組。
- 分析整理訓練數(shù)據(jù)X和目標值Y。已知房屋平米數(shù)和價格的關系數(shù)據(jù)如下:

Paste_Image.png
用函數(shù)將input_data.csv中的數(shù)據(jù)讀出來:
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']):
# 通過列名調用數(shù)據(jù)。
X_parameter.append([float(single_square_feet)])
Y_parameter.append([float(single_price_value)])
pdb.set_trace()
return X_parameter,Y_parameter
下圖顯示,我們得到了想要的訓練數(shù)據(jù)X和目標值Y。

Paste_Image.png
- 調用線性回歸模型
# 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_) 以及預測值都存儲在字典中。

Paste_Image.png
- 檢驗一下線性回歸的擬合情況,將原有的數(shù)據(jù)點用藍色標記在圖中,求出對應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)

Paste_Image.png
從直觀上看,擬合的直線不錯!
5.這里討論的情況是在一維的情況下進行的,也即只用一個自變量x(房屋的平米數(shù)),來估計房屋的價格。這里構造x數(shù)組還是比較簡單,那如果是多個變量(平米數(shù)、房間數(shù)等)又該怎么?我們可以同理處理,看下一集。
6.參考文獻:
http://dataconomy.com/2015/02/linear-regression-implementation-in-python/