线性回归方法--衡量线性回归算法的指标


一.指标的一些简单的介绍

1.介绍

分类算法中使用分类准确度衡量分类的准确度,那么在回归算法中,我们怎样来衡量回归的准确度呢?

由线性回归的方法我们可以得到这样的衡量标准

 

 2.改进方法一:使用均方根误差

#当比较两个线性回归算法的好坏的标准的时候,误差和样本的数量存在有关系的时候,我们可以先采用这个方法进行相应的改进

 

 3.改进方法二:使用RMSE(均方根误差)

#存在问题2:结果为衡量指标值的平方,值较大时平方翻倍了影响较大,与量纲有关?
#改进:开方后量纲一致

 

3.改进方法三:采用MAE的方法

#平均绝对误差

二.使用代码实现上述问题

1.数据加载以及预处理过程

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

#采用sklearn中的Boston房价的数据集来进行测试
boston = datasets.load_boston()

boston.feature_names  #查看有哪些特征参数
#array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD','TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')


x = boston.data[:,5]  #只取房间的的数量作为特征参数
y = boston.target

plt.scatter(x,y)
plt.show()

由上图可知,有些数据在y轴上的数据等于50,这些数据可能是设置的区间决定的,因此,我们需要剔除这些数据

x = x[y < 50.0]
y = y[y < 50.0]


plt.scatter(x,y)
plt.show()

2.使用简单的线性回归来进行运算

#在jupyter notebook中进行相关的计算
from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)


%run D:\project\sk-learn\Linear_regression\simple_linear_regression.py #加载自己写好的程序

reg2=SimpleLinearRegression2()  #实例化过程

reg2.fit(x_train,y_train)  #训练数据的过程(拟合过程)

reg2.a_ #得到参数a的值  :7.8608543562689555

reg2.b_#得到参数b的值:-27.459342806705543

#数据可视化的过程
plt.scatter(x_train,y_train)
plt.plot(x_train,reg2.predict(x_train),color='red')
plt.show()

 

 

 这样我们就得到了相应的拟合函数图像

y_predict = reg2.predict(x_test) #我们把预测值用一个变量来进行赋值

3.计算相应的指标参数

#MSE(均方误差)
mse_test = np.sum((y_predict - y_test)**2) / len(y_test)
#24.156602134387438


RMSE(均方根误差)
from math import sqrt
rmse_test = sqrt(mse_test)
#4.914936635846635

#MAE
mae_test= np.sum(np.absolute(y_predict - y_test))/len(y_test)
#3.5430974409463873

4.使用sklearn的方法来计算指标参数

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error

#mse
mean_squared_error(y_test,y_predict)
#24.156602134387438

#mae
mean_absolute_error(y_test,y_predict)
#3.5430974409463873

5.线性回归最重要的指标参数 R Squared

1.介绍

 

 

2.代码实现

#自己简单是实现
1 - mean_squared_error(y_test,y_predict)/np.var(y_test)
#0.6129316803937322



#sklearn中内置方法
from sklearn.metrics import r2_score
r2_score(y_test,y_predict)

#0.6129316803937324

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM