【问题标题】:Ensemble learning Python-Random Forest, SVM, KNN集成学习 Python-随机森林、SVM、KNN
【发布时间】:2021-05-15 12:39:54
【问题描述】:

我正在尝试集成分类器随机森林、SVM 和 KNN。 在这里合奏,我将 VotingClassifier 与 GridSearchCV 一起使用。 如果我尝试使用逻辑回归、随机森林和高斯,代码工作正常

clf11 = LogisticRegression(random_state=1)
clf12 = RandomForestClassifier(random_state=1)
clf13 = GaussianNB()

但我不知道我在下面的代码中做错了什么,因为我是初学者。 这是我尝试使用随机森林、KNN 和 SVM

from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import VotingClassifier

clf11 = RandomForestClassifier(n_estimators=100,criterion="entropy")
clf12 = KNeighborsClassifier(n_neighbors=best_k)
clf13 = SVC(kernel='rbf', probability=True)
eclf1 = VotingClassifier(estimators=[('lr', clf11), ('rf', clf12), ('gnb', clf13)],voting='hard')

params = {'lr__C': [1.0, 100.0], 'rf__n_estimators': [20, 200]}

grid1 = GridSearchCV(estimator=eclf1, param_grid=params, cv=30)
grid1.fit(X_train,y_train)
grid1_predicted = grid1.predict(X_test)
print('Accuracy score : {}%'.format(accuracy_score(y_test,grid1_predicted)*100))
scores_dict['Logistic-Random-Gaussian'] = accuracy_score(y_test,grid1_predicted)*100

每当我运行它时,我都会得到

Invalid parameter estimator VotingClassifier.

这些是我遇到的错误。

是否可以集成随机森林、svm 和 KNN?

要不然,有没有其他办法呢?

【问题讨论】:

  • 如果您遇到错误,请edit您的问题包含完整的错误回溯
  • 请包含完整的错误跟踪(相应地编辑您的问题)。
  • 我已经更新了这个问题。你能再检查一下吗?

标签: python scikit-learn svm random-forest knn


【解决方案1】:

贴出的代码如下:

clf11 = RandomForestClassifier(n_estimators=100,criterion="entropy")
clf12 = KNeighborsClassifier(n_neighbors=best_k)
clf13 = SVC(kernel='rbf', probability=True)
eclf1 = VotingClassifier(estimators=[('lr', clf11), ('rf', clf12), ('gnb', clf13)],voting='hard')

params = {'lr__C': [1.0, 100.0], 'rf__n_estimators': [20, 200]}

在这里,您正在为 RandomForestClassifier 使用超参数 C,这将不起作用。

您必须使用对正在使用的分类器有效的超参数。也许估计器的名称“lr”、“rf”和“gnb”可以替换为其他更合适的名称,然后选择对不同类型的分类器有效的超参数

以下方法可行:

clf11 = RandomForestClassifier(n_estimators=100,criterion="entropy")
clf12 = KNeighborsClassifier(n_neighbors=best_k)
clf13 = SVC(kernel='rbf', probability=True)
eclf1 = VotingClassifier(estimators=[('rf', clf11), ('knn', clf12), ('svc', clf13)],voting='hard')

params = {'svc__C': [1.0, 100.0], 'rf__n_estimators': [20, 200]}

【讨论】:

  • knn 的估计参数是什么???以及如何提高准确性?
  • knn 的超参数在这里:scikit-learn.org/stable/modules/generated/…。另外,提高准确率也不是一蹴而就的,这取决于问题
  • 也许您可以尝试使用 StandardScaler() 对特征进行预处理
猜你喜欢
  • 2019-10-05
  • 2016-10-20
  • 1970-01-01
  • 2022-12-06
  • 2015-08-18
  • 2016-12-24
  • 2019-01-27
  • 2017-01-05
  • 2012-10-24
相关资源
最近更新 更多