KNN(K-Nearest Neighbors)算法是一种监督学习方法,常用于分类和回归问题,尤其在处理小规模数据集时表现出色。在这个案例中,我们关注的是如何使用Python实现KNN算法对鸢尾花数据集进行分类。鸢尾花数据集是机器学习领域的一个经典数据集,包含了三种不同种类的鸢尾花,每种鸢尾花有4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。
我们需要导入必要的Python库,如`numpy`用于数值计算,`pandas`用于数据处理,以及`matplotlib`和`seaborn`用于数据可视化。此外,`sklearn`库中的`datasets`模块提供了鸢尾花数据集,而`metrics`模块则包含评估分类性能的函数,如准确率。
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
```
接下来,加载鸢尾花数据集并将其分为特征(X)和目标变量(y):
```python
iris = load_iris()
X = iris.data
y = iris.target
```
为了更好地理解数据,可以使用`pandas`创建DataFrame,并绘制散点图来观察不同特征之间的关系:
```python
df = pd.DataFrame(data=np.c_[iris['data'], iris['target']], columns=iris['feature_names'] + ['target'])
sns.pairplot(df, hue='target')
plt.show()
```
接下来,我们需要将数据集划分为训练集和测试集。常用的划分比例是70%的数据用于训练,30%用于测试:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
现在我们可以创建KNN分类器,设置K值(即最近邻的数量),然后用训练数据拟合模型:
```python
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
```
使用测试数据进行预测,并计算预测的准确率:
```python
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
```
这个案例中,我们选择了K值为3。K值的选择对模型的性能有很大影响,可以通过交叉验证等方式找到最优的K值。
除了基本的KNN实现,还可以探索其他优化策略,比如使用距离度量的权重(如加权KNN)、调整距离度量方法(如曼哈顿距离或切比雪夫距离),或者考虑特征缩放以提高模型的稳定性。
总结起来,KNN算法在鸢尾花数据集的实现主要涉及以下几个步骤:
1. 导入所需库和数据集。
2. 数据预处理,包括划分训练集和测试集。
3. 创建KNN分类器,设置K值。
4. 使用训练数据拟合模型。
5. 对测试数据进行预测并评估模型性能。
通过这个案例,我们可以深入理解KNN算法的工作原理,并掌握其在实际问题中的应用。
- 1
- 2
前往页