标签:算法 cat marker 经典算法 k最近邻 元素 数组 cti 分类
邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。
数据预备,这里使用random函数生成10*2的矩阵作为两列特征值,1个10个元素数组作为类别值
import numpy as np import matplotlib.pyplot as plt x_train = np.random.rand(10,2)*8 y_train = np.random.randint(0,2,10) x = np.array([3,4]) k=3 plt.scatter(x_train[y_train==1,0],x_train[y_train==1,1],color="red") plt.scatter(x_train[y_train==0,0],x_train[y_train==0,1],color="green") plt.scatter(x[0],x[1],marker=‘+‘,color="blue") plt.show()
绿点为类别0,红点为类别1
X_train = np.array(x_train) Y_train = np.array(y_train) from math import sqrt distances = [] for x_train in X_train: d = sqrt(np.sum((x-x_train)**2)) distances.append(d) distances = [sqrt(np.sum((x-x_train)**2)) for x_train in X_train] argindex = np.argsort(distances) from collections import Counter topK_Y = [Y_train[i] for i in argindex[:k]] votes = Counter(topK_Y) votes.most_common(1)[0][0]
标签:算法 cat marker 经典算法 k最近邻 元素 数组 cti 分类
原文地址:https://www.cnblogs.com/itman123/p/11583747.html