机器学习篇(岭回归)

数据读入

数据读入&形成特征矩阵

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()

猜你喜欢

转载自blog.csdn.net/patrisk/article/details/81453800