2012-11-04 6 views
7

Wyliczyłem model przy użyciu OLS (regresja liniowa wielokrotna). Podzieliłem swoje dane, by je trenować i testować (połowa każdego), a następnie chciałbym przewidzieć wartości dla drugiej połowy etykiet.Prognozowanie wartości przy użyciu modelu OLS z modelami statmodels

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

Problemem jest to, że mogę i błąd: Plik „/usr/local/lib/python2.7/dist-packages/statsmodels-0.5.0-py2.7-linux-i686.egg/ statsmodels/regresji/linear_model.py”linia 281, do przewidywania zwrotnego np.dot (exog, params) ValueError: matryce nie są wyrównane

I mają następujące kształty tablicy: data.shape (426, 215) labels.shape: (426,)

Jeśli przetransferuję dane wejściowe do pliku model.predict, otrzymam wynikiem, ale z kształtem (426,213), więc przypuszczam, że jej źle, jak również (spodziewam jeden wektor 213 numerów jako przewidywań etykiecie):

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

Każdy pomysł jak zmusić go do pracy?

Odpowiedz

11

Dla statsmodels> = 0,4, jeśli dobrze pamiętam

model.predict nie wie na temat parametrów i wymaga od nich w zaproszeniu zobaczyć http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.OLS.predict.html

Co powinien działać w Twoim przypadku jest, aby dopasować model, a następnie użyj metody przewidywania instancji wyników.

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

lub krótszy

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 ze brakuje docstring

Uwaga: ten został zmieniony w wersji rozwojowej (wstecznie kompatybilny), które mogą skorzystać z „formuły” informacji w przewidzenia http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults.predict.html

+0

Chociaż jest to poprawna odpowiedź na pytanie BIG OSTRZEŻENIE dotyczące dopasowania modelu i podziału danych. Powinieneś używać 80% danych (lub większej części) do treningu/dopasowania i 20% (reszta) do testowania/przewidywania. Dzielenie danych 50:50 jest jak kot Schrodingersa. Nie mamy pewności, że nasze dane są dobre lub złe. Tak więc zaufanie do modelu znajduje się gdzieś pośrodku. Chcemy mieć większe zaufanie do naszego modelu, dlatego powinniśmy trenować więcej danych, a następnie je testować. – lukassos

Powiązane problemy