2015-10-13 4 views
11

मैं मॉडल पैरामीटर को एक विज्ञान के रूप में सीखने वाले अनुमानक के रूप में पास करने की कोशिश कर रहा हूं और मुझे कोई भाग्य नहीं है। ऐसा लगता है कि मेरे दिमाग में पैरामीटर में से एक में घोंसला है। उदाहरण के लिए: इसके अतिरिक्तसाइस्किट सीखने के लिए एक निर्देश पास करें

LinearRegression(copy_X=True, 
     fit_intercept={'copy_X': True, 'fit_intercept': False,'normalize': True}, 
    normalize=False) 

, मैं dict से अधिक पुनरावृति करने के लिए एक समारोह बनाया है और एक स्ट्रिंग की तरह बना सकते हैं:

params = { 
'copy_X': True, 
'fit_intercept': False, 
'normalize': True 
} 

lr = LinearRegression(params) 

मुझे देता है

'copy_X=True, fit_intercept=True, normalize=False' 

यह भी उतना ही असफल रहा था । किसी के पास कोई सलाह है? मेरे पास एकमात्र प्रतिबंध है कि डेटा मेरे पास एक ताना के रूप में आ जाएगा (वास्तव में एक जेसन ऑब्जेक्ट json.uploads के साथ लोड किया जा रहा है)।

धन्यवाद।

उत्तर

16

सबसे अच्छा समाधान सही मानकों के साथ अपने आकलनकर्ता आरंभ करने के लिए होगा अपने शब्दकोश खोल:

lr = LinearRegression(**params) 

किसी कारण से आप की जरूरत है कुछ पैरामीटर बाद में सेट करें, आप इसका उपयोग कर सकते हैं:

lr.set_params(params) 

इसका setattr का उपयोग करने का लाभ है जिसमें यह साइकिट पैरामीटर पर कुछ सत्यापन जांच करने की अनुमति देता है।

+0

यह स्वीकार्य उत्तर होना चाहिए - यह एक समारोह में kwargs का एक गुच्छा पारित करने का मानक तरीका है। – eqzx

2

मुझे मिल गया। इस तरह प्रयुक्त setattr।

for k,v in params.items(): 
    setattr(lr,k,v) 
0

fit_interceptLinearRegression वस्तु

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

तो क्यों अपने शब्दकोश है कि तर्क के लिए पारित किया जा रहा है बताते हैं कि का पहला तर्क है, अन्य आर्ग (यह भी वैकल्पिक) copy_X और normalize प्राप्त कर रहे हैं कोई पैरामीटर नहीं है इसलिए वे डिफ़ॉल्ट मान का उपयोग कर रहे हैं।

तुम भी कर सकता है:

params = { 
'copy_X': True, 
'fit_intercept': False, 
'normalize': True 
} 

lr = LinearRegression(copy_X = params['copy_X'], \ 
         fit_intercept = params['fit_intercept'], \ 
         normalize = params['normalize']) 
संबंधित मुद्दे