分享

线性回归方法

 lyl_tj 2019-05-17

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


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

复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多