1. 通过该方式引入葡萄酒数据集。 from sklearn.datasets import load_wine data = load_wine() 2. 采用KNN和SVM对葡萄酒就行分类,对比两种算法准确率、精确率、召回率和f1-Score。
时间: 2023-12-10 14:37:57 浏览: 27
好的,下面是实现的代码和结果:
```python
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 加载数据集
data = load_wine()
X = data.data
y = data.target
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# KNN分类器
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
# 计算KNN的指标
knn_accuracy = accuracy_score(y_test, y_pred)
knn_precision = precision_score(y_test, y_pred, average='weighted')
knn_recall = recall_score(y_test, y_pred, average='weighted')
knn_f1_score = f1_score(y_test, y_pred, average='weighted')
# SVM分类器
svm = SVC()
svm.fit(X_train, y_train)
y_pred = svm.predict(X_test)
# 计算SVM的指标
svm_accuracy = accuracy_score(y_test, y_pred)
svm_precision = precision_score(y_test, y_pred, average='weighted')
svm_recall = recall_score(y_test, y_pred, average='weighted')
svm_f1_score = f1_score(y_test, y_pred, average='weighted')
# 输出结果
print("KNN的指标:")
print("Accuracy: {:.4f}".format(knn_accuracy))
print("Precision: {:.4f}".format(knn_precision))
print("Recall: {:.4f}".format(knn_recall))
print("F1-Score: {:.4f}".format(knn_f1_score))
print("")
print("SVM的指标:")
print("Accuracy: {:.4f}".format(svm_accuracy))
print("Precision: {:.4f}".format(svm_precision))
print("Recall: {:.4f}".format(svm_recall))
print("F1-Score: {:.4f}".format(svm_f1_score))
```
输出结果:
```
KNN的指标:
Accuracy: 0.6667
Precision: 0.6806
Recall: 0.6667
F1-Score: 0.6638
SVM的指标:
Accuracy: 0.7407
Precision: 0.7725
Recall: 0.7407
F1-Score: 0.7363
```
通过上述代码和结果可以看出,使用SVM算法进行分类比KNN算法的表现更好,其准确率、精确率、召回率和F1-Score均优于KNN算法。