2011-09-22 4 views
14

में भारित लॉजिस्टिक रिग्रेशन मैं पाइथन में लॉजिस्टिक रिग्रेशन (नियमित नहीं) के लिए एक अच्छा कार्यान्वयन की तलाश में हूं। मैं एक पैकेज की तलाश में हूं जो प्रत्येक वेक्टर के लिए वजन भी प्राप्त कर सकता है। क्या कोई अच्छा कार्यान्वयन/पैकेज सुझा सकता है? धन्यवाद!पायथन

+0

प्रासंगिक http://stackoverflow.com/questions/3754051/python-or-sql-logistic-regression – Mansuro

+1

कुछ भी नहीं है की pssible डुप्लिकेट इस पोस्ट में, मैंने scipy का उपयोग करने का भी प्रयास किया है, लेकिन वजन का कोई उपयोग नहीं मिला ... – user5497

उत्तर

-2

क्या आप बेवकूफ जानते हैं? यदि नहीं, तो Scipy और matplotlib पर भी एक नज़र डालें।

+2

Scipy और नम्पी डॉट में कोई लॉजिस्टिक रिग्रेशन कार्यान्वयन है (या मुझे कोई नहीं मिला ...)। matplotlib ज्यादातर ग्राफ, चित्र, इत्यादि के लिए उपयोग किया जाता है ... – user5497

+1

मुझे यह [ब्लॉग] मिलता है (http://blog.smellthedata.com/2009/06/python-logistic-regression-with-l2.html) – gunzapper

+0

धन्यवाद! मैंने इसे देखा, हालांकि यह एल 2 नियमित लॉजिस्टिक रिग्रेशन (और नियमित लॉजिस्टिक रिग्रेशन नहीं) लागू करता है, और इसके अलावा यह वजन को लागू नहीं करता है ... – user5497

0
+1

धन्यवाद, हालांकि मुझे नहीं पता था कि प्रत्येक वेक्टर को अलग-अलग वजन कैसे देना है .. – user5497

+0

'sklearn.linear_model.LogisticRegression' एक वर्ग है, उसकी 'फिट' विधि आपको वजन परिभाषित करने देती है। – ohe

+0

@ ओहे कैसे? मुझे 'फिट' विधि मिली है, लेकिन यह केवल लेबल और सुविधाओं के लिए पैरामीटर स्वीकार करता है। वजन नहीं –

20

मैं ध्यान दें कि इस सवाल का अब काफी पुराना है लेकिन उम्मीद है कि इस किसी की मदद कर सकते हैं पर एक नज़र डालें। sklearn के साथ, आप बस हानि के रूप में 'लॉग ऑन' में पास करके एक रसद प्रतिगमन मॉडल बनाने के लिए SGDClassifier वर्ग का उपयोग कर सकते हैं:

sklearn.linear_model.SGDClassifier(loss='log', ...). 

इस वर्ग fit() समारोह में भारित नमूने लागू करता है:

classifier.fit(X, Y, sample_weight=weights) 

जहां वजन एक सरणी है जिसमें नमूना भार होता है जो एक्स (

में डेटा बिंदुओं की संख्या के रूप में एक ही लंबाई (स्पष्ट रूप से) होना चाहिए, पूर्ण दस्तावेज़ीकरण के लिए http://scikit-learn.org/dev/modules/generated/sklearn.linear_model.SGDClassifier.html देखें।

+3

ओलिवियर ग्रिसेल द्वारा समर्थित https://twitter.com/ogrisel/status/476367379413610497 – r0u1i

+1

यह मल्टीक्लास समस्याओं के लिए एक बनाम-आराम का उपयोग करता है और ऐसा लगता है कि यह 'logisticRegression' में 'multi_class =' ​​multinomial 'विकल्प का समर्थन नहीं करता है – akxlr

2

मुझे लगता है कि आप क्या चाहते हैं statsmodels है। जीएलएम और अन्य रैखिक तरीकों के लिए इसका बहुत अच्छा समर्थन है। यदि आप आर से आ रहे हैं, तो आपको सिंटैक्स बहुत परिचित लगेगा।

statsmodels weighted regression

getting started w/ statsmodels

4

"संतुलित" मोड y का मान स्वचालित रूप से इनपुट डेटा में वजन विपरीत वर्ग आवृत्तियों के लिए आनुपातिक समायोजित करने के लिए उपयोग करता है के रूप में N_SAMPLES/(n_classes * np.bincount (y))

from sklearn.linear_model import LogisticRegression 

model = LogisticRegression(class_weight='balanced') 

model = model.fit(X, y) 

संपादित

नमूना भार फिट विधि में जोड़ा जा सकता है। आपको बस n_samples की एक सरणी पास करनी है। प्रलेखन की जाँच करें -

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression.fit

आशा इस में वह है ...

+0

यह कक्षा असंतुलन का संदर्भ देता है, लेकिन क्या होगा यदि हम प्रत्येक नमूने के लिए अलग वजन का उपयोग करना चाहते हैं? – mrgloom

+0

अच्छा सवाल @ mrgloom! आप "संतुलित" की बजाय वजन के एक निर्देश की आपूर्ति करके वजन निर्दिष्ट कर सकते हैं। वर्ग {class_label: weight} रूप में कक्षाओं से जुड़े वजन। यदि नहीं दिया जाता है, तो सभी वर्गों में वजन होना चाहिए। –

+0

मुझे प्रत्येक वर्ग के लिए अलग-अलग वजन की आवश्यकता नहीं है, प्रत्येक कक्षा के लिए नहीं। – mrgloom