gpt4 book ai didi

python - 尝试用 python 实现 KNN 算法时出现 TypeError

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:10:30 24 4
gpt4 key购买 nike

import csv  
import random
import math
import operator



def loadDataset(filename,trainingSet=[],testSet=[]):
with open(filename, 'rt') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
z = len(dataset)-1


for x in range(len(dataset)-2):
for y in range(8,9):
dataset[x][y] = float (dataset[x][y])
trainingSet.append(dataset[x])


for y in range(8,9):
dataset[z][y] = float (dataset[z][y])
testSet.append(dataset[z])


def euclideanDistance(instance1, instance2):
distance = 0
X= (instance1[9] - instance2[9]) +(instance1[8] - instance2[8])
distance += pow(X, 2)
return math.sqrt(distance)

def getNeighbors(trainingSet, testInstance, k):
distances = []
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x])
distances.append((trainingSet[x], dist))
distances.sort(key=operator.itemgetter(1))
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors

def main():
trainingSet=[]
testSet=[]
loadDataset('G:\ABCD.csv', trainingSet, testSet)
print ('Train set: ' + repr(len(trainingSet)))
print ('Test set: ' + repr(len(testSet)))
k = 4
neighbors = getNeighbors(trainingSet, testSet[0], k)
a=(neighbors[0][1])
print('Best Neighbor is: ' + a)

main()

Error I am getting Dataset Screenshot

我基本上在这个程序中执行代码时遇到 TypeError 我试图找到从测试点到给定数据集中每个点的欧几里德距离,然后在排序后尝试获得距离最小的邻居。

最佳答案

错误表明您正试图从一个字符串中减去一个字符串(euclidianDistance 函数中的第 22 行)

您需要将两个坐标解析为数字才能将它们相减。 float功能将能够做到这一点。

示例 - 您正在使用 instance1[9],它是一个表示 float 的字符串,因此 float(instance1[9]) 应该给您一个数字.

如果您仍在挣扎,请发表评论,我会向您展示您需要进行的更新。

关于python - 尝试用 python 实现 KNN 算法时出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50029031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com