Python sklearn.linear_model: LinearRegression() ValueError произошел, когда.predict()

Моя тренировочная матрица X имеет форму (5182, 19231), а у - список из 1 и 0 с длиной 5182. Моя тестовая матрица имеет форму (496, 5477). Я сохранил их в отдельных файлах рассола. Вот мой код:

def read(pklFile1):
    f=open(pklFile1, 'rb')
    Y = cPickle.load(f)
    f.close()
    return Y
if __name__ == '__main__':
    X=read("results/train_feature.pkl")
    y=read("results/train_label.pkl")
    test=read("results/test_feature.pkl")
    target=read("test_label.pkl")
    clf=LogisticRegression()
    clf=clf.fit(X, y)
    predicted= clf.predict(test)
    accuracy=np.mean(predicted == target)
    print accuracy

Когда я запускаю свой код, при запуске появляется следующее сообщение
predicted = clf.predict(test):

ValueError: X has 5477 features per sample; expecting 19231

Как я могу это исправить?

1 ответ

Решение

Вы обучили линейную модель 19231 объектам, но хотите предсказать какой-то новый образец только с 5477 объектами. Это не то, как работают линейные модели (или большинство классификаторов). Количество функций должно быть одинаковым!

Как ваша линейная модель, состоящая из линейной комбинации из 19231 переменной, должна работать только на 5477 переменных? Если некоторые переменные неизвестны во время предсказания, вы можете вменять их (например, установить в ноль или среднее значение), но даже при таком подходе необходимо знать точное отображение ваших переменных. Какая переменная в поезде соответствует какой в ​​прогнозе.

Другие вопросы по тегам