小言_互联网的博客

机器学习与python--------BP神经网络、多元线性回归模型实战(一)

440人阅读  评论(0)

博主研究机器学习有一段时间了,西瓜书也买了,感觉对这些专业术语还了解的不是很深入,所以趁着十月一假期,大家都在放松的时候,顺便赶超他们一下。今天就敲敲代码,实战一下。
首先我们先敲一个一元线性回归
一元线性回归涉及到最小二乘法和一元线性回归的优化问题。
代码如下:

import numpy as np
import matplotlib pyplot as plt

data = np.genfromtxt("data.csv",delimiter=",")
x_data = data[;,0]
y_data = data[;,1] 
plt.scatter(x_data,y_data)
plt.show()
#学习率
lr=0.0001
#截距
b=0
#斜率
k=0
#最大迭代次数
epochs=50
#最小二乘法
def compute_error(b,k,x_data,y_data):
	totalError = 0
	for i in range(0,len(x_data)):
		totalError+=(y_data[i]-(k*x_data[i]+b))**2
	return totalError/float(len(x_data))

def gradient_descent_runner(x_data,y_data,b,k,lr,epochs):
	#计算总数据量
	m=float(len(x_data))
	for i in range(epochs)
		b_grad = 0
		k_grad = 0
		#计算梯度总和再求平均
		for j in range(0,len(x_data))
			b_grad+=-(1/m)*(y_data[j]-(k*x_data[j])+b)
			k_grad+=(1/m)*x_data[j]*(((k*x_data[j])+b)-y_data[j])
			#更新b、k
			b=b-(lr*b_grad)
			k=k-(lr*k_grad)
		return b,k
print("starting b={0},k={1},error={2}".format(b,k,compute_error(b,k,x_data,y_data)))
print("running....")
print("after {0} iteration b={1},k={2},error={3}".format(epochs,b,k,compute_error(b,k,x_data,y_data)))
plt.plot(x_data,y_data,"b")
plt.plot(x_data,k*x_data+b,'r')
plt.show()




转载:https://blog.csdn.net/qq_36444039/article/details/102078788
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场