代码之家  ›  专栏  ›  技术社区  ›  ddd

校准的ClassifiedRCV不适用于管道的熊猫数据帧?

  •  0
  • ddd  · 技术社区  · 6 年前

    我使用sklearn管道构建了一个分类模型。现在我想运行CalibredClassifiedRCV来校准概率预测。

    model = pickle.load(open('model.pkl', 'rb'))
    train = pd.read_csv('new_train.csv')
    features = ['BVW_2C', 'PHIT_2C', 'SW_2C', 'VCARB_2C', 'VCLAY_2C', 'VKER_2C', 'VPYR_2C', 'VSAND_2C', 'GOLD_DTC', 'GOLD_DTS', 'GOLD_GR', 'GOLD_NPHI', 'GOLD_PEF', 'GOLD_RDEEI', 'GOLD_RHOB', 'HETI_NORM_GR']
    clf_iso = CalibratedClassifierCV(model, cv=3, method='isotonic')
    clf_iso.fit(train[features], train[['trouble']])
    

    预训练模型是从一个文件加载的,它基本上由一个定标器和一个梯度boost分类器组成。如果我打印出模型,它看起来是这样的:

    Pipeline(steps=[('preproc',
                     ColumnTransformer(transformers=[('num',
                                                      Pipeline(steps=[('scaler',
                                                                       StandardScaler())]),
                                                      ['BVW_2C', 'PHIT_2C', 'SW_2C',
                                                       'VCARB_2C', 'VCLAY_2C',
                                                       'VKER_2C', 'VPYR_2C',
                                                       'VSAND_2C', 'GOLD_DTC',
                                                       'GOLD_DTS', 'GOLD_GR',
                                                       'GOLD_NPHI', 'GOLD_PEF',
                                                       'GOLD_RDEEI', 'GOLD_RHOB',
                                                       'HETI_NORM_GR'])])),
                    ('clf',
                     LGBMClassifier(max_depth=30, n_estimators=300,
                                    num_leaves=200))])
    

    由于某些原因,我在执行时出现了以下错误 clf_iso.fit(train[features], train[['trouble']]) .

    AttributeError                            Traceback (most recent call last)
    /p/ressim02/analytics/AICOE/jiaod/geonet-ml/geo-env/lib/python3.7/site-packages/sklearn/utils/__init__.py in _get_column_indices(X, key)
        424         try:
    --> 425             all_columns = X.columns
        426         except AttributeError:
    
    AttributeError: 'numpy.ndarray' object has no attribute 'columns'
    
    During handling of the above exception, another exception occurred:
    
    ValueError                                Traceback (most recent call last)
    <ipython-input-49-cfae22cb4b89> in <module>
          1 clf_iso = CalibratedClassifierCV(model, cv=3, method='isotonic')
    ----> 2 clf_iso.fit(train[features], train[['trouble']])
    

    train[features] 显然是熊猫数据帧(由 type(train[features]) ).为什么它仍然将其视为numpy阵列。如果我用加载的模型重新训练相同的数据 model.fit(train[features], train[['trouble']]) ,它的工作没有任何问题。为什么它不适用于校准的分类RCV?

    编辑

    看起来是个已知的问题 link ( github issue #8710 )

    0 回复  |  直到 5 年前
    推荐文章