1. 程式人生 > >python 線性迴歸預測示例

python 線性迴歸預測示例

資料集為簡單的表格,包括:年份,GDP,全社會用電量三列資料。

#預測
def predict(data,LinearRegression):
    Y_pred = LinearRegression.predict(data)
    print(Y_pred)
    return Y_pred

#訓練模型並畫圖
def reg_huigui(data,label,test):
    regr = LinearRegression()  #線性迴歸
    #regr = Ridge(alpha=10)   #嶺迴歸
    #regr = Lasso(alpha=0.001)  #Lasso迴歸
    regr.fit(data.values,label.values)
    Y_pred_train = regr.predict(data.values)   #訓練集的預測值
    predict(test.values,regr)  #預測
    print('引數:',regr.coef_.astype(np.float32))    
    
    #對模型進行評估
    from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
    print("MSE:",mean_squared_error(label.values,Y_pred_train))  #誤差
    print("MAE:",mean_absolute_error(label.values,Y_pred_train))
    print("R2:",r2_score(label.values,Y_pred_train))
    
    #畫圖
    #通過pandas讀取為DataFrame,迴歸用的是矩陣資料而不是列表,資料為n個樣品點和m個特徵值,這裡特徵值只有一個因此換成nx1的矩陣
    dataSet_x = data['GDP'].as_matrix(columns=None)
    dataSet_x = np.array([dataSet_x]).T
    #dataSet_y = label.as_matrix(columns=None)
    dataSet_y = np.array([label]).T
    
    print(dataSet_x,dataSet_y,Y_pred_train)
    plt.scatter(dataSet_x,dataSet_y,color='black')
    #用predic預測,這裡預測輸入x對應的值,進行畫線
    plt.plot(dataSet_x,Y_pred_train,color='r',linewidth=1)
    plt.show()
def getData():
    #資料資料為兩列資料x和y,有表頭
    file = open('.../資料.xls','rb')
    df = pd.read_excel(file,sheet_name='Sheet1')
    test = pd.read_excel(file,sheet_name='Sheet3')
    file.close()
    return df,test
def main():
    df,test = getData()
    #獲取資料和標註
    reg_huigui(df[['年份','GDP']],df['全社會用電量'],test[['年份','GDP']])