Прогнозирование значений с помощью модели OLS с помощью statsmodels

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

model = OLS(labels[:half], data[:half])
predictions = model.predict(data[half:])

проблема в том, что я получаю и ошибка: Напильник "/usr/local/lib/python2.7/dist-packages/statsmodels-0.5.0-py2.7-linux-i686.egg/statsmodels/regression/linear_model.py", строка 281, в прогнозе возврат np.dot (exog, params) ValueError: матрицы не выровнены

у меня есть следующие формы массива : данные.форма: (426, 215) ценник.форма: (426,)

Если я транспонирую вход в модель.предсказать, я получаю результат, но с формой (426,213), поэтому я предполагаю, что это тоже неправильно (я ожидаю один вектор из 213 чисел в качестве предсказаний метки):

model.predict(data[half:].T)

есть идеи, как заставить его работать?

1 ответов


для statsmodels >=0.4, если я правильно помню

model.predict не знает о параметрах и требует их в вызове смотри http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.OLS.predict.html

что должно работать в вашем случае, чтобы соответствовать модели, а затем использовать метод прогнозирования экземпляра результатов.

model = OLS(labels[:half], data[:half])
results = model.fit()
predictions = results.predict(data[half:])

или короче!--4-->

results = OLS(labels[:half], data[:half]).fit()
predictions = results.predict(data[half:])

http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.RegressionResults.predict.html с отсутствующей docstring

Примечание: это было изменено в версии разработки (обратная совместимость), которая может воспользоваться информацией "формулы" в predict http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults.predict.html