Dav*_*cco 4 python pandas scikit-learn
我正在尝试在sklearn管道中添加校准步骤以获得校准的分类器,从而在输出中具有更可信赖的概率。
到目前为止,我笨拙地尝试使用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)
Run Code Online (Sandbox Code Playgroud)
但这是行不通的(至少不是这样)。有人知道如何正确执行此操作的提示吗?
该SGDClassifier对象应纳入CalibratedClassifierCV的base_estimator参数中。
您的代码应该看起来像这样:
my_pipeline = Pipeline([
('vectorizer', TfidfVectorizer()),
('classifier', CalibratedClassifierCV(base_estimator=SGDClassifier(loss='modified_huber'), cv=5, method='isotonic'))
])
Run Code Online (Sandbox Code Playgroud)
CalibratedClassifierCV 是一个元估算器。
| 归档时间: |
|
| 查看次数: |
897 次 |
| 最近记录: |