将标准缩放器应用于投票分类器中的一个模型
Applying Standard Scaler to one model in Voting Classifier
我已经创建了各种模型的集合,例如 svc
、LogisticRegression
、LinearDiscriminantAnalysis
等等。
但是 mlp
分类器在我缩放数据时效果更好,但是 LogisticRegression
等其他模型在我缩放数据时准确度较低。所以我只想为一个模型缩放数据。
from sklearn import preprocessing
scaler = preprocessing.StandardScaler()
scaler.fit(X_train)
X_train_ = scaler.transform(X_train)
X_val_ = scaler.transform(X_val)
mlp = MLPClassifier(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(5,2), random_state=1)
mlp.fit(X_train_, y_train)
y_pred = mlp.predict(X_val_)
现在当我创建我的投票分类器时,我不知道如何单独使用一个模型的缩放数据。
votingC = VotingClassifier(estimators=[('logistic_regression', lr),('SVC',svc),
('Catboost', cat),('ExtraTrees', et), ('LinearDiscriminantAnalysis', lda),
('perceptron', p),('randomforest', r), ('nusvc', nusvc), ('knn', knn),
('SGDClassifier', pac), ('bag', bag),('bnb', nc)],
voting='hard', n_jobs=6,
weights = [1.5,1.5,1,1,1,1,1,1,1,1,1,1])
votingC = votingC.fit(X_train, y_train)
提前致谢!
对于需要缩放的模型,您可以build a pipeline,然后进入投票分类器。使用缩放和未缩放支持向量分类器的示例:
from sklearn.ensemble import VotingClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.datasets import make_classification
from sklearn.pipeline import make_pipeline
X,y = make_classification(random_state=123)
scaled_svc = make_pipeline(StandardScaler(), SVC())
voting = VotingClassifier(estimators=[
('scaled_svc', scaled_svc),
('unscaled_svc', SVC())
])
v = voting.fit(X,y)
v.predict(X)
array([0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1,
0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0,
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0])
我已经创建了各种模型的集合,例如 svc
、LogisticRegression
、LinearDiscriminantAnalysis
等等。
但是 mlp
分类器在我缩放数据时效果更好,但是 LogisticRegression
等其他模型在我缩放数据时准确度较低。所以我只想为一个模型缩放数据。
from sklearn import preprocessing
scaler = preprocessing.StandardScaler()
scaler.fit(X_train)
X_train_ = scaler.transform(X_train)
X_val_ = scaler.transform(X_val)
mlp = MLPClassifier(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(5,2), random_state=1)
mlp.fit(X_train_, y_train)
y_pred = mlp.predict(X_val_)
现在当我创建我的投票分类器时,我不知道如何单独使用一个模型的缩放数据。
votingC = VotingClassifier(estimators=[('logistic_regression', lr),('SVC',svc),
('Catboost', cat),('ExtraTrees', et), ('LinearDiscriminantAnalysis', lda),
('perceptron', p),('randomforest', r), ('nusvc', nusvc), ('knn', knn),
('SGDClassifier', pac), ('bag', bag),('bnb', nc)],
voting='hard', n_jobs=6,
weights = [1.5,1.5,1,1,1,1,1,1,1,1,1,1])
votingC = votingC.fit(X_train, y_train)
提前致谢!
对于需要缩放的模型,您可以build a pipeline,然后进入投票分类器。使用缩放和未缩放支持向量分类器的示例:
from sklearn.ensemble import VotingClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.datasets import make_classification
from sklearn.pipeline import make_pipeline
X,y = make_classification(random_state=123)
scaled_svc = make_pipeline(StandardScaler(), SVC())
voting = VotingClassifier(estimators=[
('scaled_svc', scaled_svc),
('unscaled_svc', SVC())
])
v = voting.fit(X,y)
v.predict(X)
array([0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1,
0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0,
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0])