python - 在 scikit-learn 管道中插入 CalibratedClassifierCV 的正确方法是什么?

标签 python pandas scikit-learn

我正在尝试在 sklearn 管道中添加校准步骤以获得校准的分类器,因此 have more trustworthy probabilities在输出中。

到目前为止,我笨拙地尝试使用 CalibratedClassifierCV 插入“校准”步骤沿着(重复性的愚蠢例子):

import sklearn.datasets
import pandas as pd
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.linear_model import SGDClassifier
from sklearn.feature_extraction.text import TfidfVectorizer

data = sklearn.datasets.fetch_20newsgroups(categories=['alt.atheism', 'sci.space'])
df = pd.DataFrame(data = np.c_[data['data'], data['target']])\
       .rename({0:'text', 1:'class'}, axis = 'columns')

my_pipeline = Pipeline([
    ('vectorizer', TfidfVectorizer()),
    ('classifier', SGDClassifier(loss='modified_huber')),
    ('calibrator', CalibratedClassifierCV(cv=5, method='isotonic'))
])

my_pipeline.fit(df['text'].values, df['class'].values)

但这行不通(至少不是这样)。有没有人有关于如何正确执行此操作的提示?

最佳答案

SGDClassifier 对象应该进入 CalibratedClassifierCV's base_estimator argument .

您的代码可能看起来像这样:

my_pipeline = Pipeline([
    ('vectorizer', TfidfVectorizer()),
    ('classifier', CalibratedClassifierCV(base_estimator=SGDClassifier(loss='modified_huber'), cv=5, method='isotonic'))
])

CalibratedClassifierCV 是一个元估计器。

关于python - 在 scikit-learn 管道中插入 CalibratedClassifierCV 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49832981/

相关文章:

python - 使用kivy时钟在执行前等待

python - 如何以 UTF-8 编码 WSGI 输出?

python - matplotlib widgets Slider demo源码解释

python - cars.iloc[[3, 0]]、cars.iloc[[3]、[0]] 和 cars.iloc[3, 0] 之间的区别

python - 使用基准年计算指数

python - scikit-learn:转换器按名称选择列

python - estimator 应该是一个实现 'fit' 方法的估计器

python - 使用numpy生成彩色图像渐变

python - pandas value_counts 包含 groupby 之前的所有值

python - Scikit-Learn 给出不正确的 R 平方值