Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 邻域数KNN算法_Algorithm_Matlab_Knn - Fatal编程技术网

Algorithm 邻域数KNN算法

Algorithm 邻域数KNN算法,algorithm,matlab,knn,Algorithm,Matlab,Knn,我在matlab中应用KNN算法对手写数字进行分类。这些数字最初是矢量格式的8*8,并拉伸以形成矢量1*64。所以每次我比较第一个数字和所有其他数据集(相当大),然后第二个数字和其他数据集等等。现在我的问题是,1个邻居不总是最好的选择吗?既然我使用的是欧几里德距离,(我选择了更近的一个),既然我得到了最接近的数字,为什么还要选择2到3个邻居呢 谢谢您必须考虑噪音。假设您的一些分类示例可能分类错误,或者其中一个与其他示例非常接近,这是不同的,但实际上只是一个“小故障”。在这些情况下,根据这个偏离轨

我在matlab中应用KNN算法对手写数字进行分类。这些数字最初是矢量格式的8*8,并拉伸以形成矢量1*64。所以每次我比较第一个数字和所有其他数据集(相当大),然后第二个数字和其他数据集等等。现在我的问题是,1个邻居不总是最好的选择吗?既然我使用的是欧几里德距离,(我选择了更近的一个),既然我得到了最接近的数字,为什么还要选择2到3个邻居呢


谢谢

您必须考虑噪音。假设您的一些分类示例可能分类错误,或者其中一个与其他示例非常接近,这是不同的,但实际上只是一个“小故障”。在这些情况下,根据这个偏离轨道的示例进行分类可能会导致错误

根据个人经验,通常k=3/5/7时会获得最佳结果,但这取决于实例

如果您想获得最佳性能,应该使用top,为您的特定实例选择最佳的
k


此外,对于KNN,通常只使用奇数作为
k
,以避免“绘制”

演示ML KNN算法的简单程序

Knn算法的工作原理是用一组数据训练计算机,并传递输入以获得预期的输出。一个家长想训练他的孩子去识别“兔子”的图片,在这里父母会显示一张兔子的照片,如果照片是兔子的话,我们会喊兔子,否则我们会继续前进,这样在这个方法中,通过给一组数据输入一个监控来得到预期的输出

from sklearn.neigbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
df=pd.read_csv("D:\\heart.csv")
new_data{"data":np.array(df[["age","gende","cp","trestbps","chol","fbs","restecg","thalach","exang","oldpeak","slope","ca","thal"]],ndmin=2),"target":np.array(df["target"]),"target_names":np.array(["No_problem","Problem"])}
X_train,X_test,Y_train,Y_test=train_test_split(new_data["data"],new_data["target"],random_state=0)
kn=KNeighborsClassifier(n_neighbors=3)
kn.fit(X_train,Y_train)
x_new=np.array([[71,0,0,112,149,0,1,125,0,1.6,1,0,2]])
res=kn.predict(x_new)
print("The predicted k value is : {}\n".format(res))
print("The predicted names is : {}\n".format(new_data["target_names"][res])
print("Score is : {:.2f}".format(kn.score(X_train,Y_train)))

假设你有一个7写错了,看起来和你正在检查的1一模一样。你得到了错误的结果。现在,在5场最好的比赛中,有多大可能出现7秒多于1秒的情况?伙计们,获得90.21%的成功是正常的吗?在一个1593位的数据集上?@TestTest我不是图像识别专家,我通常将ML用于其他目的,但90.2%对我来说很好。伙计们,获得90.21%的成功是正常的吗?在1593位数据集上?