Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法枚举过浮,但是否有其他方法可以完成此操作?_Python_Time Series_Cluster Analysis_Enumerate - Fatal编程技术网

Python 无法枚举过浮,但是否有其他方法可以完成此操作?

Python 无法枚举过浮,但是否有其他方法可以完成此操作?,python,time-series,cluster-analysis,enumerate,Python,Time Series,Cluster Analysis,Enumerate,编辑我有点尴尬-我使用了错误的分隔符。如果我浪费了任何人的时间,我很抱歉!代码现在正在运行,但需要很长时间,所以我可能会在几个小时后回来。谢谢大家 我正在尝试使用来自在线源的代码——并将其应用于csv文件中的时间序列数据。我遇到的错误是当它试图通过“s1”枚举时。我知道我不能枚举浮点数,但我不太确定我是否知道如何解决这个问题,更不用说代码到底需要枚举什么了。我确信我的数据集的格式和他的一样,因为他在github报告中有他的数据集 谢谢你能给我的任何帮助 编辑我忘了包含DTW函数,它现在添加到下面

编辑我有点尴尬-我使用了错误的分隔符。如果我浪费了任何人的时间,我很抱歉!代码现在正在运行,但需要很长时间,所以我可能会在几个小时后回来。谢谢大家

我正在尝试使用来自在线源的代码——并将其应用于csv文件中的时间序列数据。我遇到的错误是当它试图通过“s1”枚举时。我知道我不能枚举浮点数,但我不太确定我是否知道如何解决这个问题,更不用说代码到底需要枚举什么了。我确信我的数据集的格式和他的一样,因为他在github报告中有他的数据集

谢谢你能给我的任何帮助

编辑我忘了包含DTW函数,它现在添加到下面

函数DTW距离

def DTWDistance(s1, s2,w):
    DTW={}

    w = max(w, abs(len(s1)-len(s2)))

    for i in range(-1,len(s1)):
        for j in range(-1,len(s2)):
            DTW[(i, j)] = float('inf')
    DTW[(-1, -1)] = 0

    for i in range(len(s1)):
        for j in range(max(0, i-w), min(len(s2), i+w)):
            dist= (s1[i]-s2[j])**2
            DTW[(i, j)] = dist + min(DTW[(i-1, j)],DTW[(i, j-1)], DTW[(i-1, j-1)])

    return math.sqrt(DTW[len(s1)-1, len(s2)-1])
函数LB_Keogh

def LB_Keogh(s1,s2,r):
    LB_sum=0
    for ind,i in enumerate(s1):

        lower_bound=min(s2[(ind-r if ind-r>=0 else 0):(ind+r)])
        upper_bound=max(s2[(ind-r if ind-r>=0 else 0):(ind+r)])

        if i>upper_bound:
            LB_sum=LB_sum+(i-upper_bound)**2
        elif i<lower_bound:
            LB_sum=LB_sum+(i-lower_bound)**2

    return math.sqrt(LB_sum)
调用函数

centroids=k_means_clust(list(time_series),4,10,4)
我得到的错误是:

--------------------------------------------------------------------
TypeError                                 Traceback (most recent 
call last)
<ipython-input-50-909588871671> in <module>()
      6 
      7 
----> 8 centroids=k_means_clust(list(df),4,10,4)
      9 
     10 

<ipython-input-49-f91bbc3a5a04> in k_means_clust(data, num_clust, num_iter, w)
     11             closest_clust=None
     12             for c_ind,j in enumerate(centroids):
---> 13                 if LB_Keogh(i,j,5)<min_dist:
     14                     cur_dist=DTWDistance(i,j,w)
     15                     if cur_dist<min_dist:

<ipython-input-48-b5b8e44a435a> in LB_Keogh(s1, s2, r)
      1 def LB_Keogh(s1,s2,r):
      2     LB_sum=0
----> 3     for ind,i in enumerate(s1):
      4 
      5         lower_bound=min(s2[(ind-r if ind-r>=0 else 0):(ind+r)])

TypeError: 'numpy.float64' object is not iterable
--------------------------------------------------------------------
类型错误回溯(最近的
最后一次呼叫)
在()
6.
7.
---->8质心=k_意味着(列表(df),4,10,4)
9
10
在k_中,是指(数据,num_clust,num_iter,w)
11最近的\u clust=无
12对于c_ind,枚举中的j(质心):
--->13如果LB_Keogh(i,j,5)=0,否则为0:(ind+r)])
TypeError:“numpy.float64”对象不可编辑

您提到试图使用他的数据并运行代码,可以吗?这将允许您运行单元格,而不是复制和粘贴代码,因为它们都在那里。如果您不熟悉jupyter,我建议您这样做,但您也可以通过virtI am使用jupyter在您的计算机上本地安装,谢谢您的回复!我已经解决了我的问题,用Cython重写代码,因为纯python对于这些事情来说太慢了。
centroids=k_means_clust(list(time_series),4,10,4)
--------------------------------------------------------------------
TypeError                                 Traceback (most recent 
call last)
<ipython-input-50-909588871671> in <module>()
      6 
      7 
----> 8 centroids=k_means_clust(list(df),4,10,4)
      9 
     10 

<ipython-input-49-f91bbc3a5a04> in k_means_clust(data, num_clust, num_iter, w)
     11             closest_clust=None
     12             for c_ind,j in enumerate(centroids):
---> 13                 if LB_Keogh(i,j,5)<min_dist:
     14                     cur_dist=DTWDistance(i,j,w)
     15                     if cur_dist<min_dist:

<ipython-input-48-b5b8e44a435a> in LB_Keogh(s1, s2, r)
      1 def LB_Keogh(s1,s2,r):
      2     LB_sum=0
----> 3     for ind,i in enumerate(s1):
      4 
      5         lower_bound=min(s2[(ind-r if ind-r>=0 else 0):(ind+r)])

TypeError: 'numpy.float64' object is not iterable