1. 程式人生 > >機器學習篇(嶺迴歸)

機器學習篇(嶺迴歸)

資料讀入

資料讀入&形成特徵矩陣

x,y = [],[]
with open('abnormal.txt','r') as f:
    for line in f.readlines():
        data =  [float(substr) for substr in line.split(',')]   #遍歷每行的資料新增到data
        x.append(data[:-1])    #特徵矩陣
        y.append(data[-1])      #標籤
x = np.array(x)
y = np.array(y)

建立模型對比模型為線性模型

model_ln = lm.LinearRegression()
model_ln.fit(x,y)

model_rd = lm.Ridge(150,fit_intercept=True,max_iter=10000)
model_rd.fit(x,y)

擬合


#預測
pred_y_ln = model_ln.predict(x)
pred_y_rd= model_rd.predict(x)

模型評價

#模型評價
print(sm.mean_absolute_error(y,pred_y_ln)) #平均絕對值誤差
print(sm.mean_squared_error(y,pred_y_ln))  #平均平方誤差
print(sm.median_absolute_error(y,pred_y_ln)) #平均中位數誤差 print(sm.r2_score(y,pred_y_ln)) #二數得分,越大越好 print('--------------------------------------') print(sm.mean_absolute_error(y,pred_y_rd)) #平均絕對值誤差 print(sm.mean_squared_error(y,pred_y_rd)) #平均平方誤差 print(sm.median_absolute_error(y,pred_y_rd)) #平均中位數誤差
print(sm.r2_score(y,pred_y_rd))

結果視覺化

#視覺化
mp.figure("Linear Regression",facecolor='lightgray')
mp.title("Linear Regression",fontsize = 10)
mp.xlabel("x",fontsize = 10)
mp.ylabel('y',fontsize = 10)
mp.tick_params(labelsize =10)
mp.grid(linestyle = ':')
mp.scatter(x,y,c = 'dodgerblue',alpha=0.75,s = 60,label = 'Sample')
sorted_indics = x.T[0].argsort()
mp.plot(x[sorted_indics],pred_y_ln[sorted_indics],c = 'orangered',label = 'liner')
mp.plot(x[sorted_indics],pred_y_rd[sorted_indics],c = 'limegreen',label = 'RDG')
mp.legend()
mp.show()