ฉันต้องการที่จะมีคุณสมบัติและชี้แจงคำตอบที่ได้รับการยอมรับเล็กน้อย
แพ็คเกจทั้งสามนั้นเสริมซึ่งกันและกันเนื่องจากครอบคลุมพื้นที่ต่าง ๆ มีวัตถุประสงค์หลักที่แตกต่างกันหรือเน้นพื้นที่ต่าง ๆ ในการเรียนรู้ / สถิติของเครื่อง
- แพนด้าเป็นแพคเกจเพื่อจัดการและดำเนินการกับข้อมูลโดยตรง
- scikit-learning กำลังทำการเรียนรู้ด้วยเครื่องโดยเน้นการสร้างแบบจำลองการทำนายด้วยข้อมูลที่มีขนาดใหญ่และห่าง
- statsmodels กำลังทำสถิติและเศรษฐมิติ "แบบดั้งเดิม" โดยเน้นการประเมินพารามิเตอร์และการทดสอบทางสถิติ
statsmodels มี pandas เป็นการพึ่งพา pandas เลือกใช้ statsmodels สำหรับสถิติบางอย่าง statsmodels ใช้patsy
เพื่อจัดทำอินเทอร์เฟซสูตรคล้ายกับโมเดลเป็น R
มีเหลื่อมซ้อนกันในแบบจำลองระหว่าง scikit-learn และ statsmodels แต่มีวัตถุประสงค์ที่แตกต่างกัน ดูตัวอย่างThe Two Cultures: สถิติกับการเรียนรู้ของเครื่อง?
เพิ่มเติมเกี่ยวกับสถิติรุ่น
statsmodels มีกิจกรรมการพัฒนาที่ต่ำที่สุดและรอบการปล่อยที่ยาวที่สุดของทั้งสาม statsmodels มีผู้สนับสนุนมากมาย แต่น่าเสียดายที่ยังมี "ผู้ดูแล" เพียงสองคนเท่านั้น (ฉันเป็นหนึ่งในนั้น)
แกนหลักของสเตตัสโมเดลคือ "การเตรียมการผลิต": โมเดลเชิงเส้น, โมเดลเชิงเส้นที่แข็งแกร่ง, โมเดลเชิงเส้นทั่วไปและโมเดลที่ไม่ต่อเนื่องได้รับมาหลายปีแล้วและได้รับการตรวจสอบกับ Stata และอาร์ส การถดถอย VAR (vector autoregressive) ซึ่งไม่สามารถใช้ได้ในแพ็คเกจหลามอื่น ๆ
ตัวอย่างบางส่วนที่จะแสดงความแตกต่างเฉพาะระหว่างวิธีการเรียนรู้ของเครื่องใน Scikit-Learn และวิธีการทางสถิติและเศรษฐมิติในรูปแบบสถิติ:
การถดถอยเชิงเส้นอย่างง่ายOLS
มีจำนวนมากของการวิเคราะห์หลังการประเมิน
http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLSResults.htmlรวมถึงการทดสอบเกี่ยวกับพารามิเตอร์มาตรการนอกและการทดสอบคุณสมบัติhttp: / /statsmodels.sourceforge.net/devel/stats.html#residual-diagnostics-and-specification-tests
การถดถอยโลจิสติกสามารถทำได้ในLogit
รูปแบบสถิติไม่ว่าจะเป็นรูปแบบในการแยกหรือเป็นครอบครัวในรูปแบบเชิงเส้นทั่วไป ( GLM
) http://statsmodels.sourceforge.net/devel/glm.html#module-reference
GLM
รวมถึงครอบครัวปกติรุ่นที่ไม่ต่อเนื่องประกอบด้วยนอกจากLogit
นี้Probit
การถดถอยหลายส่วนและการนับ
logit
การใช้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