广告关键词有哪些,关键词优化公司,dede网站地图不显示文章列表,如何做镜像别人网站文章目录 1.KNN算法原理介绍2.KNN分类决策原则3.KNN度量距离介绍3.1.闵可夫斯基距离3.2.曼哈顿距离3.3.欧式距离 4.KNN分类算法实现5.KNN分类算法效果6.参考文章与致谢 1.KNN算法原理介绍
KNN#xff08;K-Nearest Neighbor#xff09;工作原理#xff1a;
在一个存在标签的… 文章目录 1.KNN算法原理介绍2.KNN分类决策原则3.KNN度量距离介绍3.1.闵可夫斯基距离3.2.曼哈顿距离3.3.欧式距离 4.KNN分类算法实现5.KNN分类算法效果6.参考文章与致谢 1.KNN算法原理介绍
KNNK-Nearest Neighbor工作原理
在一个存在标签的数据集中当我们输入一个新的没有标签的样本时候KNN算法的任务就是将该样本分类即给定其对应的样本标签。
输入没有标签的数据后将新数据中的每个特征与样本集中数据对应的特征进行比较提取出样本集中特征最相似数据最近邻的分类标签。
一般来说我们选取的是新样本的最近的k个样本进行投票决策这就是KNN算法中k的意思
通常k是不大于20的整数。最后选择k个最相似数据中出现次数最多的分类作为新数据的分类。2.KNN分类决策原则 KNN算法一般是用多数表决方法即由输入实例的K个邻近的多数类决定输入实例的类。这种思想也是经验风险最小化的结果。 训练样本为 ( x i , y i ) (x_{i} ,y_{i}) (xi,yi)。当输入实例为 x标记为c N k ( x ) N_{_k}(x) Nk(x)是输入实例x的k近邻训练样本集。我们定义训练误差率是K近邻训练样本标记与输入标记不一致的比例误差率表示为 1 k ∑ x i ∈ N k ( x ) I ( y i ≠ c j ) 1 − 1 k ∑ x i ∈ N k ( x ) I ( y i c j ) \frac1k\sum_{x_i\in N_{k}(x)}I(y_i\neq c_j)1-\frac1k\sum_{x_i\in N_{k}(x)}I(y_ic_j)\quad k1xi∈Nk(x)∑I(yicj)1−k1xi∈Nk(x)∑I(yicj) 因此要使误差率最小化即经验风险最小就要使 1 k ∑ x i ∈ N k ( x ) I ( y i c j ) \frac{1}{k}\sum_{x_{i}\in N_{k}(x)}I(y_{i}c_{j}) k1∑xi∈Nk(x)I(yicj)尽可能大即K近邻的标记值尽可能的与输入标记一致所以多数表决规则等价于经验风险最小化。
3.KNN度量距离介绍
3.1.闵可夫斯基距离 闵可夫斯基距离表示如下所示: D ( x , y ) ∣ x 1 − y 1 ∣ p ∣ x 2 − y 2 ∣ p . . . ∣ x n − y n ∣ p p ∑ i 1 n ∣ x i − y i ∣ p p \begin{aligned} D(x,y) \sqrt[p]{\mid x_1-y_1\mid^p\mid x_2-y_2\mid^p...\mid x_n-y_n\mid^p} \\ \sqrt[p]{\sum_{i1}^{n}\mid x_{i}-y_{i}\mid^{p}} \end{aligned} D(x,y)p∣x1−y1∣p∣x2−y2∣p...∣xn−yn∣p pi1∑n∣xi−yi∣p
3.2.曼哈顿距离 曼哈顿距离如下所示 D ( x , y ) ∣ x 1 − y 1 ∣ ∣ x 2 − y 2 ∣ . . . . ∣ x n − y n ∣ ∑ i 1 n ∣ x i − y i ∣ \begin{aligned} D(x,y) \mid x_1-y_1\mid\mid x_2-y_2\mid....\mid x_n-y_n\mid \\ \sum_{i1}^{n}\mid x_{i}-y_{i}\mid \end{aligned} D(x,y)∣x1−y1∣∣x2−y2∣....∣xn−yn∣i1∑n∣xi−yi∣
3.3.欧式距离 欧式距离如下所示 D ( x , y ) ( x 1 − y 1 ) 2 ( x 2 − y 2 ) 2 . . . ( x n − y n ) 2 ∑ i 1 n ( x i − y i ) 2 \begin{aligned} D(x,y) \sqrt{(x_1-y_1)^2(x_2-y_2)^2...(x_n-y_n)^2} \\ \sqrt{\sum_{i1}^{n}(x_{i}-y_{i})^{2}} \end{aligned} D(x,y)(x1−y1)2(x2−y2)2...(xn−yn)2 i1∑n(xi−yi)2
4.KNN分类算法实现
from matplotlib.colors import ListedColormap
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine# 支持中文
plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签
plt.rcParams[axes.unicode_minus] False # 用来正常显示负号#加载wine数据集
data load_wine()
X data.data[:, :2] #取前两列内容作为Alcohol和苹果酸作为样本
y data.target#划分数据集和测试集
X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)#创建KNN分类器设置k6
knn_classifier KNeighborsClassifier(n_neighbors10, metriceuclidean)#以欧式距离作为度量距离
knn_classifier.fit(X_train, y_train)# 预测测试集
y_pred knn_classifier.predict(X_test)# 计算准确率
accuracy accuracy_score(y_test, y_pred)
print(Accuracy:, accuracy)Accuracy: 0.88888888888888885.KNN分类算法效果
#可视化绘图
h .02
x_min, x_max X[:, 0].min() - 1, X[:, 0].max() 1
y_min, y_max X[:, 1].min() - 1, X[:, 1].max() 1
xx, yy np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))# 获取预测结果
Z knn_classifier.predict(np.c_[xx.ravel(), yy.ravel()])
Z Z.reshape(xx.shape)# 创建颜色地图
cmap_background ListedColormap([#FFAAAA, #AAAAFF, #AAFFAA])
cmap_points ListedColormap([#FF0000, #0000FF, #00FF00])# 可视化结果
plt.pcolormesh(xx, yy, Z, cmapcmap_background)
plt.scatter(X[:, 0], X[:, 1], cy, cmapcmap_points,edgecolork, s20)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title(KNN Classification on Wine Dataset)
plt.xlabel(Alcohol)
plt.ylabel(1Malic acid)
plt.show()6.参考文章与致谢
本章内容的完成离不开大佬文章的启发和帮助在这里列出名单如果对于内容还有不懂的可以移步对应的文章进行进一步的理解分析。
1.KNN算法:https://blog.csdn.net/qq_42722197/article/details/123196332?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169665324816800182743993%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257Drequest_id169665324816800182743993biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~all~top_click~default-2-123196332-null-null.142^v95^chatgptT3_1utm_termknn%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86spm1018.2226.3001.4187
如果大家这这篇blog中有什么不明白的可以去他的专栏里面看看内容非常全面应该能够有比较好的解答。
在文章的最后再次表达由衷的感谢