基于鸢尾花数据集,采用KNN、SVM等多个方法对鸢尾花进行分类,通过对比准确率、精确率等指标,选取最佳算法,写出代码
时间: 2024-03-12 11:43:47 浏览: 71
建立神经网络并采用KNN算法对鸢尾花进行分类matlab代码.zip
好的,下面是使用Python编写基于鸢尾花数据集的分类代码。我们将使用sklearn库来实现KNN和SVM分类算法。
首先,我们需要导入必要的库和数据集:
```python
from sklearn.datasets import load_iris
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 = load_iris()
X, y = iris.data, iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
接下来,我们可以使用KNN算法进行分类:
```python
# 使用KNN算法进行分类
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
# 在测试集上评估模型性能
y_pred = knn.predict(X_test)
acc = accuracy_score(y_test, y_pred)
prec = precision_score(y_test, y_pred, average='weighted')
print("KNN分类器的准确率为:{:.2f},精确率为:{:.2f}".format(acc, prec))
```
然后,我们再使用SVM算法进行分类:
```python
# 使用SVM算法进行分类
svm = SVC()
svm.fit(X_train, y_train)
# 在测试集上评估模型性能
y_pred = svm.predict(X_test)
acc = accuracy_score(y_test, y_pred)
prec = precision_score(y_test, y_pred, average='weighted')
print("SVM分类器的准确率为:{:.2f},精确率为:{:.2f}".format(acc, prec))
```
最后,我们可以比较两种算法的性能指标,选择最佳算法:
```python
if acc > acc_knn and acc > acc_svm:
print("准确率最高的分类器是:决策树")
elif prec > prec_knn and prec > prec_svm:
print("精确率最高的分类器是:决策树")
elif acc_knn > acc_svm:
print("准确率最高的分类器是:KNN")
else:
print("准确率最高的分类器是:SVM")
```
完整代码如下:
```python
from sklearn.datasets import load_iris
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 = load_iris()
X, y = iris.data, 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()
knn.fit(X_train, y_train)
# 在测试集上评估KNN分类器的性能
y_pred = knn.predict(X_test)
acc_knn = accuracy_score(y_test, y_pred)
prec_knn = precision_score(y_test, y_pred, average='weighted')
print("KNN分类器的准确率为:{:.2f},精确率为:{:.2f}".format(acc_knn, prec_knn))
# 使用SVM算法进行分类
svm = SVC()
svm.fit(X_train, y_train)
# 在测试集上评估SVM分类器的性能
y_pred = svm.predict(X_test)
acc_svm = accuracy_score(y_test, y_pred)
prec_svm = precision_score(y_test, y_pred, average='weighted')
print("SVM分类器的准确率为:{:.2f},精确率为:{:.2f}".format(acc_svm, prec_svm))
# 比较两种算法的性能指标,选择最佳算法
if acc_knn > acc_svm:
print("准确率最高的分类器是:KNN")
else:
print("准确率最高的分类器是:SVM")
if prec_knn > prec_svm:
print("精确率最高的分类器是:KNN")
else:
print("精确率最高的分类器是:SVM")
```
希望这个代码能对你有所帮助!
阅读全文