python 線性迴歸預測示例
阿新 • • 發佈:2018-12-12
資料集為簡單的表格,包括:年份,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']])