码迷,mamicode.com
首页 > 其他好文 > 详细

[ML]简单的Normal Equation对数据点进行线性回归

时间:2017-07-16 21:53:09      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:[]   pre   compute   result   port   技术分享   pac   app   参数   

注明:本文仅作为记录本人的日常学习历程而存在。

Normal Equation和上篇介绍的方法相比,简单许多。具体公式见吴恩达老师的coursera视频

1.

generate_data用来生成实验中所用到的数据,数据总体分布在斜率为10-30之间随机取值,截距为200-5000之间随机取值的直线上

compute函数用来计算出目标直线参数:

import numpy as np
import matplotlib.pyplot as plt
def compute(X,Y):
    return (X.T.dot(X))**(-1)*(X.T)*Y
def generate_data(data_size):
    x = np.random.randint(-250,250,size=data_size)
    y = []
    for i in range(data_size):
        y.append(x[i]*np.random.randint(10,30)+np.random.randint(200,5000))
    return (x,y)

2.

进行计算。

data_size = 500
(xx,yy) = generate_data(data_size)
#plt.plot(x,y,‘rx‘)
x = [[1,xx[i]] for i in range(data_size)]
X = np.matrix(x).reshape((data_size,2))
Y = np.matrix(yy).reshape((data_size,1))
theta = compute(X,Y)
theta = theta.getA()
print(theta)

3.

可视化:

result_x = np.linspace(-250,250,data_size)
result_y = theta[1] * result_x + theta[0]
plt.plot(result_x,result_y)
plt.plot(xx,yy,rx)

4.最终结果:

技术分享

[ML]简单的Normal Equation对数据点进行线性回归

标签:[]   pre   compute   result   port   技术分享   pac   app   参数   

原文地址:http://www.cnblogs.com/minemine/p/7192011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!