Ошибка, которую вы получаете, связана с запрошенными и доступными индексами в "Y_pred [:, 1]". Вы запрашиваете все строки (двоеточие ':') столбца 1 (с нулевым индексированием Python, это фактически 2-й столбец). Тем не менее, Y_pred является numpy 1D-массивом (т.е. без столбцов).
Я не уверен, что вы пытаетесь сделать в ns_predt = [0 for _ in range(len(Y_test))]
, ни в Y_predt = Y_pred[:,1]
, поэтому я не могу дать вам альтернативу. Но проблема ясна: вы запрашиваете столбцы, которые не существуют.
Проблема может быть легко воспроизведена с помощью следующего кода:
import pandas as pd
import numpy as np
import pdb
from sklearn.svm import SVC
print('Creating fake data..')
X_train = pd.DataFrame(np.random.randint(0,1000,size=(100, 4)), columns=list('ABCD'))
Y_train = pd.DataFrame(np.random.randint(0,10,size=(100, 1)), columns=list('E'))
X_test = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
Y_test = pd.DataFrame(np.random.randint(0,10,size=(100, 1)), columns=list('E'))
print('Initializing classifier')
svclassifier = SVC(kernel='linear')
print('Training the model')
svm = svclassifier.fit(X_train, Y_train).decision_function(X_test)
print('Predicting outcome')
Y_pred = svclassifier.predict(X_test)
print('... ? ...')
ns_predt = [0 for _ in range(len(Y_test))]
try:
Y_predt = Y_pred[:,1]
except:
print('I failed...')
pdb.set_trace()