ValueError: Найденный массив с 0 сэмплами (формами) (shape = (0, 40)), при этом требуется минимум 1 - PullRequest
0 голосов
/ 13 ноября 2018

Я уже давно ищу решение этой ошибки. Это фрагмент моего кода для прогнозирования результатов игр nfl путем извлечения данных с помощью модуля nflgame. Это сработало, когда я впервые собрал это; однако он больше не работает и выдает следующее значение ошибки:

  File "<ipython-input-2-3d530b02cd5f>", line 1, in <module>
    runfile('C:/Users/jtberg/Desktop/Machine_Learning-PYTHON/predict.py', wdir='C:/Users/jtberg/Desktop/Machine_Learning-PYTHON')

  File "C:\Python27\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
    execfile(filename, namespace)

  File "C:\Python27\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 93, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

  File "C:/Users/jtberg/Desktop/Machine_Learning-PYTHON/predict.py", line 98, in <module>
    predictions = model.predict(prediction_data)

  File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 567, in predict
    y = super(BaseSVC, self).predict(X)

  File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 325, in predict
    X = self._validate_for_predict(X)

  File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 458, in _validate_for_predict
    accept_large_sparse=False)

  File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 577, in check_array
    context))

ValueError: Found array with 0 sample(s) (shape=(0, 40)) while a minimum of 1 is required.

Вот часть моего кода, которая, как мне кажется, фиксирует ошибку:

def svc_param_selection(X, y, nfolds):
from sklearn import svm

   GridSearchCV = sklearn.model_selection.GridSearchCV
   Cs = [0.001, 0.01, 0.1, 1, 10]
   gammas = [0.001, 0.01, 0.1, 1]
   param_grid = {'C': Cs, 'gamma': gammas}
   grid_search = GridSearchCV(svm.SVC(kernel = 'rbf'), param_grid, cv=nfolds)
   grid_search.fit(X, y)
   return grid_search.best_params_


# Training model
print('Training model')
years = ['2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017']
all_files = [data_path + str(year) + '_database.csv' for year in years]
train_df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
train_df = utils.scrub_data(train_df)

X_train = train_df[feature_names]
Y_train = train_df['result']

params = svc_param_selection(X_train, Y_train, 2)
model = SVC(probability=True, C=params['C'], gamma=params['gamma'])
# model = SVC(probability=True)
model.fit(X_train, Y_train)

print('Accuracy of SVM classifier on training set: {:.2f}'
  .format(model.score(X_train, Y_train)*100))
...