使用python、numpy线性回归
2017-12-06 17:05
369 查看
线性回归的原理不再赘述,本文给出了一个简单的使用梯度下降的线性回归模拟。import numpy as np
def weightsUpdate(data,w,b,learning_rate=0.01):
for x0,y0 in data:
y=np.dot(x0,w)+b
w_gradient = (y - y0) * x0.T#求w的梯度
b_gradient=(y-y0)[0];#求b的梯度;取标量
w-=w_gradient*learning_rate#权值更新
b-=b_gradient
loss=0.5*np.square(y-y0)
return [w,b,loss[0][0]]
def generateData(w,b,dataNum=10):#根据w,b生成数据
data = []
for i in range(dataNum):
noise = np.random.randn(1) * 0.01
x0 = np.random.randn(1,w.shape[0])
y0 = np.dot(x0, w) + b+noise
x = [x0, y0]
data.append(x)
return data
def linearRegressionTrain(data):
w0=np.random.randn(data[0][0].shape[1],1)
b0=np.random.randn(1)
for i in range(1000):
w0, b0,loss = weightsUpdate(data, w0, b0,0.01)
if(i%100==0):
print(loss)
return [w0,b0]
#y=2*x1+3*x2+1
w=np.array([[2],[3],[4],[5]])
b=np.array([1])
data=generateData(w,b)
w0,b0=linearRegressionTrain(data)
print(" w=", w,'\n',"w0=", w0, '\n',"b=", b, '\n',"b0=", b0)
实现的比较简单,效果还不错
def weightsUpdate(data,w,b,learning_rate=0.01):
for x0,y0 in data:
y=np.dot(x0,w)+b
w_gradient = (y - y0) * x0.T#求w的梯度
b_gradient=(y-y0)[0];#求b的梯度;取标量
w-=w_gradient*learning_rate#权值更新
b-=b_gradient
loss=0.5*np.square(y-y0)
return [w,b,loss[0][0]]
def generateData(w,b,dataNum=10):#根据w,b生成数据
data = []
for i in range(dataNum):
noise = np.random.randn(1) * 0.01
x0 = np.random.randn(1,w.shape[0])
y0 = np.dot(x0, w) + b+noise
x = [x0, y0]
data.append(x)
return data
def linearRegressionTrain(data):
w0=np.random.randn(data[0][0].shape[1],1)
b0=np.random.randn(1)
for i in range(1000):
w0, b0,loss = weightsUpdate(data, w0, b0,0.01)
if(i%100==0):
print(loss)
return [w0,b0]
#y=2*x1+3*x2+1
w=np.array([[2],[3],[4],[5]])
b=np.array([1])
data=generateData(w,b)
w0,b0=linearRegressionTrain(data)
print(" w=", w,'\n',"w0=", w0, '\n',"b=", b, '\n',"b0=", b0)
实现的比较简单,效果还不错
相关文章推荐
- python numpy使用
- Python绘图和数值工具:matplotlib 和 numpy下载与使用
- Python使用线性回归简单预测数据
- 使用PythonCharm简易安装python统计包及UnicodeDecodeError,numpy.distutils.systeminfo.blas/lapacknotfounderror
- Python Matplotlib的安装使用及Scipy,numpy,dateutil,pyparsing的安装
- 使用python和numpy重写计算uv分量脚本
- 使用numpy很容易在python中将数据读入内存
- python numpy使用
- Python之数组(array)使用方法总结与Numpy中的数组用法
- python numpy的使用
- python numpy使用
- 使用python numpy进行SVD分解
- Python基础-numpy使用
- 64位系统下,Python的使用——numpy、matplotlib、opencv
- Python使用scipy和numpy操作处理图像
- Python Numpy的简单使用
- python 使用numpy matplotlib绘制图表
- python numpy:1 numpy.array和numpy.matrix常用函数使用
- Python绘图和数值工具:matplotlib 和 numpy下载与使用
- 使用Python的pip命令安装numpy