一.指标的一些简单的介绍
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