как исправить неверный размер массива numpy - PullRequest
0 голосов
/ 23 января 2020

Я работаю над проблемой классификации двоичных изображений с использованием контролируемого машинного обучения. Я использовал алгоритм классификатора SVM. Сначала я создал массив numpy для нормализованных цветных изображений в переменной X, форма которой (17500,32,32,3). Затем после разделения данных X_train имеет форму (14000,32,32,3) и размер 4, а y_train имеет форму (14000,2) и размер 2.

clf.fit(X_train,y_train)

После запуска этого кода я получил ошибка значения: найденный массив измерения 4 имеет оценку <= 2. </p>

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 23 января 2020

Если вы используете алгоритм классификации SVM scikit-learn, он ожидает двухмерные массивы формы (n_samples, n_features) для обучающего набора данных для функции SVM fit .

Набор данных, который вы передаете, является 4D-массивом, поэтому вам нужно преобразовать массив в 2D-массив.

Пример:

from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

# To apply a classifier, we need to flatten the image, to
# turn the data in a (samples, feature) matrix, 
# assuming data is numpy array of shape (17500, 32, 32, 3), convert to shape (17500, 3072).
n_samples = len(data)
data_reshape = data.reshape((n_samples, -1))

# Split data into train and test subsets
X_train, X_test, y_train, y_test = train_test_split(data_reshape, labels, 
                                                    test_size=0.2)
clf.fit(X_train,y_train)
0 голосов
/ 23 января 2020

Техника называется Уменьшение размерности . Отображение данных из многомерного пространства в более низкие измерения. Наиболее часто используемым методом является Анализ основных компонентов (PCA) . Вы можете узнать о них по следующим ссылкам:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...