首页 > 代码库 > [ML]简单的Normal Equation对数据点进行线性回归
[ML]简单的Normal Equation对数据点进行线性回归
注明:本文仅作为记录本人的日常学习历程而存在。
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对数据点进行线性回归
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。