我已经使用带有 sci-kit learn 的自定义 DTW 指标实现了 KNN,如下所示:
def dtw(t1, t2):
distance = fastdtw(t1, t2)[0]
return distance
model = KNeighborsClassifier(n_neighbors=1, metric=dtw)
此外,我还为模板匹配实现了独立的 DTW,如下所示:
def calc_dtw():
predictions = []
for i in range(len(X)): #X is an array containing X values to be predicted
distances = []
for j in range(len(self.X_)):
distances.append(fastdtw(X[i], self.X_[j])[0]) #self.X_ are the templates
closest = distances.index(min(distances))
predictions.append(self.y_[closest])
return predictions
DTW 的两种实现都使用相同的“快速 dtw”库。我进行了一项测试来计算每种算法计算预测所需的时间,结果表明 kNN-DTW 比独立 DTW 更快。独立 DTW(二次时间复杂度)不应该比 kNN-DTW(三次时间复杂度)更快吗?这是因为我的 DTW 实现中的错误吗?