2016-08-09 3 views
0

Я пытался настроить мой SVM с помощью Gridsearchcv, но он бросает ошибки.Как использовать gridSearch CV с scipy?

мой код:

train = pd.read_csv('train_set.csv') 
label = pd.read.csv('lebel.csv') 

params = { 'C' : [ 0.01 , 0.1 , 1 , 10] 
clf = GridSearchCV(SVC() , params , n_jobs = -1) 
clf.fit(train , label) 

бросает ошибку, как: 'слишком много индексов массива'

но когда я просто сделать это:

clf = svc() 
clf.fit(train.data , label.data) 

код работает отлично

+0

Как это вопрос Панды? Скорее всего, мне нравится SciPy ... Кроме того, подумайте о том, чтобы включить полный проверяемый и воспроизводимый пример. Это означает, что вы даете небольшую выборку своих данных, чтобы проверить ответы на ... – Kartik

+0

@Kartik Я отредактировал его, –

ответ

1

Я подозреваю, что проблема связана с вашей структурой данных train.data/label.data. Я проверил обе версии кода, и они работают:

import sklearn.svm as sksvm 
import sklearn.grid_search as skgs 

params = { 'C' : [ 0.01 , 0.1 , 1 , 10]} 
X = np.random.rand(1000, 10) # (1000 x 10) matrix, 1000 points with 10 features 
Y = np.random.randint(0, 2, 1000) # 1000 array, binary labels 

mod = sksvm.SVC() 
mod.fit(X, Y) 

Выход:

SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0, 
    kernel='rbf', max_iter=-1, probability=False, random_state=None, 
    shrinking=True, tol=0.001, verbose=False) 

и

import sklearn.svm as sksvm 
import sklearn.grid_search as skgs 

params = { 'C' : [ 0.01 , 0.1 , 1 , 10]} 
X = np.random.rand(1000, 10) # (1000 x 10) matrix, 1000 points with 10 features 
Y = np.random.randint(0, 2, 1000) # 1000 array, binary labels 

mod = skgs.GridSearchCV(sksvm.SVC(), params, n_jobs=-1) 
mod.fit(X, Y) 

Выход:

GridSearchCV(cv=None, error_score='raise', 
     estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0, 
    kernel='rbf', max_iter=-1, probability=False, random_state=None, 
    shrinking=True, tol=0.001, verbose=False), 
     fit_params={}, iid=True, loss_func=None, n_jobs=-1, 
     param_grid={'C': [0.01, 0.1, 1, 10]}, pre_dispatch='2*n_jobs', 
     refit=True, score_func=None, scoring=None, verbose=0) 

Если данные в dataframe и серия код все еще работает , Вы можете попробовать его, добавив:

X = pd.DataFrame(X) 
Y = pd.Series(Y) 

после генерации X и Y.

Трудно сказать без воспроизводимого куска кода, хотя. Также вы, вероятно, должны добавить к этому вопросу метку sklearn.

+0

Я думаю, что проблема заключается в передаче метки как DataFrame, так что я должен делать. –

+0

Я использовал as_type.array() ничего. @Borja, я теряю рассудок по этому поводу. обратитесь к нему –

+0

Вы должны извлечь Серию с метками из фрейма данных. Либо «label [column_name]», если вы знаете имя столбца, или 'label.iloc [:, 0]', если это первый столбец или есть только один столбец. – Borja

Смежные вопросы