просто, я пытаюсь применить тот же выбор объектов для проверки данных, что и для обучения набора, однако тест не имеет такой же точной формы.
def get_important_features (X_train, Y_train, X_test):
'''
:param X_train: features of training set of type scipy.sparse.csr_matrix
:param Y_train: labels of training set of type scipy.sparse.csr_matrix
:param X_test: features of test set of type scipy.sparse.csr_matrix
:return:
'''
select_percentile = SelectPercentile(chi2, percentile=75)
print(X_train.shape)
print(X_test.shape)
X_new_train = select_percentile.fit_transform(X_train, Y_train)
#print(select_percentile.get_support(indices=True))
X_new_test = select_percentile.transform(X_test)
return X_new_train, X_new_test
, поэтому форма обучающего набора (836, 3188)
и форма набора тестов (633, 3187)
, как вы можете видеть, набор тестов не имеет форму, аналогичную обучающему набору, однако все, что мне нужно, это выбирать только те функции, которые существуют в обучающем наборе после применения chi2
. Кроме того, как вы, возможно, знаете, X_new_test = select_percentile.transform(X_test)
ошибка значения throw ValueError: X has a different shape than during fitting.
по причине, указанной выше. Можно ли как-нибудь извлечь эти характеристики из X_test
без использования transform(X_test)
?
Примечание: что входные данные являются матрицей csr, а не кадром данных, поэтому я получаю эти значения из документа формата libsvm.
train= load_svmlight_file(train_file_name)
X_train = train[0]
Y_train = train[1]
test= load_svmlight_file(test_file_name)
X_test = test[0]
Y_test = test[1]