回归

来源:互联网 发布:win7镜像 知乎 编辑:程序博客网 时间:2024/04/29 06:33

回归的概念

回归就是根据输入的数据写出一个目标值的公式,这个公式可以较好对输入的数据进行拟合,这个公式叫做回归方程,而公式中的涉及到的系数成为回归系数,求解这些系数的过程称为回归。简单来讲就是通过曲线对数据进行拟合。

Example

y = a*x1 + b*x2 + c*x3 + d
始终公式就是一个回归方程,其中a,b,c,d为回归系数,根据输入的数据x1,x2,x3 求解上述回归系数。
求解过程中主要是要根据上述回归方程的输出值(预测值)和数据的真实值作比较,通过减少两者的误差来求解回归方程的系数。

原理及过程

求出一个回归方程本质上就是求解这个回归方程的系数,这些系数确定了,回归方程也就确定了,所以所有的工作将在求解和优化这些回归系数上,条件只允许我们通过输入的数据集来获得这些系数。为了确定回归方程及计算回归系数,常有的方法是最小化回归方程的输出值(预测值)和输入数据对应的真实值之间的误差,常用于计算预测值和真实值之间的误差的方式是平方误差:
这里写图片描述
用矩阵表示可以写成右边的形式:这里写图片描述,对w求导数
得到这里写图片描述,令其等于零,求得系数w,这里写图片描述
当求出w的之后,就可以用其对新的数据进行预测分析

Code

def simpleRegression(X,Y):    xMat=mat(X)    yMat = mat(Y).T    xTx = xMat.T*xMat    if(np.linalg.det(xTx) == 0.0):        print "输入数据构成的矩阵XMat不可逆"        return    w = xTx.I * (xMat.T*yMat)    return w

基于scikit-learn实现简单的线性回归

import matplotlib.pyplot as pltfrom sklearn import linear_model,datasetsimport numpy as nptrainData=diabetes_x[:-20]testData= diabetes_x[-20:]trainLabels= diabetes.target[:-20]testLabels= diabetes.target[-20:]#通过模块linear_model中的LinearRegressiong#构造函数初始化一个新的模型lrModel = linear_model.LinearRegression()#调用fit()函数,在输入数据上训练模型lrModel.fit(trainData,trainLabels)#获取模型训练后的得到的回归系数weightsweights = lrModel.coef_print "coefficients--weights: " , lrModel.coef_#利用上述回归系数进行预测predict= lrModel.predict(testData)#输出预测值与真实值得平方差print np.mean((predict-testLabels)**2)print lrModel.score(testData,testLabels)
0 0
原创粉丝点击