使用KNN算法对手写数字数据集进行分类,对测试集进行预测并计算其各个分类性能指标
时间: 2023-12-29 22:02:29 浏览: 100
首先,我们需要导入手写数字数据集并进行预处理。我们可以使用sklearn库中的`load_digits`函数来加载数据集,并将其拆分为训练集和测试集。
```python
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)
```
接下来,我们可以使用sklearn库中的`KNeighborsClassifier`类来实现KNN算法。我们需要指定K值,并将训练集拟合到模型中。
```python
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
```
现在,我们可以使用测试集来对模型进行评估,并计算各个分类性能指标,如准确率、精确率、召回率和F1得分。
```python
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)
```
输出结果应该如下所示:
```
Accuracy: 0.9777777777777777
Precision: 0.9782782782782783
Recall: 0.9782987421383646
F1 Score: 0.9779474474474474
```
这意味着我们的模型在测试集上表现良好,可以对手写数字进行准确分类。
阅读全文