回答:
Scikit-learn(sklearn)は、リストされている3つのうち、機械学習に最適です。PandasとStatsmodelsには予測学習アルゴリズムが含まれていますが、それらはまだ生産準備が整っていない/隠されています。多くの場合、著者はさまざまなプロジェクトに取り組むため、図書館は無料です。たとえば、最近、PandasのデータフレームがStatsmodelsに統合されました。sklearnとPandasの関係は存在しません(まだ)。
機能を定義します。それらはすべて実行されます。最も有用なものを意味する場合は、アプリケーションによって異なります。Python(データフレーム)にすばらしい新しいデータ構造が追加されたため、ここでPandasに間違いなく+1を付けます。パンダもおそらく最高のAPIを持っています。
それらはすべて積極的にサポートされていますが、パンダには最高のコードベースがあります。SklearnとPandasはStatsmodelsよりもアクティブです。
明確な選択はスクレーンです。実行方法は簡単で明確です。
from sklearn.linear_models import LogisticRegression as LR
logr = LR()
logr.fit( X, Y )
results = logr.predict( test_data)
linear_model
(単数形)であり、ではありませんlinear_models
。
受け入れられた回答を少し限定して明確にしたいと思います。
3つのパッケージは、異なる分野をカバーし、異なる主な目的を持ち、機械学習/統計の異なる分野を強調するため、互いに補完的です。
statsmodelsには依存関係としてパンダがあり、パンダは統計情報にオプションでstatsmodelsを使用します。statsmodelsはpatsy
、Rと同様のモデルへの類似した数式インターフェイスを提供するために使用しています。
scikit-learnとstatsmodelsの間のモデルにはいくつかの重複がありますが、目的は異なります。たとえば、2つの文化:統計と機械学習をご覧ください。
統計モデルについてもう少し
statsmodelsは、3つの開発アクティビティが最も低く、リリースサイクルが最も長くなっています。statsmodelsには多くの貢献者がいますが、残念ながらまだ2人の「メンテナー」のみです(私はそのうちの1人です)。
statsmodelsの中核は「生産準備完了」です。線形モデル、堅牢な線形モデル、一般化線形モデル、離散モデルは数年前から存在し、StataとRに対して検証されています。statsmodelsには、AR、ARMA、 VAR(ベクトル自己回帰)回帰。他のPythonパッケージでは使用できません。
scikit-learnの機械学習アプローチとstatsmodelsの統計および計量経済学アプローチとの特定の違いを示すいくつかの例:
単純な線形回帰、OLS
には、パラメーターのテスト、外れ値の測定、仕様のテストを含むhttp://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.htmlの多数の推定後分析があり
ます。 /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests
Logistic Regressionは、statsmodels Logit
で離散モデルまたは一般化線形モデルのファミリーとして実行できます(GLM
)。http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
には通常のファミリが含まれ、離散モデルにはLogit
さらにProbit
、多項および回帰回帰も含まれます。
ロジット
使用方法Logit
はこれと同じくらい簡単です
http://statsmodels.sourceforge.net/devel/examples/generated/example_discrete.html
>>> import statsmodels.api as sm
>>> x = sm.add_constant(data.exog, prepend=False)
>>> y = data.endog
>>> res1 = sm.Logit(y, x).fit()
Optimization terminated successfully.
Current function value: 0.402801
Iterations 7
>>> print res1.summary()
Logit Regression Results
==============================================================================
Dep. Variable: y No. Observations: 32
Model: Logit Df Residuals: 28
Method: MLE Df Model: 3
Date: Sat, 26 Jan 2013 Pseudo R-squ.: 0.3740
Time: 07:34:59 Log-Likelihood: -12.890
converged: True LL-Null: -20.592
LLR p-value: 0.001502
==============================================================================
coef std err z P>|z| [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1 2.8261 1.263 2.238 0.025 0.351 5.301
x2 0.0952 0.142 0.672 0.501 -0.182 0.373
x3 2.3787 1.065 2.234 0.025 0.292 4.465
const -13.0213 4.931 -2.641 0.008 -22.687 -3.356
==============================================================================
>>> dir(res1)
...
>>> res1.predict(x.mean(0))
0.25282026208742708