采用KNN,SVM,决策树、集成学习方法实现中鸢尾花数据集分类,挑选准确率最高的模型。给出完整代码
时间: 2024-02-23 08:00:55 浏览: 39
好的,以下是实现中鸢尾花数据集分类的完整代码,包括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.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
# 加载Iris数据集并将其分为训练集和测试集
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
# 使用KNN分类器
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_score = knn.score(X_test, y_test)
print("KNN准确率为:", knn_score)
# 使用SVM分类器
svm = SVC()
svm.fit(X_train, y_train)
svm_score = svm.score(X_test, y_test)
print("SVM准确率为:", svm_score)
# 使用决策树分类器
dt = DecisionTreeClassifier()
dt.fit(X_train, y_train)
dt_score = dt.score(X_test, y_test)
print("决策树准确率为:", dt_score)
# 使用随机森林集成学习方法
rf = RandomForestClassifier()
rf.fit(X_train, y_train)
rf_score = rf.score(X_test, y_test)
print("随机森林准确率为:", rf_score)
# 使用梯度提升树集成学习方法
gb = GradientBoostingClassifier()
gb.fit(X_train, y_train)
gb_score = gb.score(X_test, y_test)
print("梯度提升树准确率为:", gb_score)
# 比较不同模型的准确率,并选择准确率最高的模型作为最终模型
models = [('KNN', knn_score), ('SVM', svm_score), ('决策树', dt_score),
('随机森林', rf_score), ('梯度提升树', gb_score)]
best_model = max(models, key=lambda x: x[1])
print("最佳模型为:", best_model[0], "准确率为:", best_model[1])
```
希望这个完整代码能够帮助您完成中鸢尾花数据集分类任务!