基于鸢尾花数据集,采用KNN、SVM等多个方法对鸢尾花进行分类,通过对比准确率、精确率等指标,选取最佳算法。
时间: 2024-03-12 11:43:42 浏览: 15
好的,你的问题是基于鸢尾花数据集,采用KNN、SVM等多个方法对鸢尾花进行分类,通过对比准确率、精确率等指标,选取最佳算法。
首先,我们需要加载鸢尾花数据集。这个数据集包含150个样本,每个样本包含4个特征和1个标签。我们可以使用scikit-learn库中的load_iris()函数加载数据集。
代码如下所示:
```
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
```
接下来,我们可以将数据集分为训练集和测试集。我们可以使用train_test_split()函数来完成这个任务。
代码如下所示:
```
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
然后,我们可以使用KNN、SVM等多个方法对鸢尾花进行分类,并计算准确率、精确率等指标。
代码如下所示:
```
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# KNN分类器
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
print('KNN准确率:', accuracy_score(y_test, y_pred))
print('KNN精确率:', precision_score(y_test, y_pred, average='weighted'))
print('KNN召回率:', recall_score(y_test, y_pred, average='weighted'))
print('KNN F1值:', f1_score(y_test, y_pred, average='weighted'))
# SVM分类器
svm = SVC()
svm.fit(X_train, y_train)
y_pred = svm.predict(X_test)
print('SVM准确率:', accuracy_score(y_test, y_pred))
print('SVM精确率:', precision_score(y_test, y_pred, average='weighted'))
print('SVM召回率:', recall_score(y_test, y_pred, average='weighted'))
print('SVM F1值:', f1_score(y_test, y_pred, average='weighted'))
```
最后,我们可以通过比较准确率、精确率等指标来选取最佳算法。在这个例子中,我们可以发现KNN算法的准确率、精确率、召回率和F1值都比SVM算法高。因此,我们可以选择KNN算法作为最佳算法。
希望这个回答能够帮助你解决问题。如果还有什么不清楚的地方,请随时问我。