回归算法——python实现线性回归
来源:互联网 发布:java实时读取log文件 编辑:程序博客网 时间:2024/06/05 15:44
算法简介
给定数据集D={(x1,y1),(x2,y2),…,(xm,ym)},一共有m个样本,其中每个样本有d个属性,即xi = (xi1,xi2,…,xid)。线性回归是试图学到一个线性模型 f(x) = w1*x1+w2*x2+…+wd*xd + b以尽可能准确的预测实值输出标记。 其中w=(w1,w2,…,wd), w和b是通过学习之后,模型得以确定。
w和b的确定是通过损失函数确定的:
用最小二乘法对w和b进行估计。把w和b吸收入向量形式,w’ = (w;b),相应的数据集D表示为一个m*(d+1)的矩阵X,其中每一行对应一个示例,该行前d个元素对应于示例的d个属性值,最后一个元素恒为1。则对于上面的公式有:
对w’求导得:
令上式为零(当X^TX为满秩矩阵或正定矩阵时可得):
令xi’ = (xi;1)则线性回归模型为:
python实现过程
训练得到w和b的向量:
def train_wb(X, y): """ :param X:N*D的数据 :param y:X对应的y值 :return: 返回(w,b)的向量 """ if np.linalg.det(X.T * X) != 0: wb = ((X.T.dot(X).I).dot(X.T)).dot(y) return wb
获得数据的函数,其中数据下载自
http://download.csdn.net/detail/google19890102/7386709
def getdata(): x = []; y = [] file = open("C:\\Users\\cjwbest\\Desktop\\ex0.txt", 'r') for line in file.readlines(): temp = line.strip().split("\t") x.append([float(temp[0]),float(temp[1])]) y.append(float(temp[2])) return (np.mat(x), np.mat(y).T)
画图函数,分别把训练用的数据的散点图还有回归直线画出来了。
def draw(x, y, wb): #画回归直线y = wx+b a = np.linspace(0, np.max(x)) #横坐标的取值范围 b = wb[0] + a * wb[1] plot(x, y, '.') plot(a, b) show()
整体代码如下:
#-*- coding:utf-8 -*-import numpy as npfrom pylab import *def train_wb(X, y): """ :param X:N*D的数据 :param y:X对应的y值 :return: 返回(w,b)的向量 """ if np.linalg.det(X.T * X) != 0: wb = ((X.T.dot(X).I).dot(X.T)).dot(y) return wbdef test(x, wb): return x.T.dot(wb)def getdata(): x = []; y = [] file = open("ex0.txt", 'r') for line in file.readlines(): temp = line.strip().split("\t") x.append([float(temp[0]),float(temp[1])]) y.append(float(temp[2])) return (np.mat(x), np.mat(y).T)def draw(x, y, wb): #画回归直线y = wx+b a = np.linspace(0, np.max(x)) #横坐标的取值范围 b = wb[0] + a * wb[1] plot(x, y, '.') plot(a, b) show()X, y = getdata()wb = train_wb(X, y)draw(X[:, 1], y, wb.tolist())
运行结果如图所示:
参考内容:《机器学习》周志华
http://blog.csdn.net/google19890102/article/details/51005766
阅读全文
0 0
- 回归算法——python实现线性回归
- 线性回归python实现
- 线性回归---Python实现
- 线性回归算法及用python实现
- 线性回归算法实现
- 线性回归的python实现
- 用python实现线性回归
- python实现简单线性回归
- 【ML算法】回归拟合——线性回归
- 用python实现图形显示“线性回归+梯度下降”算法
- 用python实现图形显示“线性回归+梯度下降”算法
- 7.2简单线性回归算法实现--python机器学习
- 机器学习-线性回归算法(python实现)个人理解
- 用Python实现机器学习算法:线性回归
- 机器学习算法——线性回归
- 回归模型-线性回归算法
- 回归模型——线性回归
- 局部加权线性回归及岭回归之Python实现
- ajax提交新增方法
- java运行时内存简介
- 逆波兰式、中缀表达式后缀表达式的总结与例题
- 经典论文翻译导读之《Finding a needle in Haystack: Facebook’s photo storage》
- java十进制和二进制转换方法
- 回归算法——python实现线性回归
- caffe 微调网络模型
- [jbb0523整理]压缩感知中的数学知识:线性方程组的解
- BZOJ1096[ZJOI2007]仓库建设
- 在IDEA 2017中导入Eclipse项目
- MarkdownPad 2使用小技巧
- python脚本实现文件的批量移动、复制,以及删除指定后缀
- deep learning for face detection
- (79)蓝图中的结构体变量