import numpy as np
# 正则化
def regularize(x):#regularize by columns
x_tmp = x.copy()
for i in range(2, len(x[0])):
current_x = x_tmp[:, i]
x_avg = np.mean(current_x)
x_var = current_x.max() - current_x.min()
current_x = (current_x-x_avg)/(x_var)
x_tmp[:, i] = current_x
return x_tmp
# 梯度下降函数
def compute_gradient(current_para, x, y, learning_rate):
length = len(x)
matrix_gradient = np.zeros(len(x[0]))
m = len(y)
for i in range(0, length):
current_x = x[i]
current_y = y[i]
current_x = np.asarray(current_x)
matrix_gradient += (np.dot(current_para, current_x)-current_y)*current_x
para_new = current_para - learning_rate*matrix_gradient/m
return para_new
# 误差计算函数
def compute_error(para, x, y):
total_error = 0
length = len(x)
num = len(y)
for i in range(0, length):
total_error += (y - (np.dot(para, x[i]))) ** 2
total_error = np.sum(total_error, axis=0)
return total_error / (2*num)
# 参数优化过程,输出误差
def optimizer(initial_para, x, y, learning_rate, num_iter):
para = initial_para
for i in range(0, num_iter+1):
para = compute_gradient(para, x, y, learning_rate)
if i % 100 == 0:
error = compute_error(para, x, y)
print("iter:"+str(i)+" ; error:"+str(error))
return para
def linear_regression():
data = np.loadtxt('linear_regression_multiple_variable.csv', delimiter='\t')
# 特征数量
n = len(data[0])
# 样本数量
m = len(data)
x = data[:, 0:n-1]
y = data[:, n-1]
matrix_one = np.ones(m)
x = np.insert(x, 0, values=matrix_one, axis=1)
x = regularize(x)
initial_para = np.zeros(n)
print("起始参数:")
print(initial_para)
learning_rate = 0.001
num_iter = 3400
para = optimizer(initial_para, x, y, learning_rate, num_iter)
print("最后训练得到的参数:")
print(para)
linear_regression()
纯python3.5实现多变量线性回归(附数据)
5星 · 超过95%的资源 需积分: 42 165 浏览量
2018-01-12
12:01:58
上传
评论 8
收藏 53KB RAR 举报
霍姆格雷特
- 粉丝: 41
- 资源: 22
最新资源
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
- 基于matlab+DWT的图像水印项目,数字水印+源代码+文档说明+图片+报告pdf
- (优秀毕业设计)基于python实现的数字图像可视化水印系统的设计与实现,多种数字算法实现+源代码+文档说明+理论演示pdf
- 基于DWT-DCT-SVD和deflate压缩的数字水印方法python源码+Gui界面+演示视频(高分毕业设计)
- 基于matlab实现DWT、DCT、SVD算法数字图像水印可视化系统+GUI界面+文档说明+详细注释(高分毕业设计)
- NCIAE-Data-Structure大一大二笔记
- 学习wireshark笔记
- digital-image-数据可视化笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈