【问题标题】:GridSearch for Multilabel OneVsRestClassifier?多标签 OneVsRestClassifier 的 GridSearch?
【发布时间】:2012-12-22 22:46:46
【问题描述】:

我正在对多标签数据进行网格搜索,如下所示:

#imports
from sklearn.svm import SVC as classifier
from sklearn.pipeline import Pipeline
from sklearn.decomposition import RandomizedPCA
from sklearn.cross_validation import StratifiedKFold
from sklearn.grid_search import GridSearchCV

#classifier pipeline
clf_pipeline = clf_pipeline = OneVsRestClassifier(
                Pipeline([('reduce_dim', RandomizedPCA()),
                          ('clf', classifier())
                          ]
                         ))

C_range = 10.0 ** np.arange(-2, 9)
gamma_range = 10.0 ** np.arange(-5, 4)
n_components_range = (10, 100, 200)
degree_range = (1, 2, 3, 4)

param_grid = dict(estimator__clf__gamma=gamma_range,
                  estimator__clf__c=c_range,
                  estimator__clf__degree=degree_range,
                  estimator__reduce_dim__n_components=n_components_range)

grid = GridSearchCV(clf_pipeline, param_grid,
                                cv=StratifiedKFold(y=Y, n_folds=3), n_jobs=1,
                                verbose=2)
grid.fit(X, Y)

我看到以下回溯:

/Users/andrewwinterman/Documents/sparks-honey/classifier/lib/python2.7/site-packages/sklearn/grid_search.pyc in fit_grid_point(X, y, base_clf, clf_params, train, test, loss_func, score_func, verbose, **fit_params)
    107 
    108     if y is not None:
--> 109         y_test = y[safe_mask(y, test)]
    110         y_train = y[safe_mask(y, train)]
    111         clf.fit(X_train, y_train, **fit_params)

TypeError: only integer arrays with one element can be converted to an index

看起来像 GridSearchCV 对象的多个标签。我应该如何解决这个问题?我是否需要使用 label_binarizer 显式迭代唯一类,在每个子估计器上运行网格搜索?

【问题讨论】:

  • 您使用的是 0.12.1 还是 0.13?我认为升级到 0.13 后问题应该会消失。
  • 我使用的是 0.13 的开发分支。我会尽快再试一次。
  • 它应该在 0.13 版本和当前主版本中工作。如果没有,请在 github 上打开一个问题。
  • 在 0.13.1 上还是不行

标签: python scikit-learn


【解决方案1】:

我认为 grid_search.py​​ 中存在错误

您是否尝试将y 作为 numpy 数组?

import numpy as np
Y = np.asarray(Y)

【讨论】:

  • 不,我实际上已经停止使用 scikit learn。您必须自己尝试任何建议的解决方案。如果你能证明一个作品,我会接受它:)
  • @ZéRicardo,很高兴听到这个消息 :)
猜你喜欢
  • 2012-09-19
  • 2014-11-19
  • 2013-04-30
  • 2016-07-12
  • 2016-10-16
  • 2023-03-28
  • 2018-03-29
  • 2016-09-26
  • 1970-01-01
相关资源
最近更新 更多