# coding:utf-8

from collections import defaultdict

import numpy as np

from numpy import *

class knn:

def __init__(self):

pass

##给出训练数据以及对应的类别

def createDataSet(self):

group = array([[1.0, 2.0], [1.2, 0.1], [0.1, 1.4], [0.3, 3.5]])

labels = ['A', 'A', 'B', 'B']

return group, labels

###通过KNN进行分类

def classify(self, input, data_set, labels, k):

# 将input扩展成 n行的举证

in_matrix = tile(input, (len(data_set), 1))

# 输入举证和数据集做差 (x1-x2)

diff = in_matrix - data_set

# (x1-x2)**2

diff = diff ** 2

# (x1-x2)** 2 +(y1-y2)**2

sm = np.sum(diff, axis=1)

sm = np.sqrt(sm)

# 将距离排序

si = np.argsort(sm)

label_dict = defaultdict(int)

max_num = 0

target_lb = None

for i in range(k):

index = si[i]

lb = labels[index]

label_dict[lb] += 1

if label_dict[lb] > max_num:

max_num = label_dict[lb]

target_lb = lb

return target_lb

def norm_data_set(self, data_set):

'''

将数据集归一化

:param data_set:

:return:

'''

# 最大和最小的行向量

val_min = np.min(data_set, 0)

val_max = np.max(data_set, 0)

# 数据变动范围向量

val_range = val_max - val_min

row_num = data_set.shape[0]

matrix_range = tile(val_range, (row_num, 1))

matrix_sp = data_set - tile(val_min, (row_num, 1))

matrix_normal = matrix_sp / matrix_range

return matrix_normal

def norm_vec(self, vec, data_set):

'''

将被分类的向量归一化

:param vec:

:param data_set:

:return:

'''

data_set = np.vstack((data_set, vec))

# 最大和最小的行向量

val_min = np.min(data_set, 0)

val_max = np.max(data_set, 0)

# 数据变动范围向量

val_range = val_max - val_min

span = vec - val_min

return span / val_range

if __name__ == '__main__':

k = knn()

g, l = k.createDataSet()

ng = k.norm_data_set(g)

vec = [0.3, 3.2]

n_vec = k.norm_vec(vec, g)

b = k.classify(n_vec, ng, l, 4)

python实现knn分类_knn分类算法底层实现(python)相关推荐

  1. python数据挖掘 百度云,常用数据挖掘算法总结及Python实现高清完整版PDF_python数据挖掘,python数据分析常用算法...

    常用数据挖掘算法总结及Python实现 高清完整版PDF 第一部分数据挖掘与机器学习数学基础 第一章机器学习的统计基础 1.1概率论 l概率论基本概念 样本空间 我们将随机实验E的一切可能基本结果组成 ...

  2. python二分法查找程序_基础算法——查找(二分法)(python)

    基础算法--查找(二分法)(python).二分查找法(BinarySearchST)应用十分广泛,是必须要掌握的查找方法.适用对象是有序数组.具有最优的查找效率和空间需求,能够进行有序相关的操作.但 ...

  3. python实验室公众号_计算机算法与程序设计(python),中国大学MOOC(慕课)答案公众号搜题...

    工业上常利用反应 3Cl2 + 6KOH(热) → KClO3 + 5KCl + 3H2O 制取KClO3(混有KClO).实验室模拟上述制备:在含溶 (1)黄铁矿(FeS2)是制造硫酸的矿物原料,反 ...

  4. 利用python语言实现分类算法_使用python实现kNN分类算法

    k-近邻算法是基本的机器学习算法,算法的原理非常简单: 输入样本数据后,计算输入样本和参考样本之间的距离,找出离输入样本距离最近的k个样本,找出这k个样本中出现频率最高的类标签作为输入样本的类标签,很 ...

  5. 用python实现KNN算法对鸢尾花的分类

    一.KNN算法 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接 ...

  6. python实现KNN算法在电影分类中的应用

    使用python实现KNN算法在电影分类中的应用 代码如下: import numpy as np import operator""" 使用KNN算法对电影进行分类 K ...

  7. Python KNN K近邻分类

    Python KNN K近邻分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 KNN简介 相关概念见下: 对于给定的观测来 ...

  8. 「11」Python实战篇:利用KNN进行电影分类

    上一期文章:「10」民主投票法--KNN的秘密 中,我们剖析了KNN算法的本质和特点.局限.这里我们用python代码进行KNN的实现.第1部分是KNN的基础算法步骤,第2部分是一个电影分类的实战项目 ...

  9. knn算法python代码_KNN算法原理(python代码实现)

    kNN(k-nearest neighbor algorithm)算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性 ...

最新文章

  1. pwn学习总结(一) —— 常用命令
  2. jQuery 插件-(初体验一)
  3. Hadoop2调优(一):如何控制job的map任务和reduce任务的数量
  4. jMatter:提高开发速度10倍!
  5. 网络安全实验报告 第一章
  6. python小游戏贪吃蛇源码下载
  7. 三星5G手机全球销量200万台:年底将翻番
  8. Ref和Out关键字的区别
  9. Pandas 数据处理三板斧,你会几板?
  10. 如何使用Tuxera NTFS for Mac禁用特定NTFS分区
  11. C# 泛型LIST转DataTable
  12. 干货分享|Compare essay的写作方法
  13. SIFT算法特征描述子构建---关键点定位原理及代码
  14. PDPS软件:工装夹具机械装置运动操作的创建方法
  15. 使用Windows Server 2003轻松建立森林间信任
  16. 就是这35个人,率先入选了《共识算法高阶课》第一期!
  17. 使用 arduino nano DIY小台灯
  18. Android 开机向导(没有优先启动问题)
  19. 局域网内QQ代理设置
  20. windows虚拟主机控制面板哪个比较好用?

热门文章

  1. 95-190-742-源码-WindowFunction-AllWindowFunction
  2. 【impala】Impala中的invalidate metadata和refresh
  3. ANTLR-语法树遍历机制
  4. Eclipse下,LogCat(deprecated),显示不了内容,或者全部都是Unknown
  5. RabbitMQ架构模型(一)
  6. 字节跳动面试流程和考点都在这儿
  7. Flink从入门到入土
  8. MySQLi学习笔记 :二(  排序查询,聚合函数,分组查询,分页查询) 约束     多表之间的关系   范式     数据库的备份和还原
  9. linux sshd进程起不来,linux sshd服务异常
  10. 【Echarts底层相关】