Построить границы принятия решения классификатора, ошибка значения: X имеет 2 объекта на выборку; ожидается 908430″

#python #machine-learning #scikit-learn

#python #машинное обучение #scikit-learn

Вопрос:

На основе документа scikit-learn http://scikit-learn.org/stable/auto_examples/svm/plot_iris.html#sphx-glr-auto-examples-svm-plot-iris-py. Я пытаюсь построить границы принятия решения классификатора, но он отправляет сообщение об ошибке «Ошибка значения: X имеет 2 объекта на выборку; ожидается 908430» для этого кода «Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])»

 clf = SGDClassifier().fit(step2, index)  
X=step2
y=index
h = .02
colors = "bry"
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max()   1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max()   1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                 np.arange(y_min, y_max, h))

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

# Put the result into a color plot
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis('off')

# Plot also the training points
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
  

«индекс» — это метка, которая содержит около метки [98579 X 1] для комментария, которая включает положительные, естественные и отрицательные

 array(['N', 'N', 'P', ..., 'NEU', 'P', 'N'], dtype=object)
  

«шаг 2» — это матрица [98579 X 908430] numpy, которая формируется функцией Countvectorizer, которая касается данных комментариев

 <98579x908430 sparse matrix of type '<type 'numpy.float64'>'
with 3168845 stored elements in Compressed Sparse Row format>
  

Ответ №1:

Дело в том, что вы не можете построить границу принятия решений для классификатора для данных, которые не являются 2-мерными. Ваши данные явно многомерны, они имеют размеры 908430 (я полагаю, задача NLP). Для такой модели невозможно построить фактическую границу принятия решения. Пример, который вы используете, обучен на 2D-данных (уменьшенная диафрагма), и это единственная причина, по которой они смогли его построить.