回归

回归的概念

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

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 plt
from sklearn import linear_model,datasets
import numpy as np

trainData=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)
#获取模型训练后的得到的回归系数weights
weights = lrModel.coef_
print "coefficients--weights: " , lrModel.coef_
#利用上述回归系数进行预测
predict= lrModel.predict(testData)
#输出预测值与真实值得平方差
print np.mean((predict-testLabels)**2)

print lrModel.score(testData,testLabels)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值