RO C построение кривой - PullRequest
       12

RO C построение кривой

0 голосов
/ 24 января 2020

Попытка построить RO C Кривая с набором данных размером 1200, имеющим 179 столбцов (в качестве элементов) с использованием SVM приводит к следующей ошибке:

'Слишком много индексов для массива'

Код:

 from sklearn.svm import SVC
 svclassifier = SVC(kernel='linear')

 svm = svclassifier.fit(X_train, Y_train).decision_function(X_test)

 Y_pred = svclassifier.predict(X_test)

 ns_predt = [0 for _ in range(len(Y_test))]

 Y_predt = Y_pred[:,1]

Traceback (most recent call last) IndexError
<ipython-input-92-62de12967d46> in <module>
----> 1 Y_predt = Y_pred[:,1]

IndexError: too many indices for array

1 Ответ

0 голосов
/ 27 января 2020

Ошибка, которую вы получаете, связана с запрошенными и доступными индексами в "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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...