我如何使用不在 sklearn 中的估计器进行模型管道

Posted

技术标签:

【中文标题】我如何使用不在 sklearn 中的估计器进行模型管道【英文标题】:how can I use estimators not in sklearn for model pipeline 【发布时间】:2017-05-15 04:52:21 【问题描述】:

我尝试在gridSearchCV函数中使用arima模型,但它返回了

"TypeError: Cannot clone object '' (type ): 它似乎不是 scikit-learn 估计器,因为它没有实现 'get_params' 方法。 "

import numpy as np
import pandas as pd
from sklearn.grid_search import GridSearchCV
from statsmodels.tsa.arima_model import ARIMA
df_original = pd.DataFrame("date_col": ['2016-08-01', '2016-08-02', '2016-08-03', '2016-08-04', '2016-08-05',
                                             '2016-08-06', '2016-08-07', '2016-08-08', '2016-08-09', '2016-08-10',
                                             '2016-08-11'],
                                'sum_base_revenue_cip': [1, 2, 7, 5, 1, 2, 5, 10, 9, 0, 1])
    df_original["sum_base_revenue_cip"] = np.log(df_original["sum_base_revenue_cip"] + 1e-6)
    df_original_ts = df_original.copy(deep=True)
    df_original_ts['date_col'] = pd.to_datetime(df_original['date_col'])
    df_original_ts = df_original_ts.set_index('date_col')
    print df_original_ts

    estimator = ARIMA(df_original_ts,order=(1,1,0))
    params = 
        'order': ((2, 1, 0), (0, 2, 1), (1, 0, 0))
    
    grid_search = GridSearchCV(estimator,
                               params,
                               n_jobs=-1,
                               verbose=True)
    grid_search.fit(df_original_ts)

【问题讨论】:

simon 的答案实际上是正确的。我认为做第 3 点更容易。我找到了一个与之相关的链接。 machinelearningmastery.com/… 【参考方案1】:
    你可以为它找到一个 sklearn 包装器 您可以编写自己的继承自 BaseEstimator 并满足 sklearn 估计器的所有要求,例如所有参数都必须在 init 的签名中明确提及。 您可以滚动您自己的网格搜索,只需循环遍历参数。

【讨论】:

以上是关于我如何使用不在 sklearn 中的估计器进行模型管道的主要内容,如果未能解决你的问题,请参考以下文章

使用sklearn估计器构建K-Means聚类模型

提供的模型不是 YellowBrick 中的聚类估计器

搜索估计器参数返回的结果不在网格中?

ValueError:找到暗淡为 3 的数组。预计估计器 <= 2。(Keras,Sklearn)

sklearn 维度问题“找到暗淡 3 的数组。预期的估计器 <= 2”

sklearn 中 learning_curve 函数中估计器参数的值应该是多少?