Прогнозирование с использованием ядра chi для многослойных изображений с использованием sklearn

Я пытаюсь получить предсказания для SVM, используя предварительно вычисленное ядро ​​chi-squared. Однако при попытке запустить clf.predict () возникают проблемы.

min_max_scaler = preprocessing.MinMaxScaler() X_train_scaled = min_max_scaler.fit_transform(features_train) X_test_scaled = min_max_scaler.transform(features_test) K = chi2_kernel(X_train_scaled) svm = SVC(kernel='precomputed', cache_size=1000).fit(K, labels_train) y_pred_chi2 = svm.predict(X_test_scaled) 

Ошибка, которую я получаю, следующая:

 ValueError: bad input shape (4627L, 20L) 

Я предполагаю, что эта проблема связана с мультиметкой, поэтому я обучил классификатор только для 1 категории, выполнив следующие действия:

 svm = SVC(kernel='precomputed', cache_size=1000).fit(K, labels_train[:, 0]) 

Однако при попытке запустить clf.predict (X_test_scaled), я получаю ошибку:

 ValueError: X.shape[1] = 44604 should be equal to 4627, the number of samples at training time 

Почему тестовые образцы должны быть того же числа, что и образцы обучения?

Вот форма соответствующих матриц (функции имеют размеры 44604 и 20 категорий):

 X_train_scaled.shape : (4627L, 44604L) X_test_scaled.shape : (4637L, 44604L) K.shape : (4627L, 4627L) labels_train.shape : (4627L, 20L) 

На боковой ноте, нормально ли, что рядом с размерами этих матриц существует L?

2 Solutions collect form web for “Прогнозирование с использованием ядра chi для многослойных изображений с использованием sklearn”

Вам нужно дать функцию предсказания ядру между тестовыми данными и данными обучения. Самый простой способ – присвоить ядру параметр kernel=chi2_kernel . С помощью

 K_test = chi2_kernel(X_test_scaled) 

не будет работать. Это должно быть

 K_test = chi2_kernel(X_test_scaled, X_train_scaled) 

Вход в clf.predict () также должен быть передан функции chi2_kernel.

 K_test = chi2_kernel(X_test_scaled) y_pred = svm.predict(K_test) 
  • SKLearn: расстояние до каждой точки от границы решения?
  • Как применить стандартизацию к SVM в scikit-learn?
  • libsvm для построения кривых ROC
  • Степень точности классификатора SVM варьируется в разных машинах
  • Сколько времени занимает сборщик SVM?
  • : обнаружение аномалий - альтернатива для OneClassSVM
  • Используя scikit-learn, как узнать SVM над небольшим набором данных?
  • scikit-learn SVM.SVC () чрезвычайно медленный
  • Python - лучший язык программирования в мире.