Python 集成学习,随机森林,支持向量机,KNN

Python 集成学习,随机森林,支持向量机,KNN,python,scikit-learn,svm,random-forest,knn,Python,Scikit Learn,Svm,Random Forest,Knn,我正在尝试集成分类器Random forest、SVM和KNN。 为了集成,我将VotingClassifier与GridSearchCV一起使用。 如果我尝试使用逻辑回归、随机森林和高斯分布,代码运行良好 clf11 = LogisticRegression(random_state=1) clf12 = RandomForestClassifier(random_state=1) clf13 = GaussianNB() 但我不知道我在下面的代码中错了什么,因为我是一个初学者。 下面是我尝

我正在尝试集成分类器Random forest、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?


或者,还有其他方法吗?

发布的代码如下:

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]}
在这里,您将hiperparameters C用于RandomForestClassifier,这将不起作用

必须使用对正在使用的分类器有效的hiperparameters。也许估算器的名称“lr”、“rf”和“gnb”会被其他更合适的名称所取代,然后选择对不同类型分类器有效的hiperparameters

以下将起作用:

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的hiperparameters在这里:。此外,提高精度并非易事,这取决于问题。也许您可以尝试使用StandardScaler()对特征进行预处理