最后更新:2020-04-30 11:20:16 手机定位技术交流文章

在本文中,我将实现K最近邻(KNN),这是一个可以用于分类和回归的机器学习算法。它属于监督学习算法的范畴。它对标记的数据集进行操作,并预测测试数据的类别(分类)或值(回归)。
我将使用NumPy来实现它和其他库来可视化数据。
我们首先导入库和函数:
因为我们处理的是高维向量,所以它将被用于多维数组的数值计算。分类:我们将使用它来创建我们的分类数据集。我们可以决定所需的类和特征的数量,是否对样本进行聚类等等。在KNN算法中,我们需要一个函数来计算训练数据点和我们想要分类的数据之间的距离。在这里,我选择了欧几里德距离,因为它在机器学习应用中被广泛使用。您可以尝试使用其他距离度量,如曼哈顿距离、切比雪夫距离等。
定义邻居(X _测试,返回距离=假):n _邻居= 5距离=
现在是时候测试我们的knn实现了。
预测(X检验)
如预期的那样,预测函数输出测试数据的预测类标签。
分数(X测试,y测试)#0.99看起来我们的实现做得很好,因为它的高准确性。
k近邻的类实现
将numpy导入为np类knealerestneighbors():def _ _ init _ _(self,X_train,y_train,n_neighbors=5,权重='uniform') : self。X _ train = X _ train self . y _ train = y _ train self . n _ neighbors = n _ neighbors self . weights = weights self . n _ class = 3 def欧几里德_distance(self,a,b):return NP . sqrt(NP . sum((a-b)* * 2,axis=1)) def kneighbors(self,X_test,return_distance=False): dist =
我们自己的实现和sklearn的实现的准确性似乎基本相同。
本文由 在线网速测试 整理编辑,转载请注明出处。