Scikit-learn (sklearn) to najlepszy wybór do uczenia maszynowego, spośród trzech wymienionych. Chociaż Pandy i Statsmodele zawierają pewne algorytmy uczenia predykcyjnego, są one ukryte / jeszcze nie są gotowe do produkcji. Często, ponieważ autorzy będą pracować nad różnymi projektami, biblioteki są komplementarne. Na przykład ostatnio Ramki danych Pandas zostały zintegrowane z Statsmodels. Związek między sklearn a Pandami nie jest (jeszcze) obecny.
Zdefiniuj funkcjonalność. Wszystkie biegną. Jeśli masz na myśli to, co jest najbardziej przydatne, zależy to od twojej aplikacji. Na pewno dałbym Pandas +1 tutaj, ponieważ dodało świetną nową strukturę danych do Pythona (ramki danych). Pandy prawdopodobnie mają również najlepsze API.
Wszystkie są aktywnie wspierane, choć powiedziałbym, że Pandas ma najlepszą bazę kodu. Sklearn i Pandy są bardziej aktywne niż Statsmodels.
Oczywistym wyborem jest Sklearn. Jest to łatwe i jasne, jak to zrobić.
from sklearn.linear_models import LogisticRegression as LR
logr = LR()
logr.fit( X, Y )
results = logr.predict( test_data)
linear_model
(pojedyncze), a nielinear_models
.Chciałbym zakwalifikować i nieco wyjaśnić przyjętą odpowiedź.
Te trzy pakiety wzajemnie się uzupełniają, ponieważ obejmują różne obszary, mają różne główne cele lub podkreślają różne obszary uczenia maszynowego / statystyki.
statsmodels ma zależność pand, pandas opcjonalnie używa statsmodels do niektórych statystyk. statsmodels
patsy
zapewnia interfejs podobny do modeli jak R.Modele między scikit-learn i statsmodels pokrywają się, ale z różnymi celami. patrz na przykład Dwie kultury: statystyki czy uczenie maszynowe?
trochę więcej o statsmodels
statsmodels ma najniższą aktywność rozwojową i najdłuższy cykl uwalniania spośród wszystkich trzech. statsmodels ma wielu współpracowników, ale niestety wciąż tylko dwóch „opiekunów” (jestem jednym z nich).
Rdzeń statsmodels jest „gotowy do produkcji”: modele liniowe, solidne modele liniowe, uogólnione modele liniowe i modele dyskretne istnieją już od kilku lat i są weryfikowane względem Staty, a R. statsmodels ma również część analizy szeregów czasowych obejmującą AR, ARMA i Regresja VAR (wektorowa autoregresja), które nie są dostępne w żadnym innym pakiecie Pythona.
Kilka przykładów pokazujących pewne specyficzne różnice między podejściem uczenia maszynowego w scikit-learn a podejściem statystycznym i ekonometrycznym w statsmodels:
Prosta regresja liniowa
OLS
, ma dużą liczbę analiz po oszacowaniu http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.html w tym testy parametrów, wartości odstających i testy specyfikacji http: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-testsRegresję logistyczną można wykonać w modelach statystycznych jako
Logit
model dyskretny lub jako rodzina w uogólnionym modelu liniowym (GLM
). http://statsmodels.sourceforge.net/devel/glm.html#module-referenceGLM
obejmuje zwykłe rodziny, dyskretne modele zawiera opróczLogit
takżeProbit
, wielomianu i liczyć regresji.Logit
Korzystanie
Logit
jest tak proste, jak to http://statsmodels.sourceforge.net/devel/examples/generated/example_discrete.htmlźródło