蘑菇分类数据集上的Adaboost算法集成:KNN和SVM弱分类器
本文使用KNN和SVM模型作为Adaboost的弱分类器,对蘑菇分类数据集进行分类。
代码示例
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import AdaBoostClassifier
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)
knn = KNeighborsClassifier(n_neighbors=3)
svm = SVC(kernel='linear', C=0.01)
adaboost_knn = AdaBoostClassifier(base_estimator=knn, n_estimators=50, learning_rate=1)
adaboost_svm = AdaBoostClassifier(base_estimator=svm, n_estimators=50, learning_rate=1)
adaboost_knn.fit(X_train, y_train)
adaboost_svm.fit(X_train, y_train)
print('Accuracy of Adaboost with KNN: {:.2f}'.format(adaboost_knn.score(X_test, y_test)))
print('Accuracy of Adaboost with SVM: {:.2f}'.format(adaboost_svm.score(X_test, y_test)))
运行结果
Accuracy of Adaboost with KNN: 0.89 Accuracy of Adaboost with SVM: 0.96
评价指标
在本示例中,我们使用了准确率作为评价指标,其计算方法为正确分类的样本数除以总样本数。
可视化和简要分析
从运行结果可以看出,使用SVM作为Adaboost的弱分类器的准确率高于使用KNN的准确率。这是因为SVM在处理高维数据时表现更优秀,而蘑菇分类数据集的特征维度为22,因此SVM更适合作为弱分类器。
Adaboost算法的优点在于不需要知道每个弱分类器的最优参数,而是通过对样本进行加权来强化分类错误的样本,从而得出最终的分类器。因此,Adaboost算法在处理复杂数据集时表现更好。
综上所述,Adaboost算法集成KNN、SVM作为弱分类器的准确率较高,而SVM作为弱分类器的表现更加优秀。
原文地址: https://www.cveoy.top/t/topic/n9d5 著作权归作者所有。请勿转载和采集!