Linear Regression 实现 (Python)
来源:互联网 发布:mysql数据库 pdf 编辑:程序博客网 时间:2024/06/04 23:28
matrix 是观测数据
result 是观测结果数据
theta是h = a1*x1+a2*x2中的[a1,a2]
什么都不说了直接上代码
批量梯度下降
import math
#h(x) = a*x1 + b*x2
#矩阵代表自变量
matrix = [[1,4],[2,5],[5,1],[4,2]]
#结果矩阵
result = [19,26,19,20]
#设开始系数为theta
theta = [2,5]
#误差设置
loss = 1000.0000
#控制系数控制迭代次数
learning_rate = 0.01
i = 0
while (i<100 and loss>0.0001):
error_sum = 0.0
for j in range(4):
h = 0.0
for k in range(2):
h += matrix[j][k]*theta[k]
error_sum = result[j]-h
for k in range(2):
theta[k] += learning_rate*(error_sum)*matrix[j][k]
print "*******%d iter*******" %(i)
print "theta now:%f,%f\n" %(theta[0],theta[1])
loss = 0.0
for j in range(4):
total = 0.0
for k in range(2):
total += matrix[j][k]*theta[k]
loss += (total-result[j])*(total-result[j])
print "loss now : %f\n" %(loss)
i += 1
随机梯度下降
import math
matrix = [[1,4],[2,5],[5,1],[4,2]]result = [19,26,19,20]
theta = [2,5]
loss = 1000.0000
i = 0
while (i<100 and loss> 0.001):
error_sum = 0.0
#import random
#j = random.randint(0,99) or random.choice(result)
#此处也可使用随机函数来处理 但是%4是必须的因为实际观测值有四个
j = i%4
h = 0.0
for k in range(2):
h += matrix[j][k]*theta[k]
error_sum = result[j]-h
for k in range(2):
theta[k] += 0.01*(error_sum)*matrix[j][k]
print "****%d iter**** \n" %(i)
print "theta[0]:%f , theta[1]:%f \n" %(theta[0],theta[1])
loss = 0.0
for j in range(4):
total = 0.0
for k in range(2):
total += matrix[j][k]*theta[k]
loss += (total-result[j])*(total-result[j])
print "loss:%f \n" %(loss)
i=i+1
具体可以参考Jerrylead的相关博客
- Linear Regression 实现 (Python)
- 机器学习:python 实现一个linear regression
- Linear Regression 线性回归sklearn python实现
- JAVA实现Linear Regression
- TensorFlow 实现Linear Regression
- tensorflow实现Linear Regression
- 机器学习经典算法详解及Python实现--线性回归(Linear Regression)算法
- 机器学习经典算法详解及Python实现--线性回归(Linear Regression)算法
- Python实现:利用GBDT产生新特征(GBDT+Linear Regression)
- 机器学习之线性回归 Linear Regression(二)Python实现
- linear regression code with python
- linear regression(二)
- Linear Regression & Ridge Regression的matlab实现
- 线性回归 linear regression (implement by python)
- 线性回归(linear-regression)预测算法基本概念&C++实现
- 线性回归 (linear regression model) 原理与代码实现
- 线性回归(linear regression)
- 线性回归(linear regression)
- 第13周——Dijkstra算法的验证
- 最大子数组和
- HDOJ 2094 产生冠军 (拓扑排序)
- UML学习(二)
- 【Leetcode】String
- Linear Regression 实现 (Python)
- 完全自定义View
- 黑马程序员——OC语言——@property和@synthesize使用
- 《C++ primer》英文第五版阅读笔记(十八)——成员运算符和条件运算符
- 神经网络的基本原理及编程入门
- iOS学习之场景跳转的三种方式
- Python中遇到的错误(随时更新)
- HDOJ 3342 Legal or Not (拓扑排序)
- 大数加法(C语言)