使用KNN对鸢尾花iris数据集进行分类的完整代码中如何评估KNN模型在测试集上的性能?
时间: 2024-11-17 10:30:39 浏览: 30
python KNN算法实现鸢尾花数据集分类
在使用K-Nearest Neighbors (KNN)算法对鸢尾花Iris数据集进行分类并评估模型性能时,通常我们会按照以下步骤操作:
1. 导入必要的库:
```python
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
```
2. 加载和预处理数据:
```python
iris = load_iris()
X = iris.data
y = iris.target
# 数据划分(常见的70%训练,30%测试)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 对数据进行标准化,因为KNN对数值敏感
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
```
3. 创建并训练KNN模型:
```python
k_values = [1, 3, 5] # 可尝试不同的k值
for k in k_values:
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
```
4. 预测测试集:
```python
y_pred = knn.predict(X_test)
```
5. 评估模型性能:
```python
print("对于k =", k, ":\n")
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
print("Accuracy:", accuracy_score(y_test, y_pred))
```
通过以上步骤,你可以得到不同k值下模型在测试集上的精确度、召回率、F1分数以及混淆矩阵,从而了解模型的分类效果。你可以选择最佳的k值作为最终模型。
阅读全文