首页 / PYTHON / 线性回归,python语法实现
线性回归,python语法实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了线性回归,python语法实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1477字,纯文字阅读大概需要3分钟。
内容图文
找了很多资料发现好像大家的线性回归都是用sklearn来实现的,作为一个不会用sklearn的小白,寻找了多篇无果后 决定自己用一些比较基础的模块来实现线性回归的梯度下降算法。
import matplotlib.pyplot as plt
import numpy as np
x_data = np.array([1,2,3,4,5])
y_data = np.array([1,2,3,4,5])
a = 0.163
b = np.random.random()
k = np.random.random()
epochs = 1000
设置最简单的y=x函数来进行拟合,设置学习率为0.163,训练次数1000次。
# 计算代价函数
def compute_error(b, k, x_data, y_data):
total_error = 0
for i in range(0, len(x_data)):
total_error += (y_data[i] - (k * x_data[i] + b)) ** 2
return total_error / len(x_data) / 2.0
def gradient_descent_runner(x_data, y_data, k, b, a, epochs):
m = len(x_data)
for i in range(epochs): # 循环epochs次
new_b = 0 # 初始化截距
new_k = 0 # 初始化斜率
# 计算梯度的总和再求平均
for j in range(0, len(x_data)):
new_b += (1 / m) * (((k * x_data[j]) + b) - y_data[j])
new_k += (1 / m) * x_data[j] * (((k * x_data[j]) + b) - y_data[j])
# 更新b和k
b = b - (a * new_b)
k = k - (a * new_k)
else:
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, k * x_data + b, 'r')
plt.show()
return b, k
print("Starting b = {0}, k = {1}, error = {2}".format(b, k, compute_error(b, k, x_data, y_data)))
print("Running...")
b, k = gradient_descent_runner(x_data, y_data, b, k, a, epochs)
print("After {0} iterations b = {1}, k = {2}, error = {3}".format(epochs, b, k, compute_error(b, k, x_data, y_data)))
第十次训练:
二十次
三十次
最终运行结果:
接近100%拟合,错误率小于10^-26,基本上可以满足需求了。
内容总结
以上是互联网集市为您收集整理的线性回归,python语法实现全部内容,希望文章能够帮你解决线性回归,python语法实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。