python多项式回归代码实现
多项式回归是在上文python源码实现线性回归并绘图
基础上实现的,要实现下面的多项式
可以用矩阵相乘来实现
代码如下:
基于Flink+Doris构建高性能高扩展的全端实时数据仓库教程
数据仓库建模和实战教程(理论和业务结合)
Python实战金融风控回归模型(附代码)
【Python入门教程】零基础教程/全套教程|港大学霸系统精讲
MSF渗透实战训练营——入门至入狱系列【网络安全】
基于Flink+Hudi构建企业万亿级云上实时数据湖教程
python量化交易
自动化运维脚本编程:CMD/DOS批处理实战案例学习
数据仓库建模和实战教程(理论和业务结合)
Python实战金融风控回归模型(附代码)
【Python入门教程】零基础教程/全套教程|港大学霸系统精讲
MSF渗透实战训练营——入门至入狱系列【网络安全】
基于Flink+Hudi构建企业万亿级云上实时数据湖教程
python量化交易
自动化运维脚本编程:CMD/DOS批处理实战案例学习
import numpy as np
import matplotlib.pyplot as plt
# 读入训练数据
train = np.loadtxt('click.csv', delimiter=',', dtype='int', skiprows=1)
train_x = train[:,0]
train_y = train[:,1]
# 标准化
mu = train_x.mean()
sigma = train_x.std()
def standardize(x):
return (x - mu) / sigma
train_z = standardize(train_x)
# 参数初始化
theta = np.random.rand(3)
# 创建训练数据的矩阵
def to_matrix(x):
return np.vstack([np.ones(x.size), x, x ** 2]).T
X = to_matrix(train_z)
# 预测函数
def f(x):
return np.dot(x, theta)
# 目标函数
def E(x, y):
return 0.5 * np.sum((y - f(x)) ** 2)
# 学习率
ETA = 1e-3
# 误差的差值
diff = 1
# 更新次数
count = 0
# 直到误差的差值小于 0.01 为止,重复参数更新
error = E(X, train_y)
while diff > 1e-2:
# 更新结果保存到临时变量
theta = theta - ETA * np.dot(f(X) - train_y, X)
# 计算与上一次误差的差值
current_error = E(X, train_y)
diff = error - current_error
error = current_error
# 输出日志
count += 1
log = '第 {} 次 : theta = {}, 差值 = {:.4f}'
print(log.format(count, theta, diff))
# 绘图确认
x = np.linspace(-3, 3, 100)
plt.plot(train_z, train_y, 'o')
plt.plot(x, f(to_matrix(x)))
plt.show()
最后输出效果如下: