基于python中theano库的线性回归

2020-06-22 09:36 来源:易采站长站 作者:易采站长站整理 点击: 评论:

A-A+

原标题:基于python中theano库的线性回归

theano库是做deep learning重要的一部分,其最吸引人的地方之一是你给出符号化的公式之后,能自动生成导数。本文使用梯度下降的方法,进行数据拟合,现在把代码贴在下方

代码块


import numpy as np
import theano.tensor as T
import theano
import time

class Linear_Reg(object):
def __init__(self,x):
self.a = theano.shared(value = np.zeros((1,), dtype=theano.config.floatX),name = 'a')
self.b = theano.shared(value = np.zeros((1,),
dtype=theano.config.floatX),name = 'b')
self.result = self.a * x + self.b
self.params = [self.a,self.b] def msl(self,y):
return T.mean((y - self.result)**2)

def regrun(rate,data,labels):

X = theano.shared(np.asarray(data,
dtype=theano.config.floatX),borrow = True)
Y = theano.shared(np.asarray(labels,
dtype=theano.config.floatX),borrow = True)

index = T.lscalar() #定义符号化的公式
x = T.dscalar('x') #定义符号化的公式
y = T.dscalar('y') #定义符号化的公式

reg = Linear_Reg(x = x)
cost = reg.msl(y)

a_g = T.grad(cost = cost,wrt = reg.a) #计算梯度
b_g = T.grad(cost = cost, wrt = reg.b) #计算梯度

updates=[(reg.a,reg.a - rate * a_g),(reg.b,reg.b - rate * b_g)] #更新参数
train_model = theano.function(inputs=[index], outputs = reg.msl(y),updates = updates,givens = {x:X[index], y:Y[index]})

done = True
err = 0.0
count = 0
last = 0.0
start_time = time.clock()
while done:
#err_s = [train_model(i) for i in xrange(data.shape[0])] for i in xxx:
err_s = [train_model(i) ] err = np.mean(err_s)

#print err
count = count + 1
if count > 10000 or err <0.1:
done = False
last = err
end_time = time.clock()
print 'Total time is :',end_time -start_time,' s' # 5.12s
print 'last error :',err
print 'a value : ',reg.a.get_value() # [ 2.92394467] print 'b value : ',reg.b.get_value() # [ 1.81334458]

if __name__ == '__main__':
rate = 0.01
data = np.linspace(1,10,10)
labels = data * 3 + np.ones(data.shape[0],dtype=np.float64) +np.random.rand(data.shape[0])
regrun(rate,data,labels)

其基本思想是随机梯度下降。

您可能感兴趣的文章:Python数据分析之双色球基于线性回归算法预测下期中奖结果示例Python数据拟合与广义线性回归算法学习Python实现的简单线性回归算法实例分析Python scikit-learn 做线性回归的示例代码Python编程实现使用线性回归预测数据Python线性回归实战分析python编程线性回归代码示例Python编程实现线性回归和批量梯度下降法代码实例python实现机器学习之多元线性回归python实现机器学习之元线性回归Python实现的线性回归算法示例【附csv文件下载】

【易采站长站编辑:秋军】