首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试用TypeError实现KNN算法

尝试用TypeError实现KNN算法
EN

Stack Overflow用户
提问于 2018-04-26 02:25:45
回答 1查看 49关注 0票数 0
代码语言:javascript
复制
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,基本上在这个程序中,我试图找到从一个测试点到给定数据集中每个点的欧几里得距离,然后在排序后,试图获得距离最小的邻居。

EN

回答 1

Stack Overflow用户

发布于 2018-04-26 02:32:32

错误提示您正在尝试从字符串中减去一个字符串( euclidianDistance函数中的第22行)

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

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

如果你还在努力,请留下评论,我会向你展示你需要进行的更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50029031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档