0
我是一个Python和机器学习的新手。我试图使用梯度下降法(也许线性回归),以从温度和时间序列图的得到的斜率在python 2.7像下面有没有什么办法可以用python的梯度下降法得到时间序列的斜率?
我越来越温度和时间值从OpenTSDB,而时间值最初出现与unix时间,但我把它用像下面
TIME = time.localtime(float(_time));
stime = '%4d/%02d/%02d %02d:%02d:%02d' % (TIME.tm_year, TIME.tm_mon, TIME.tm_mday, TIME.tm_hour, TIME.tm_min, TIME.tm_sec);
有什么方法让上述使用梯度下降曲线的斜率改变为字符串?
我试着用这个教程https://anaconda.org/benawad/gradient-descent/notebook,但不起作用,给了我一个尴尬的斜率答案。
编辑
def plot_line(y, data_points):
x_values = [i for i in range(int(min(data_points))-1, int(max(data_points))+2)]
y_values = [y(x) for x in x_values]
plt.plot(x_values, y_values, 'b')
def summation(y, x_points, y_points):
total1 = 0
total2 = 0
for i in range(1, len(x_points)):
total1 += y(x_points[i]) - y_points[i]
total2 += (y(x_points[i]) - y_points[i]) * x_points[i]
return total1/len(x_points), total2/len(x_points)
m = 0
b = 0
y = lambda x : m*x + b;
learn = 0.1;
for i in range(5):
s1, s2 = summation(y, timenum_list, temperature_list)
m = m - learn * s2
b = b - learn * s1
print m;
print b;
plt.plot(timenum_list, temperature_list, 'bo')
title('Time vs Temperature')
xlabel('Time')
ylabel('Temperature')
我用梯度下降的上述功能,但没有很好地工作。
timenum_list
是unix时间的列表。 temperature_list
是温度的列表。
感谢您的回答,那么我可能会使用你的第二个选项什么建议。 :'( – paulc1111
出于好奇 - 你想用坡度做什么?我们可能会想到一个更好的解决方案;) –
嗯......我想分析时间和温度之间的斜率值,以及什么样的关系是否有人在房间里或没有。 :)我刚刚完成绘图插值。现在,我必须采取两个点或所有点找出斜率值:'( – paulc1111