knn算法实例(python)
来源:互联网 发布:华为软件视频会议 编辑:程序博客网 时间:2024/06/07 12:27
参考地址(里面有解释和原数据)
import csvimport randomimport mathimport operatordef loadDataset(filename,split,trainingSet=[],testSet=[]): # 注意这儿加上'b'模式会出错,因为csv文件与普通文件不一样 with open(filename, 'r') as csvfile: lines = csv.reader(csvfile) dataset = list(lines) for x in range(len(dataset)-1): for y in range(4): dataset[x][y] = float(dataset[x][y]) if random.random() < split: trainingSet.append(dataset[x]) else: testSet.append(dataset[x])def euclideanDistance(instance1, instance2, length): distance = 0 for x in range(length): distance += pow(instance1[x] - instance2[x], 2) return math.sqrt(distance)# test for function euclideanDistance# data1 = [2, 2, 2, 'a']# data2 = [4, 4, 4, 'b']# distance = euclideanDistance(data1, data2, 3)# print(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)) # print(distances) distances.sort(key=operator.itemgetter(1)) # print(distances) neighbors = [] for x in range(k): neighbors.append(distances[x][0]) return neighbors# test for function getNeighbors# trainSet = [[2, 2, 2, 'a'], [4, 4, 4, 'b'],[4.5, 4.5, 4.5, 'c']]# testInstance = [5, 5, 5]# k = 1# neighbors = getNeighbors(trainSet, testInstance, 1)# print(neighbors)def getResponse(neighbors): classVotes = {} for x in range(len(neighbors)): response = neighbors[x][-1] if response in classVotes: classVotes[response] += 1 else: classVotes[response] = 1 # py3.+使用 items() 与2.+的 iteritems() 不同 sortedVotes = sorted(classVotes.items(), key=operator.itemgetter(1), reverse=True) return sortedVotes[0][0]# test for function getResponse# neighbors = [[1, 1, 1, 'a'], [2, 2, 2, 'a'], [3, 3, 3, 'b']]# response = getResponse(neighbors)# print(response)def getAccuracy(testSet, predictions): correct = 0 for x in range(len(testSet)): if testSet[x][-1] == predictions[x]: correct += 1 return (correct/float(len(testSet)))*100.0def main(): # prepare data trainingSet = [] testSet = [] loadDataset('f:/iris.csv', 0.66, trainingSet, testSet) print("Train" + repr(len(trainingSet))) print("Test" + repr(len(testSet))) # print(trainingSet) # generate predictions predictions = [] k = 3 for x in range(len(testSet)): neighbors = getNeighbors(trainingSet, testSet[x], k) # print(neighbors) result = getResponse(neighbors) predictions.append(result) print('> predicted=' + repr(result) + ', actual=' + repr(testSet[x][-1])) accuraty = getAccuracy(testSet, predictions) print('Accuracy: ' + repr(accuraty) + '%')main()
阅读全文
0 0
- knn算法实例(python)
- KNN算法图解(MATLAB实例)
- KNN算法实例
- (1)kNN算法_手写识别实例——基于Python和NumPy函数库
- KNN算法的Python实现及其应用实例
- [机器学习]kNN算法python实现(实例:数字识别)
- 4.2KNN算法实例2--python机器学习
- KNN算法原理(python代码实现)
- 机器学习-KNN算法(python)
- python机器学习(2:KNN算法)
- K-近邻算法(kNN)python实现
- python kNN算法
- Python实现KNN算法
- KNN算法Python实现
- python实现knn算法
- Python实现KNN算法
- KNN 算法 python 实现
- Python KNN算法
- 删除solr索引
- 疯狂java笔记-JDBC常用接口和类
- Apache
- 牛客练习赛6 A 【二分】
- TestNG入门教程-11-如何通过testng.xml来实现设置依赖关系
- knn算法实例(python)
- python多线程的两种实现方式
- 剑指offer------反转链表
- 手动部署 ceph 环境说明 (luminous 版)
- c++中new与delete的重载--(boolan)
- 排序算法模版实现
- session的创建
- [noip 2017]普及组 T3
- 形象易懂讲解算法I——小波变换