Dan*_*Man 5 python pipeline python-3.x scikit-learn
我可以做这个:
model=linear_model.LogisticRegression(solver='lbfgs',max_iter=10000)
kfold = model_selection.KFold(n_splits=number_splits,shuffle=True, random_state=random_state)
scalar = StandardScaler()
pipeline = Pipeline([('transformer', scalar), ('estimator', model)])
results = model_selection.cross_validate(pipeline, X, y, cv=kfold, scoring=score_list,return_train_score=True)
Run Code Online (Sandbox Code Playgroud)
其中 Score_list 可以是类似['accuracy','balanced_accuracy','precision','recall','f1']
.
我也可以这样做:
kfold = model_selection.KFold(n_splits=number_splits,shuffle=True, random_state=random_state)
scalar = StandardScaler()
pipeline = Pipeline([('transformer', scalar), ('estimator', model)])
for i, (train, test) in enumerate(kfold.split(X, y)):
pipeline.fit(self.X[train], self.y[train])
pipeline.score(self.X[test], self.y[test])
Run Code Online (Sandbox Code Playgroud)
但是,我无法更改最后一行中管道的分数类型。我怎样才能做到这一点?
score
方法始终accuracy
用于分类,r2
评分用于回归。没有参数可以改变它。它来自Classifiermixin
和RegressorMixin
。
相反,当我们需要其他评分选项时,我们必须从sklearn.metrics
以下位置导入它。
from sklearn.metrics import balanced_accuracy
y_pred = pipeline.predict(self.X[test])
balanced_accuracy(self.y_test, y_pred)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4801 次 |
最近记录: |