2013-01-08 5 views
5

मैं multilabel डेटा पर एक ग्रिड खोज कर रहा हूँ इस प्रकार है:Multilabel OneVsRestClassifier के लिए ग्रिडशर्च?

#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 अनेक लेबल करने के लिए वस्तुओं की तरह। मुझे इसके आसपास कैसे काम करना चाहिए? क्या मुझे लेबल_बिनेज़र के साथ अद्वितीय वर्गों के माध्यम से स्पष्ट रूप से पुन: प्रयास करना होगा, प्रत्येक उप-अनुमानक पर ग्रिड खोज चलाना चाहिए?

+0

क्या आप 0.12.1 या 0.13 का उपयोग कर रहे हैं? मुझे लगता है कि 0.13 में अपग्रेड करते समय समस्या दूर होनी चाहिए। –

+0

मैं 0.13 की एक देव शाखा का उपयोग कर रहा था। मैं जल्द ही इसे फिर से कोशिश करूंगा। – Maus

+0

यह 0.13 रिलीज और वर्तमान मास्टर में काम करना चाहिए। यदि ऐसा नहीं होता है, तो कृपया github पर कोई समस्या खोलें। –

उत्तर

6

मुझे लगता है कि grid_search.py ​​में एक बग

आप y numpy सरणी के रूप में देने के लिए करने की कोशिश की है?

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

पर काम नहीं करता है, मैंने वास्तव में विज्ञान सीखने के साथ काम करना बंद कर दिया है। आपको स्वयं को प्रस्तावित समाधानों का प्रयास करना होगा। यदि आप एक काम साबित कर सकते हैं, तो मैं इसे स्वीकार करूंगा :) – Maus

+1

बस मेरी समस्या हल हो गई, धन्यवाद। –

+0

@ ज़ीरिकार्डो, यह सुनकर खुशी हुई :) – Thorn

संबंधित मुद्दे

 संबंधित मुद्दे