我收到了我在机器学习项目的标题中所述的错误。我正在追踪guide on the internet。这是我遇到错误的部分:
def euclideanDistance(instance1, instance2, length):
distance = 0
for x in range(length):
distance += pow((instance1[x] - instance2[x]), 2)
return math.sqrt(distance)
def getNeighbors(trainingSet, testInstance, k):
distances = []
length = len(testInstance)-1
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x], length)
distances.append((trainingSet[x], dist))
distances.sort(key=operator.itemgetter(1))
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors
neighbors = getNeighbors(training_feature_list, test_feature_list, 3)
print(neighbors)
我已经在互联网上四处寻找这个问题,并注意到之前有很多人问过这个问题,但是据我了解,问题出在试图对不同类型的变量使用ufunc。但是我的training_feature_list和test_feature_list相似。
火车组像[['5.1''0.2'] ['4.9''0.2'] ...(30行)
测试集类似于[['4.8''0.2'] ['5.4''0.4'] ...(20行)。
如果有人能简要解释为什么出现此问题(因为我可能不太了解)以及如何解决它,我将感到非常高兴。
预先感谢
答案 0 :(得分:1)
如果您的列表确实看起来像[[''5.1''0.2'] ['4.9''0.2'] ...,则可能是由于您试图从另一个字符串中减去一个字符串而导致的“ 5.1”是一个字符串,而5.1(您可能希望使用)是一个浮点数。
如果不是这种情况,那么可能是导致错误的另一个可能原因(尽管我希望有另一个原因)是您传递的是列表而不是numpy数组,因此最好进行计算,因为您不能仅仅减去一个列表,另一个列表。