应用sklearn中的K-近邻分类函数对鸢尾花数据集进行分类和测试,计算在测试集上的准确率、召回率和精准率,绘制混淆矩阵。
时间: 2024-09-24 16:22:57 浏览: 79
在Python的scikit-learn库中,可以使用`KNeighborsClassifier`来进行K-Nearest Neighbors)分类。首先,我们需要导入所需的库,加载鸢尾花数据集,然后划分训练集和测试集。
```python
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, recall_score, precision_score, confusion_matrix, plot_confusion_matrix
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建KNN分类器并拟合数据
knn = KNeighborsClassifier(n_neighbors=3) # 可以尝试调整n_neighbors值
knn.fit(X_train, y_train)
# 预测测试集
y_pred = knn.predict(X_test)
# 计算评估指标
accuracy = accuracy_score(y_test, y_pred)
recall = recall_score(y_test, y_pred, average='macro') # 使用'macro'平均适用于多类别任务
precision = precision_score(y_test, y_pred, average='macro')
print(f"Accuracy: {accuracy}")
print(f"Recall: {recall}")
print(f"Precision: {precision}")
# 绘制混淆矩阵
plot_confusion_matrix(knn, X_test, y_test, cmap='Blues', display_labels=iris.target_names)
```
运行以上代码后,你将得到K-近邻模型在测试集上的准确率、召回率和精准率。同时,会显示一个混淆矩阵图形,直观地展示模型预测结果与实际标签之间的对应关系。
阅读全文