基于鸢尾花数据集,采用KNN、SVM等多个方法对鸢尾花进行分类,通过对比准确率、精确率等指标,选取最佳算法,给出代码
时间: 2024-03-11 20:51:04 浏览: 15
好的,我会根据您的要求为您提供代码,以下是基于鸢尾花数据集的分类代码:
```python
# 导入必要的库
import pandas as pd
from sklearn import datasets
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
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 定义KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 训练KNN分类器
knn.fit(X_train, y_train)
# 预测测试集
knn_y_pred = knn.predict(X_test)
# 计算KNN分类器的准确率和精确率
knn_accuracy = accuracy_score(y_test, knn_y_pred)
knn_precision = precision_score(y_test, knn_y_pred, average='macro')
# 定义SVM分类器
svm = SVC(kernel='linear', C=0.1)
# 训练SVM分类器
svm.fit(X_train, y_train)
# 预测测试集
svm_y_pred = svm.predict(X_test)
# 计算SVM分类器的准确率和精确率
svm_accuracy = accuracy_score(y_test, svm_y_pred)
svm_precision = precision_score(y_test, svm_y_pred, average='macro')
# 打印结果
print('KNN分类器的准确率为:', knn_accuracy, '精确率为:', knn_precision)
print('SVM分类器的准确率为:', svm_accuracy, '精确率为:', svm_precision)
# 选取最佳算法
best_algorithm = 'KNN' if knn_accuracy > svm_accuracy else 'SVM'
print('最佳算法为:', best_algorithm)
```
在这个代码中,我们首先加载鸢尾花数据集,然后将其划分为训练集和测试集。然后,我们定义KNN和SVM分类器,并使用训练集对其进行训练。接下来,我们使用测试集对分类器进行预测,并计算准确率和精确率。最后,我们比较KNN和SVM分类器的准确率,并选择最佳算法。
希望这个代码能够满足您的需求!