KNN算法中的K有多重要

您所在的位置:网站首页 最近邻分类器算法 KNN算法中的K有多重要

KNN算法中的K有多重要

#KNN算法中的K有多重要| 来源: 网络整理| 查看: 265

0 分享至

用微信扫码二维码

分享至好友和朋友圈

K-最近邻(KNN)是一种有监督的机器学习算法,可用于解决分类和回归问题。它基于一个非常简单的想法,数据点的值由它周围的数据点决定。考虑的数据点数量由k值确定。因此,k值是算法的核心。

KNN分类器根据多数表决原则确定数据点的类别。如果k设置为5,则检查5个最近点的类别。也可以根据多数类进行回归预测,同样,KNN回归取5个最近点的平均值。

在本文中,我们将研究k值对于分类任务的重要性。

使用Scikit learn的make_classification函数创建一个示例分类数据集。

importnumpyasnpimportpandasaspdfromsklearn.datasetsimportmake_classificationX,y=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_classes=2,class_sep=0.8)

数据集包含属于2个类的1000个样本。还可以创建数据点的散点图(即样本)。

importmatplotlib.pyplotaspltplt.figure(figsize=(12,8))plt.scatter(X[:,0],X[:,1],c=y)

选择最优k值是建立一个合理、精确的knn模型的必要条件。

如果k值太低,则模型会变得过于具体,不能很好地泛化。它对噪音也很敏感。该模型在训练组上实现了很高的精度,但对于新的、以前看不到的数据点,该模型的预测能力较差。因此,我们很可能最终得到一个过拟合的模型。如果k选择得太大,模型就会变得过于泛化,无法准确预测训练和测试集中的数据点。这种情况被称为欠拟合。

我们现在创建两个不同的knn模型,k值为1和50。然后创建预测的散点图,以查看差异。

第一步是将数据集拆分为测试子集。

fromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2)

第一个模型是k=1的knn模型。

fromsklearn.neighborsimportKNeighborsClassifierknn1=KNeighborsClassifier(n_neighbors=1)knn1.fit(X_train,y_train)predict1=knn1.predict(X_test)plt.figure(figsize=(12,8))plt.title("KNNwithk=1",fontsize=16)plt.scatter(X_test[:,0],X_test[:,1],c=predict1)

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

/阅读下一篇/ 返回网易首页 下载网易新闻客户端


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3