2016-04-06 24 views
0

GridSearchCV (Grid Search Çapraz Doğrulaması) bir SGD Sınıflandırma (Stokastik Gradient Descent Classifier) ​​üzerinde Sklearn Kitaplığı'ndan çalıştırıyorum. Özellikler ve hedef için Panda'lardan bir DataFrame kullanıyorum. tarafından adlandırılmışSklearn GridSearchCV Pandalar kullanarak DataFrame Sütun

['school', 'sex', 'age', 'address', 'famsize', 'Pstatus', 'Medu', 'Fedu', 'Mjob', 'Fjob', 'reason', 'guardian', 'traveltime', 'studytime', 'failures', 'schoolsup', 'famsup', 'paid', 'activities', 'nursery', 'higher', 'internet', 'romantic', 'famrel', 'freetime', 'goout', 'Dalc', 'Walc', 'health', 'absences'] 

Ve y_train olan 300 sıra x 1 sütun Pandalar Serisi: X_train izleyerek adında her sütun ile 300 satır x 31 sütun Pandalar DataFrame olduğunu var

from sklearn.grid_search import GridSearchCV 
parameters = {'loss': [ 'hinge', 'log', 'modified_huber', 'squared_hinge', 'perceptron'], 'alpha': [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001], 'n_iter': list(np.arange(1,1001))} 
clf = GridSearchCV(estimator = SGDClassifier(), param_grid = parameters, scoring = 'f1') 
print(clf) 
clf.fit(X_train, y_train) 

: İşte kod aşağıdaki:

:
['passed'] 

Ben GridSearchCV algoritması deneyin

, aşağıdaki hata deyimi alıyorum
IndexError: too many indices for array 

cevap

1

kod aşağıya tanımına uygun rastgele veri kümesi hazırlar:

  • X_train = 300x31 DataFrame 2 sınıfları ile
  • y_train = 300x1 serisi, 0 ve 1). Sorun verilerine kendisi olabilir bu yüzden X_train ile

ve kodunun altına y_train, çalışır.

import pandas as pd 
import numpy as np 

N = 300 
D = 31 

y_train = pd.Series([0,1]*(N/2)) 
X_train = np.matrix(y_train).T.repeat(D, axis=1) + np.random.normal(size=(N, D)) 
X_train = pd.DataFrame(X_train) 

Gerçekten de, DataFrame 31 sütun, ama sadece 30 element sahiptir sağlanan sütun adlarının listesi vardır söz. Sorun X_train yapımında olabilir.

(burada, daha az parametrelerle testi yapılır tekrarlanabilirlik :)

from sklearn.grid_search import GridSearchCV 
from sklearn.linear_model import SGDClassifier 
parameters = {'loss': [ 'hinge', 'log', 'modified_huber', 'squared_hinge', 'perceptron'], 'alpha': [0.1, 0.01], 'n_iter': [1,2, 1000]} 
clf = GridSearchCV(estimator = SGDClassifier(), param_grid = parameters, scoring = 'f1') 
print(clf) 
clf.fit(X_train, y_train) 
için azaltılmış versiyonu ettik