回归算法——python实现线性回归
2017-05-23 21:59
302 查看
算法简介
给定数据集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 np
from 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 wb
def 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
相关文章推荐
- 机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树
- Logistic Regression 逻辑回归算法例子,python代码实现
- 最新回归算法理解、实现及应用(1)线性回归
- 21-城里人套路深之用python实现逻辑回归算法
- python实现信用卡欺诈检测 logistic回归逻辑回归算法
- 梯度下降法 线性回归 多项式回归 python实现
- 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法
- python实现集成回归算法,包括随机森林,极端随机森林,梯度boosting算法
- 机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树
- Logistic Regression 逻辑回归算法例子,python代码实现
- [置顶] 【算法 机器学习】MATLAB、R、python三种编程语言实现简单线性回归算法比较
- 逻辑回归算法简介及用python实现
- logistic回归算法详细分析与Python代码实现注释
- logistic回归算法原理及python实现
- 分类算法系列2----逻辑回归Logistic原理和Python实现
- 机器学习算法的Python实现 (1):logistics回归 与 线性判别分析(LDA)
- CART分类决策树、回归树和模型树算法详解及Python实现
- [置顶] 《统计学习方法》 决策树 CART生成算法 回归树 Python实现
- 机器学习经典算法详解及Python实现--线性回归(Linear Regression)算法
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression