Не сходится размерность тестовой выборки при обучении логистической регрессии: куда теряется одна фича?
Работаю с набором mnist, пытаясь предсказывать цифры. Реализую модель PCA, которая выбирает признаки, чтобы отличать одну цифру от другой. Затем эти признаки отдаю в регрессию и пытаюсь предсказывать. И вот здесь траблы с тестовой выборкой. Ее размерность оказывается ниже на единицу в сравнении с обучающим фреймом. В итоге на финальной стадии код дает ошибку
ValueError: X has 783 features per sample; expecting 784
При этом аналогичная обработка обучающего фрейма обеспечивает количество фичей на уровне 784 штуки.
%matplotlib inline
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
train = np.loadtxt('/kaggle/input/digit-recognizer/train.csv', delimiter=',', skiprows=1)
test = np.loadtxt('/kaggle/input/digit-recognizer/test.csv', delimiter=',', skiprows=1)
train_label = train[:, 0] # В нулевом столбце представлены конкретные цифры
test_label = test[:, 0]
train_img = np.resize(train[:, 1:], (train.shape[0], 28, 28))
test_img = np.resize(test[:, 1:], (test.shape[0], 28, 28))
scaler = StandardScaler()
train_img = scaler.fit_transform(train[:, 1:])
test_img = scaler.fit_transform(test[:, 1:])
pca = PCA(.95)
pca.fit(train_img)
pca.fit(test_img)
logisticRegr = LogisticRegression(solver = 'liblinear')
logisticRegr.fit(train_img, train_label)
print(test_img.shape)
print(train_img.shape)
# Размерность тестовой выборки (28000, 783)
# Размерность обучающей выборки (42000, 784)
# Код ниже предсказывает одно наблюдение
logisticRegr.predict(test_img[0].reshape(1,-1))
# вот здесь и возникает ошибка
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Судя по описанию данных на Kaggle, в тестовой выборке отсутствует целевая переменная - label. Вам ее придется найти в рамках конкурса ;)