回归

更好的阅读,请访问littlefish.top
回归的目的是预测数值型目标值。类似于y=w_1⋅x_1+w_2⋅x_2y=w_1⋅x_1+w_2⋅x_2,其中w称为回归系数,只要可以确定w,就可以通过输入x得到预测值。

平方误差确定回归系数

假设输入为x,输出为y,则平方误差可以表示为:

∑_i=1m(y_i−x_iTw)2)∑_i=1m(y_i−x_iTw)2)

为了让平方误差最小,令导数为0求得最佳回归系数,则

w=(XTX)−1XTyw=(XTX)−1XTy

算法实现如下:

from numpy import *
import matplotlib.pyplot as plt

def loadDataSet(fileName):
    numFeat = len(open(fileName).readline().split('\t')) - 1
    dataMat = []; labelMat = []
    fr = open(fileName)
    for line in fr.readlines():
        lineArr =[]
        curLine = line.strip().split('\t')
        for i in range(numFeat):
            lineArr.append(float(curLine[i]))
        dataMat.append(lineArr)
        labelMat.append(float(curLine[-1]))
    return dataMat,labelMat

def standRegres(xArr,yArr):
    xMat = mat(xArr); yMat = mat(yArr).T
    xTx = xMat.T*xMat
    if linalg.det(xTx) == 0.0:
        print "This matrix is singular, cannot do inverse"
        return
    ws = xTx.I * (xMat.T*yMat)
    return ws

def regression1():
    xArr, yArr = loadDataSet("Ch08/ex0.txt")
    xMat = mat(xArr)
    yMat = mat(yArr)
    ws = standRegres(xArr, yArr)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    print xMat[:, 1].flatten()
    print yMat.T[:, 0].flatten()
    ax.scatter(xMat[:, 1].flatten(), yMat.T[:, 0].flatten().A[0])
    xCopy = xMat.copy()
    xCopy.sort(0)
    yHat = xCopy * ws
    ax.plot(xCopy[:, 1], yHat)
    plt.show()

if __name__ == "__main__":
    regression1()

结果如下:

局部加权线性回归

最简单的线性回归(locally weighted linear regression)具有最小均方误差的无偏估计,因此会出现欠拟合现象。通过局部加权线性回归就可以优化预测结果,局部加权的回归系数w如下:

w=(XTWX)−1XTWyw=(XTWX)−1XTWy

其中,W是类似于“核”来对调整不同权值的权重。最常用的核是高斯核,如下:

w(i,j)=exp(|x(i)−x|−2k2)w(i,j)=exp(|x(i)−x|−2k2)

其中,k会对权重产生影响,k越小,权重变化越快。

算法实现

通过核函数来调整权值的权重,可以让附近的点的赋予更高的权值。

def lwlr(testPoint,xArr,yArr,k=1.0):
    xMat = mat(xArr); yMat = mat(yArr).T
    m = shape(xMat)[0]
    weights = mat(eye((m)))
    for j in range(m):                      #next 2 lines create weights matrix
        diffMat = testPoint - xMat[j,:]     #
        weights[j,j] = exp(diffMat*diffMat.T/(-2.0*k**2))
    xTx = xMat.T * (weights * xMat)
    if linalg.det(xTx) == 0.0:
        print "This matrix is singular, cannot do inverse"
        return
    ws = xTx.I * (xMat.T * (weights * yMat))
    return testPoint * ws

def lwlrTest(testArr,xArr,yArr,k=1.0):  #loops over all the data points and applies lwlr to each one
    m = shape(testArr)[0]
    yHat = zeros(m)
    for i in range(m):
        yHat[i] = lwlr(testArr[i],xArr,yArr,k)
    return yHat

def regression2():
    xArr, yArr = loadDataSet("Ch08/ex0.txt")
    yhat = lwlrTest(xArr, xArr, yArr, 0.01)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    xMat = mat(xArr)
    srtInd = xMat[:, 1].argsort(0)
    xSort = xMat[srtInd][:, 0, :]
    ax.plot(xSort[:, 1], yhat[srtInd])
    ax.scatter(xMat[:, -1].flatten(), mat(yArr).T.flatten().A[0], s=2, c="red")
    plt.show()

结果如下:

因此,k值如果越小会考虑太多的噪声影响,选择适合的k值可以得到最优的结果。


本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

时间: 2024-11-03 20:59:25

回归的相关文章

求 python用遗传编程解决符号回归的代码?如:cos2x表示成一个固定的式子 求代码

问题描述 求 python用遗传编程解决符号回归的代码?如:cos2x表示成一个固定的式子 求代码 求 python用遗传编程解决符号回归的代码?如:cos2x表示成一个固定的式子 求源代码

回归本源的设计方式:如何用草图规划网站?

设计院校中有大量的基本课程.大企业与创业公司都在采取回归本源的设计方式,这一点也不稀奇. 无论你是个终身的涂鸦艺术家,还是一位严肃的商标设计师,通过纸张探索灵感都是一项重要的设计技能. 别怕!铅笔这类工具的力量不会消亡.在这个专注设备的时代,简单.久经考验的设计方式仍然大有可为. 实际上,我已经听到一种日渐强烈的声音,反对将工时浪费在高保真photoshop效果图上.手绘稿让你以一种灵活巧妙的方式,创作迭代式的渐进设计,不必为了高保真设计图和电子稿而超支时间. 不论你是大公司还是自由设计师,通过

回归本质:内容是什么?

[导读]昨天谈了SEO是什么?百度即将推出百度网页搜索质量白皮书,更严格要求内容质量度问题,在之前没推出规则的时候,内容是什么样子的,今天妮子会继续和大家分享下,内容是什么?回归初心. 前言:网络的出现,已经改变人类生活习惯和获取信息方式不同了,带来方便,也带来片面的误导.知识代代相传,代代创新和积累下来的传播了,促使人类文明的发展,那回归内容是什么,话题吧!其实我们本身就是一个知识库,看是否愿意用心去创造新的知识,去分享.做SEOer一员,所做的每一件小事情,都会改变网络一小块,一小块,正由于

个人网站,呼唤真实、回归本源

个人网站 互联网后现代时刻,赚钱无不成为众多站长的首要考虑的因素!因为空间要钱,宣传要钱,活动要钱,玉米要钱,一切一切多要钱,仿佛互联网充满了金山银山那么很多人会说2003年短信联盟和电影联盟可以给我钱:2004年网络游戏和淘宝开始给我钱:2005年网络游戏弃你而去了,彩信.铃声满足不了你,还有淘宝这根稻草可以救命:2006年当短信被提高门槛,网络游戏萎缩,淘宝离我们而去-..2007年我们改怎么办? 现在整天多在叫嚣拉风险投资,鼓吹Web2.0,当我们在各大站奔走的时候不断Ctrl+C.Ctr

搜索引擎优化回归本质关于链接分析

  上周周六在A5跟大家分享了"2013年搜索引擎优化全新的蜕化"关于网站内容,主要是针对最近搜索引擎的调整,让站长能够找准自己的所在位置,自己针对产品的用户群的内容方面知识,今天来跟大家分享下"2013年搜索引擎优化全新的蜕化"链接篇. 很久之前做优化的都知道,seo圈子里面有这么一句话"内容为王.外链为皇"这句话盛世流传,一直是seoer的终极目标,但是搜索引擎优化腾空出世的几年中,到底有多少人真正做到了这两点.内容和链接的结合密不可分,这节

呼唤真实、回归本源

互联网后现代时刻,赚钱无不成为众多站长的首要考虑的因素!因为空间要钱,宣传要钱,活动要钱,玉米要钱,一切一切多要钱,仿佛互联网充满了金山银山那么很多人会说2003年短信联盟和电影联盟可以给我钱:2004年网络游戏和淘宝开始给我钱:2005年网络游戏弃你而去了,彩信.铃声满足不了你,还有淘宝这根稻草可以救命:2006年当短信被提高门槛,网络游戏萎缩,淘宝离我们而去-..2007年我们改怎么办?     现在整天多在叫嚣拉风险投资,鼓吹Web2.0,当我们在各大站奔走的时候不断Ctrl+C.Ctrl

回归web1.0合理地利用web2.0的资源

web|web2 "站长"一个不该放弃的职业 本人混网的日子也不短了,做过的网站也有N个.但没有一个是成功,赚过钱的.在本人未懂事的时候曾2000年在碧聊上申请了一个本地聊天室"吴川真情告白"曾是碧聊10大特约聊天室之一.因为没懂事没把用户们留下来,导致今天从新开始.如今互联网发展的速度超乎想像,在互联网发展过程中有人成功了,他们正在享受互联网给它还来的快乐和满足感.有人恐惧而放弃了,放弃了最初他想当站长的目的.我是一个从没成功的站长,在如今的站长群体里不断尝试,揣

放生软文 让软文回归自然

最近因为绿萝2.0的发布,关于软文的讨论也非常的多,软文这条一直以来行之有效的网站推广方法似乎瞬间被堵死了,这也个推广,SEO界带来不小的地震,有不少专业人士甚至放言seo已经成为渣渣,站长还是老老实实搞原创吧,对于这样的"断言"重庆SEO吴立并不喜欢加以评论,现在让我们的眼光回到标题:放生软文,让软文回归自然.   首先,软文是什么? 软文即软性广告,软文相对于硬性推广广告而言有着独特的优势,软文的本质其实在于价值交换,读者通过阅读软文获取到有价值的信息或者有趣的新闻,而作者则通过读

B2C市场理性回归 仍缺实力用户

    我国B2C市场正趋于平稳.理性的发展.易观国际日前对B2C市场规模的一项研究调查表明,2007年第一季度B2C的市场交易规模达到10.2亿元,与2006年第四季度基本持平.分析认为,2006年中国B2C市场已更趋于理性,但B2C用户的深度仍待挖掘. B2C市场理性回归 B2C的理性首先表现在宏观上,市场激烈的起伏已经消退. 2006年B2C市场的整体发展相当平稳,从2006年第一季度的8.54亿元,增长为2006年第四季度的10.3亿元,平均增长率约为7%.而此前在2005年第一季度则比

香港回归十周年,互联网十年

1997年我在上高二,那一年的7月1号很激动,半夜12点起来看香港回归的交接仪式,看着那位英国人捧着自己国家的国旗深深的低下了头,真的感觉很自豪.那时候还专门看很多关于香港商业的书籍对像李嘉诚这样的企业家更是敬佩不已.10年后的几天,全国各大媒体都在报道纪念香港回归十周年的盛况,而我却已经没有往日的激情了. "香港回归10年关我什么事",或许会很多人不同意,却是事实,生活就是这样的现实,做什么都会与利益挂钩.不管你说冷漠也好,无情也好,商场上你必须这样做,这就是商业竞争的残酷. 199