如何在scikit learning中将参数传递给仅管道对象的一部分?

马坎西

我需要传递一个参数,sample_weight以我RandomForestClassifier就像这样:

X = np.array([[2.0, 2.0, 1.0, 0.0, 1.0, 3.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 5.0, 3.0,
        2.0, '0'],
       [15.0, 2.0, 5.0, 5.0, 0.466666666667, 4.0, 3.0, 2.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,
        7.0, 14.0, 2.0, '0'],
       [3.0, 4.0, 3.0, 1.0, 1.33333333333, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0,
        0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
        9.0, 8.0, 2.0, '0'],
       [3.0, 2.0, 3.0, 0.0, 0.666666666667, 2.0, 2.0, 1.0, 0.0, 0.0, 0.0,
        0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
        5.0, 3.0, 1.0, '0']], dtype=object)

y = np.array([ 0.,  0.,  1.,  0.])

m = sklearn.ensemble.RandomForestClassifier(
        random_state=0, 
        oob_score=True, 
        n_estimators=100,
        min_samples_leaf=5, 
        max_depth=10)

m.fit(X, y, sample_weight=np.array([3,4,2,3]))

上面的代码工作得很好。然后,我尝试在这样的管道对象中执行此操作,使用管道对象而不是仅随机林:

m = sklearn.pipeline.Pipeline([
    ('feature_selection', sklearn.feature_selection.SelectKBest(
        score_func=sklearn.feature_selection.f_regression,
        k=25)),
    ('model', sklearn.ensemble.RandomForestClassifier(
        random_state=0, 
        oob_score=True, 
        n_estimators=500,
        min_samples_leaf=5, 
        max_depth=10))])

m.fit(X, y, sample_weight=np.array([3,4,2,3]))

现在,这fit用“ ValueError: need more than 1 value to unpack打破了方法

ValueError                                Traceback (most recent call last)
<ipython-input-212-c4299f5b3008> in <module>()
     25         max_depth=10))])
     26 
---> 27 m.fit(X, y, sample_weights=np.array([3,4,2,3]))

/usr/local/lib/python2.7/dist-packages/sklearn/pipeline.pyc in fit(self, X, y, **fit_params)
    128         data, then fit the transformed data using the final estimator.
    129         """
--> 130         Xt, fit_params = self._pre_transform(X, y, **fit_params)
    131         self.steps[-1][-1].fit(Xt, y, **fit_params)
    132         return self

/usr/local/lib/python2.7/dist-packages/sklearn/pipeline.pyc in _pre_transform(self, X, y, **fit_params)
    113         fit_params_steps = dict((step, {}) for step, _ in self.steps)
    114         for pname, pval in six.iteritems(fit_params):
--> 115             step, param = pname.split('__', 1)
    116             fit_params_steps[step][param] = pval
    117         Xt = X

ValueError: need more than 1 value to unpack

我正在使用sklearnversion0.14
我认为问题在于F selection管道中步骤未采用sample_weights的参数。运行“ fit”时,如何将此参数传递给管道中的仅一步谢谢。

ali_m

从文档中:

流水线的目的是组装几个步骤,这些步骤可以在设置不同参数的同时交叉验证。为此,它可以使用各个步骤的名称以及以'__'分隔的参数名称来设置各个步骤的参数,如下例所示。

因此,您只需model__在要传递给'model'步骤的所有fit参数kwarg前面插入

m.fit(X, y, model__sample_weight=np.array([3,4,2,3]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在PowerShell中将参数作为-file的一部分传递

如何在基于非模板的页面(src/pages 的一部分)中将变量传递给 GraphQL

如何在SwiftUI中将View()作为列表的一部分传递?

如何在PHP中将“&”作为字符串的一部分传递?

如何将列表的一部分传递给不同的变量?

VBA Word如何将数组的一部分传递给子例程?

如何传递String参数,使其成为类方法调用的一部分?

如何在余烬应用程序中将api密钥作为url的一部分传递

如何在angularJs 1.5中将$ scope变量作为组件的templateUrl的一部分传递?

如何在Paw中将文件作为多部分请求的一部分上载?

如何在python中将数组的一部分存储在不同的数组中

如何在iPhone开发中将度数符号添加为UILabel的一部分?

如何在iOS中将字符串的一部分加粗?

如何在Golang中将jsonb编码为http响应的一部分

如何在Jgit中将文件列表作为提交的一部分

如何在MarkLogic中将子元素包含为单词查询的一部分

如何在SQL中将NULL连接为字符串的一部分

如何在python中将api响应的一部分转换为完整的json

如何在SwiftUI中将.fontWeight添加为ViewModifer的一部分

如何在python中将字符串用作变量的一部分

如何在 Python Pandas 中将列的一部分转换为日期?

如何在 Postman 中将文件作为请求参数的一部分发送

如何在日志记录中过滤路径的一部分(不是参数)?

如何传递运行时参数作为依赖关系解决方案的一部分?

如何在纯 JS 中仅操作 JSON 对象的一部分?

Netty单元测试:如何测试作为传递的ChannelHandlerContext一部分的Channel对象的调用?

如何提取子字符串作为dplyr :: mutate管道的一部分

如何覆盖“应用程序管道的一部分”内部名称?

如何选择管道分隔数据的第一部分