機器學習篇(嶺迴歸)
阿新 • • 發佈:2019-02-12
資料讀入
資料讀入&形成特徵矩陣
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()