KNN算法实现

import matplotlib.pyplot as plt
import numpy as np
import operator# 已知分类的数据
x1 = np.array([3,2,1])
y1 = np.array([104,100,81])
x2 = np.array([101,99,98])
y2 = np.array([10,5,2])
scatter1 = plt.scatter(x1,y1,c='r')
scatter2 = plt.scatter(x2,y2,c='b')# 未知数据
x = np.array([18])
y = np.array([90])
scatter3 = plt.scatter(x,y,c='k')#画图例
plt.legend(handles=[scatter1,scatter2,scatter3],labels=['labelA','labelB','X'],loc='best')plt.show()

# 已知分类的数据
x_data = np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[81,2]])
y_data = np.array(['A','A','A','B','B','B'])
x_test = np.array([18,90])
# 计算样本数量
x_data_size = x_data.shape[0]
x_data_size
# 复制x_test
np.tile(x_test, (x_data_size,1))

# 计算x_test与每一个样本的差值
diffMat = np.tile(x_test, (x_data_size,1)) - x_data
diffMat

# 计算差值的平方
sqDiffMat = diffMat**2
sqDiffMat

# 求和
sqDistances = sqDiffMat.sum(axis=1)
sqDistances

# 开方
distances = sqDistances**0.5
distances

# 从小到大排序
sortedDistances = distances.argsort()
sortedDistances

classCount = {}
# 设置k
k = 5
for i in range(k):# 获取标签votelabel = y_data[sortedDistances[i]]# 统计标签数量classCount[votelabel] = classCount.get(votelabel,0) + 1
classCount

# 根据operator.itemgetter(1)-第1个值对classCount排序,然后再取倒序
sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1), reverse=True)
sortedClassCount

# 获取数量最多的标签
knnclass = sortedClassCount[0][0]
knnclass


KNN-iris

# 导入算法包以及数据集
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report,confusion_matrix
import operator
import random
def knn(x_test, x_data, y_data, k):# 计算样本数量x_data_size = x_data.shape[0]# 复制x_testnp.tile(x_test, (x_data_size,1))# 计算x_test与每一个样本的差值diffMat = np.tile(x_test, (x_data_size,1)) - x_data# 计算差值的平方sqDiffMat = diffMat**2# 求和sqDistances = sqDiffMat.sum(axis=1)# 开方distances = sqDistances**0.5# 从小到大排序sortedDistances = distances.argsort()classCount = {}for i in range(k):# 获取标签votelabel = y_data[sortedDistances[i]]# 统计标签数量classCount[votelabel] = classCount.get(votelabel,0) + 1# 根据operator.itemgetter(1)-第1个值对classCount排序,然后再取倒序sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1), reverse=True)# 获取数量最多的标签return sortedClassCount[0][0]
# 载入数据
iris = datasets.load_iris()
# x_train,x_test,y_train,y_test = train_test_split(iris.data, iris.target, test_size=0.2) #分割数据0.2为测试数据,0.8为训练数据#打乱数据
data_size = iris.data.shape[0]
index = [i for i in range(data_size)]
random.shuffle(index)
iris.data = iris.data[index]
iris.target = iris.target[index]#切分数据集
test_size = 40
x_train = iris.data[test_size:]
x_test =  iris.data[:test_size]
y_train = iris.target[test_size:]
y_test = iris.target[:test_size]predictions = []
for i in range(x_test.shape[0]):predictions.append(knn(x_test[i], x_train, y_train, 5))print(classification_report(y_test, predictions))

print(confusion_matrix(y_test,predictions))

sklearn-KNN-iris

# 导入算法包以及数据集
from sklearn import neighbors
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import random
# 载入数据
iris = datasets.load_iris()
print(iris)

# 打乱数据切分数据集
# x_train,x_test,y_train,y_test = train_test_split(iris.data, iris.target, test_size=0.2) #分割数据0.2为测试数据,0.8为训练数据#打乱数据
data_size = iris.data.shape[0]
index = [i for i in range(data_size)]
random.shuffle(index)
iris.data = iris.data[index]
iris.target = iris.target[index]#切分数据集
test_size = 40
x_train = iris.data[test_size:]
x_test =  iris.data[:test_size]
y_train = iris.target[test_size:]
y_test = iris.target[:test_size]# 构建模型
model = neighbors.KNeighborsClassifier(n_neighbors=3)
model.fit(x_train, y_train)
prediction = model.predict(x_test)print(classification_report(y_test, prediction))

机器学习基础-最近邻规则分类 KNN (K-Nearest Neighbor)-11相关推荐

  1. 麦子学院深度学习基础 —— 机器学习 —— 最近邻规则分类 KNN 算法

    最邻近规则分类(K-Nearest Neighbor)KNN 算法 1.综述: 1.1 Cover 和 Hart 在 1968 年提出了最初的近邻算法. 1.2 分类(Classification)算 ...

  2. 机器学习之深入理解K最近邻分类算法(K Nearest Neighbor)

    [机器学习]<机器学习实战>读书笔记及代码:第2章 - k-近邻算法 1.初识 K最近邻分类算法(K Nearest Neighbor)是著名的模式识别统计学方法,在机器学习分类算法中占有 ...

  3. K NEAREST NEIGHBOR 算法(knn)

    K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-M ...

  4. Python机器学习基础教程——鸢尾花分类

    Python机器学习基础教程--鸢尾花分类 初识数据 训练数据与测试数据 观察数据-数据可视化 模型的建立与评估--K近邻算法 她还有一些鸢尾花的测量数据,这些花之前已经被植物学专家鉴定为属于 set ...

  5. K Nearest Neighbor 算法

    K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-M ...

  6. k Nearest Neighbor Algorithm

    k Nearest Neighbor Algorithm k Nearest Neighbor(kNN) algorithm算法和k-Means算法一样,都是简单理解,但是实际效果出人意料的算法之一. ...

  7. 文献记录(part81)--Clustering-based k -nearest neighbor classification for large-scale data with ...

    学习笔记,仅供参考,有错必纠 文章目录 Clustering-based k -nearest neighbor classification for large-scale data with ne ...

  8. python分类器鸢尾花怎么写_python机器学习基础教程-鸢尾花分类

    一: 环境准备: 1.导入的库: importnumpy as npimportmatplotlib.pyplot as pltimportpandas as pdimport mglearn 2.导 ...

  9. kNN算法(k近邻算法,k Nearest Neighbor)

    主要内容: 1.认识kNN算法 2.kNN算法原理 3.应用举例 4.kNN改进方法 1.认识knn算法 "看一个人怎么样,看他身边的朋友什么样就知道了",kNN算法即寻找最近的K ...

最新文章

  1. 跟着柴毛毛学Spring(3)——简化Bean的配置
  2. Druid 连接泄漏监测
  3. Template Code 无法使用 this.Host 报错
  4. sentinel 端口_Sentinel原理:控制台是如何获取到实时数据的
  5. Spring @ComponentScan
  6. python实现链表的删除_删除链表中的元素,但是只能使用一个指针
  7. 《基 于 N Gram 的无词典 中文分词算法》 n-gram读感
  8. 给工具箱中的控件添加图标
  9. mysql-front服务器_mysql-front远程连接自己linux服务器上的mysql服务器
  10. VvvebJs可视化前端设计开发工具
  11. 一元享移动怎么样_移动推出头条爽卡:9元每月享免流特权,流量1元800M每天
  12. android通讯录项目分析,Android 通讯录展示
  13. SQL1054错误Unknown column .... in on clause
  14. 数论作业 —— 同余理论
  15. duck typing java_Duck typing
  16. 恭喜清华姚班校友马腾宇等18名华人科学家获得2021年斯隆奖学金!
  17. 【iOS】Web Color 的 OC 实现
  18. youtobe和youtobeGo在不同国家码下的预置
  19. 2018秋季前端面试问题总结
  20. 初学Python-简单的,在图片上加png(logo)

热门文章

  1. 古月居ros课件_【古月居】ROS2探索总结系列
  2. SQL中的left join
  3. kali mysql停止服务器_第 2 篇 MySQL 安装
  4. 【Chocolatey】查找包
  5. u盘启动 联想一体机_关于联想扬天B41-30-NTZ(L)使用U盘重装Win10系统的详细步骤
  6. python分位数回归模型_如何理解分位数回归风险价值 (VaR) 模型?
  7. python如何使用session和cookie_Python爬虫番外篇之Cookie和Session-阿里云开发者社区
  8. java主要开发哪几类程序,开发与运行Java程序需要经过的主要步骤为:(多选)
  9. c# 再次尝试 连接失败_和平精英ios充值失败该怎么办
  10. php json csv,比JSON更简单,随便记数据的CSV介绍,以及PHP解析方法-csv文件怎么打开...