線性回歸實例——房屋價格預測1(單變量的情況)

  1. 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ù)組。

  1. 分析整理訓練數(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
  1. 調用線性回歸模型
# 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
  1. 檢驗一下線性回歸的擬合情況,將原有的數(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/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容