基于鸢尾花数据集,采用KNN、SVM等多个方法对鸢尾花进行分类,通过对比准确率、精确率等指标,选取最佳算法。
时间: 2024-03-11 12:50:31 浏览: 166
好的,那我就为您提供一份基于鸢尾花数据集的分类代码,并对不同算法的表现进行对比。以下是代码:
```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.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_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(n_neighbors=3)
# 训练KNN模型
knn.fit(X_train, y_train)
# 预测KNN模型
knn_preds = knn.predict(X_test)
# 计算KNN模型的准确率
knn_acc = accuracy_score(y_test, knn_preds)
# 计算KNN模型的精确率
knn_prec = precision_score(y_test, knn_preds, average='weighted')
# 计算KNN模型的召回率
knn_recall = recall_score(y_test, knn_preds, average='weighted')
# 计算KNN模型的F1分数
knn_f1 = f1_score(y_test, knn_preds, average='weighted')
# 定义SVM模型
svm = SVC(kernel='linear')
# 训练SVM模型
svm.fit(X_train, y_train)
# 预测SVM模型
svm_preds = svm.predict(X_test)
# 计算SVM模型的准确率
svm_acc = accuracy_score(y_test, svm_preds)
# 计算SVM模型的精确率
svm_prec = precision_score(y_test, svm_preds, average='weighted')
# 计算SVM模型的召回率
svm_recall = recall_score(y_test, svm_preds, average='weighted')
# 计算SVM模型的F1分数
svm_f1 = f1_score(y_test, svm_preds, average='weighted')
# 定义决策树模型
dt = DecisionTreeClassifier()
# 训练决策树模型
dt.fit(X_train, y_train)
# 预测决策树模型
dt_preds = dt.predict(X_test)
# 计算决策树模型的准确率
dt_acc = accuracy_score(y_test, dt_preds)
# 计算决策树模型的精确率
dt_prec = precision_score(y_test, dt_preds, average='weighted')
# 计算决策树模型的召回率
dt_recall = recall_score(y_test, dt_preds, average='weighted')
# 计算决策树模型的F1分数
dt_f1 = f1_score(y_test, dt_preds, average='weighted')
# 定义逻辑回归模型
lr = LogisticRegression()
# 训练逻辑回归模型
lr.fit(X_train, y_train)
# 预测逻辑回归模型
lr_preds = lr.predict(X_test)
# 计算逻辑回归模型的准确率
lr_acc = accuracy_score(y_test, lr_preds)
# 计算逻辑回归模型的精确率
lr_prec = precision_score(y_test, lr_preds, average='weighted')
# 计算逻辑回归模型的召回率
lr_recall = recall_score(y_test, lr_preds, average='weighted')
# 计算逻辑回归模型的F1分数
lr_f1 = f1_score(y_test, lr_preds, average='weighted')
# 输出各个模型的指标
print("KNN模型:准确率={:.2f},精确率={:.2f},召回率={:.2f},F1分数={:.2f}".format(knn_acc, knn_prec, knn_recall, knn_f1))
print("SVM模型:准确率={:.2f},精确率={:.2f},召回率={:.2f},F1分数={:.2f}".format(svm_acc, svm_prec, svm_recall, svm_f1))
print("决策树模型:准确率={:.2f},精确率={:.2f},召回率={:.2f},F1分数={:.2f}".format(dt_acc, dt_prec, dt_recall, dt_f1))
print("逻辑回归模型:准确率={:.2f},精确率={:.2f},召回率={:.2f},F1分数={:.2f}".format(lr_acc, lr_prec, lr_recall, lr_f1))
```
以上代码使用了KNN、SVM、决策树和逻辑回归四种算法对鸢尾花进行分类,并对它们的准确率、精确率、召回率和F1分数进行了计算和对比。您可以根据自己的需求选择其中的算法,或者尝试添加其他算法进行对比,找到最佳的分类算法。
阅读全文