python实现简单kNN

注释写得很清楚了,熟悉了一下python的一些基本语法和numpy中的一些操作。

 1 from numpy import *
 2 import operator
 3
 4 def createDataSet():
 5     # generate the samples and labels.
 6     group = array([[1.0,1.1], [1.0,1.0], [0,0], [0,0.1]])
 7     labels = [‘A‘, ‘A‘, ‘B‘, ‘B‘]
 8     print group
 9     return group, labels
10
11 def classify(inX, dataSet, labels, k):
12     dataSetSize = dataSet.shape[0]                  # get the size of one dimension.
13                                 # calculate the distance between inX and samples.
14     diffMat = tile(inX, (dataSetSize, 1)) - dataSet # repeat inX to generate a dataSetSize * 1 matrix. Then subtract the corresponding number in dataSet.
15     sqDiffMat = diffMat ** 2                        # get the square of each D-value.
16     sqDistances = sqDiffMat.sum(axis=1)             # get the sum of each pair of numbers.
17     distances = sqDistances ** 0.5                  # get the square root of each sum. Those are distances between inX and samples.
18
19     sortedDistIndicies = distances.argsort()        # return the index if ‘distances‘ is sorted.
20     classCount = {}                                 # make a directory {label:display times}.
21     for i in range(k):                                                  # get first kth nearest samples.
22         voteIlabel = labels[sortedDistIndicies[i]]                      # get the ith‘s label.
23         classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1      # count the number of this label.
24     sortedClassCount = sorted(classCount.iteritems(),                   # get the most frequent label.
25                               key=operator.itemgetter(1), reverse=True)
26     return sortedClassCount[0][0]                                       # return the most frequent label.
27
28 dataSet, labels = createDataSet()
29 print classify([-100.0,-100.1], dataSet, labels, 1)
时间: 2024-10-15 15:43:32

python实现简单kNN的相关文章

python实现简单knn算法

原理:计算当前点(无label,一般为测试集)和其他每个点(有label,一般为训练集)的距离并升序排序,选取k个最小距离的点,根据这k个点对应的类别进行投票,票数最多的类别的即为该点所对应的类别.代码实现(数据集采用的是iris): 1 import numpy as np 2 from sklearn.datasets import load_iris 3 from sklearn.model_selection import train_test_split 4 from sklearn

Python实战之KNN实现

Python实战之KNN实现 用Python来实现K近邻分类算法(KNN)已经是一个老生常谈的问题,网上也已经有诸多资料,不过这里我还是决定记录一下自己的学习心得. 1.配置numpy库 numpy库是Python用于矩阵运算的第三方库,大多数数学运算都会依赖这个库来进行,关于numpy库的配置参见:Python配置第三方库Numpy和matplotlib的曲折之路,配置完成后将numpy库整体导入到当前工程中. 2.准备训练样本 这里简单的构造四个点并配以对应标签作为KNN的训练样本: # =

python中简单文件的输入三种方式

最近在自学python,简单的总结了一下文件的输入的方式. 1. f=open("foo.txt") line=f.readline() while line: print(line,end='') line=f.readline() f.close() 2. for line in open("foo.txt"): print(line,end='') 3. f=open("foo.txt") lines=f.readlines() for l

Python实现简单的猜数字游戏

Python实现简单的猜数字游戏,具体如下: 随机生成一个1-10之间的数字,让用户来猜,当猜错时,会提示猜的数字是大还是小了,直到用户猜对为止. import random secret = random.randint(1,10) #print(secret) print('------猜数字游戏!-----') guess = 0 while guess != secret: temp = input('猜数字游戏开始,请输入数字:') guess = int(temp) if guess

用 python实现简单EXCEL数据统计

任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_workbook('demo.xlsx') #打开excel数据表 SheetList = workbook.sheet_names()#读取电子表到列表 SheetName = SheetList[0]#读取第一个电子表的名称 Sheet1 = workbook.sheet_by_index(0)

python实现简单的循环购物车小功能

python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s", 5000), ("book python", 81), ("iwach", 3200), ("电视机", 2200) ] def zero(name): if len(name) == 0: print("\033[31;1m您的输

python编写简单的html登陆页面(3)

1  在python编写简单的html登陆页面(2)的基础上在延伸一下: 可以将静态分配数据,建立表格,存放学生信息 2  加载到静态数据 3  html的编写直接在表格里添加一组数据就行了 4  VS Code上面跟前面的后台类似,添加一个content再链接到html就可以了 @app.route('/content')def content(): return render_template('content.html') return 'content.....'

python编写简单的html登陆页面(2)

1  在python编写简单的html登陆页面(1)的基础上在延伸一下: 可以将动态分配数据,实现页面跳转功能: 2  跳转到新的页面:return render_template('home1.html') 3  后台代码如下 4  前端html:

教学项目之-通过Python实现简单的计算器

教学项目之-通过Python实现简单的计算器 计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2