学习kNN算法的感受(二)

本文详细介绍了如何使用Python实现kNN算法,并通过实例演示了如何利用该算法进行点的分类操作。首先,我们将代码保存为kNN.py文件,并运行生成Python模块。然后,导入模块并使用`kNN.classify0`函数对指定坐标点所属类别进行预测。通过实例展示了如何获取数据集、应用kNN算法,并得到分类结果。

1):先将上述代码保存为kNN.py

2):再在IDLE下的run菜单下run一下,将其生成python模块

3): import  kNN(因为上一步已经生成knn模块)

4): kNN.classify0([0,0],group,labels,3) (讨论[0,0]点属于哪一个类)

   注:其中【0,0】可以随意换

即【】内的坐标就是我们要判断的点的坐标:

>>> kNN.classify0([0,0],group,labels,3)

'B'

>>> kNN.classify0([0,1],group,labels,3)

'B'

>>> kNN.classify0([0.6,0.6],group,labels,3)

'A'

上述步骤缺少了一步:没有生成KNN模板中对应的变量,即变量只是在模板中声明了一下而没有在shell交互时真正的生成,故修改上述shell命令如下:

1):先将上述代码保存为kNN.py

2):再在IDLE下的run菜单下run一下,将其生成python模块

3): import  kNN(因为上一步已经生成knn模块)

>>> group,labels=kNN.createDataSet()

>>> group

array([[ 1. ,  1.1],

       [ 1. ,  1. ],

       [ 0. ,  0. ],

       [ 0. ,  0.1]])

>>> labels

['A', 'A', 'B', 'B']

>>> kNN.classify0([0,0],group,labels,3)

'B'

>>>

4): kNN.classify0([0,0],group,labels,3) (讨论[0,0]点属于哪一个类)

其他不变即可,哈哈哈。。。

### 实现KNN算法对鸢尾花数据集进行分类 #### 加载并准备数据 为了使用KNN算法对鸢尾花数据集进行分类,首先需要加载数据集。`scikit-learn`库提供了方便的方法来获取这个经典的数据集。 ```python from sklearn.datasets import load_iris import numpy as np # 加载鸢尾花数据集 iris = load_iris() print(f"数据集的键: {iris.keys()}") # 显示数据集中包含的信息类别[^4] # 查看特征名称和目标名称 print(f"特征名: {iris['feature_names']}") print(f"标记名: {iris['target_names']}") # 数据形状 print(f"数据维度: {iris.data.shape}") # 总共有150条记录,每条记录有4个属性[^3] ``` 这段代码展示了如何导入必要的模块以及加载鸢尾花数据集,并打印了一些基本信息以便了解所处理的内容。 #### 划分训练集与测试集 为了让模型能够评估其性能,在实际预测之前应该把原始数据分为两部分——一部分用于训练模型,另一部分用来验证模型的效果。 ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( iris['data'], iris['target'], test_size=0.2, random_state=0) print(f"训练样本数量: {len(X_train)}") print(f"测试样本数量: {len(X_test)}") ``` 这里设置了`test_size=0.2`意味着80%的数据会被用作训练而剩下的20%则作为测试用途;同时指定了`random_state=0`以确保每次分割的结果一致。 #### 创建并训练KNN模型 有了上述准备工作之后就可以创建一个K近邻(KNN)分类器实例并将它应用于训练好的数据上了: ```python from sklearn.neighbors import KNeighborsClassifier knn_clf = KNeighborsClassifier(n_neighbors=3) # 设置邻居数为3 knn_clf.fit(X_train, y_train) ``` 此段脚本定义了一个具有三个最近邻参数(`n_neighbors`)KNN分类器对象,并调用了`.fit()`函数让该分类器学习给定输入输出之间的关系模式[^1]。 #### 测试模型准确性 最后一步就是利用预留出来的那部分未见过的新数据去检验我们刚刚建立起来的学习机究竟表现得怎么样: ```python accuracy_score = knn_clf.score(X_test, y_test)*100 print(f'Accuracy on the testing set is {accuracy_score:.2f}%') ``` 这会计算出我们的KNN分类器对于未知案例做出正确判断的比例,从而给出一个直观的感受关于整个建模过程的有效程度[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值