2016-09-07 5 views
0

Итак, я построил простую линейную регрессионную модель с горсткой функций. Когда я пытаюсь предсказать новый вход, результат несовместим. Например:предсказание линейной регрессии в scikit-learn противоречиво

In [1]: model.predict(X_new) 
Out[1]: array([ 7.15993216e+08, 1.13548305e+09]) 

Но если я лавировать его на оригинальный образец обучения, я получаю совершенно иной ответ:

In [2]: model.predict(X_training[:1].append(X_new))[1:] 
Out[2]: array([ 272682.59925699, 1179906.89475647]) 

Это, как представляется, модель агностик (по крайней мере, в пределах линейной регрессии). Я также пробовал то же самое внутри конвейера и получал поведение sam.

Любые мысли?

+0

Что такое тип 'X_training'? Обычно вы передаете объект 'np.array', но у него нет метода' append'. –

+0

Это кадр данных pandas, но это та же проблема с массивом numpy. – user6656013

+0

@SohierDane, я на самом деле вытаскиваю первое значение X_training, а затем из прогнозируемых результатов вытягиваю все, кроме первого значения (так что предсказание для значения обучения не отображается). Думаю, должен быть тот же результат. – user6656013

ответ

0

Это, похоже, проблема с порядком сортировки кадра данных pandas. Решением для этого является предварительная сортировка наборов данных для обучения и тестирования одним и тем же порядком столбцов. Что-то по строкам:

model.fit(np.array(X_training.sort_index(1))) 
model.predict(np.array(new_input.sort_index(1))) 

Это цементирует порядок столбцов в массивах обучения и тестирования.

Смежные вопросы