मैंने scikit-learn मॉडल बनाया और मैं एक दैनिक पायथन क्रॉन जॉब (एनबी में पुन: उपयोग करना चाहता हूं: कोई अन्य प्लेटफार्म शामिल नहीं है - कोई आर, कोई जावा & सी)।scikit- सीखने मॉडल दृढ़ता: अचार बनाम pmml बनाम ...?
मैं pickled (वास्तव में, मैंने अपना खुद का ऑब्जेक्ट उठाया जिसका एक क्षेत्र GradientBoostingClassifier
है), और मैं इसे क्रॉन नौकरी में अन-पिकल करता हूं। अब तक बहुत अच्छा है (और Save classifier to disk in scikit-learn और Model persistence in Scikit-Learn? में चर्चा की गई है)।
हालांकि, मैं sklearn
उन्नत बनाया है और अब मैं इन चेतावनियों मिलती है:
.../.local/lib/python2.7/site-packages/sklearn/base.py:315:
UserWarning: Trying to unpickle estimator DecisionTreeRegressor from version 0.18.1 when using version 0.18.2. This might lead to breaking code or invalid results. Use at your own risk.
UserWarning)
.../.local/lib/python2.7/site-packages/sklearn/base.py:315:
UserWarning: Trying to unpickle estimator PriorProbabilityEstimator from version 0.18.1 when using version 0.18.2. This might lead to breaking code or invalid results. Use at your own risk.
UserWarning)
.../.local/lib/python2.7/site-packages/sklearn/base.py:315:
UserWarning: Trying to unpickle estimator GradientBoostingClassifier from version 0.18.1 when using version 0.18.2. This might lead to breaking code or invalid results. Use at your own risk.
UserWarning)
अब मुझे क्या करना चाहिए?
मैं 0.18.1 को downgrage और इसके साथ छड़ी जब तक मैं मॉडल के पुनर्निर्माण के लिए तैयार हूँ कर सकते हैं। विभिन्न कारणों से मुझे यह अस्वीकार्य लगता है।
मैं फ़ाइल को अनदेखा कर सकता हूं और इसे फिर से उठा सकता हूं। यह 0.18.2 के साथ काम किया, लेकिन 0.19 के साथ टूटता है। NFG।
joblib
कोई बेहतर नहीं दिखता है।मेरी इच्छा है कि मैं डेटा को एक संस्करण-स्वतंत्र ASCII प्रारूप (उदा।, JSON या XML) में सहेज सकूं। यह स्पष्ट रूप से इष्टतम समाधान है, लेकिन ऐसा करने के लिए NO ऐसा लगता है (Sklearn - model persistence without pkl file भी देखें)।
मैं PMML के मॉडल को बचा सकता है, लेकिन इसके समर्थन गुनगुना है पर सबसे अच्छा: मैं मॉडल बचाने को
sklearn2pmml
उपयोग कर सकते हैं (हालांकि नहीं आसानी से), औरaugustus
/lightpmmlpredictor
पर लागू होते हैं (नहीं हालांकि भार) मॉडल। हालांकि, उनमें से कोई भीpip
पर सीधे उपलब्ध नहीं है, जो तैनाती को एक दुःस्वप्न बनाता है। इसके अलावा,augustus
&lightpmmlpredictor
परियोजनाएं मरने लगती हैं। Importing PMML models into Python (Scikit-learn) - नहीं।उपर्युक्त का एक संस्करण:
sklearn2pmml
का उपयोग करके पीएमएमएल को सहेजें, और स्कोरिंग के लिएopenscoring
का उपयोग करें। बाहरी प्रक्रिया के साथ इंटरफेसिंग की आवश्यकता है। युक।
सुझाव?
यह अचार की तुलना में अधिक विश्वसनीय कैसे है? अचार के साथ समस्या यह है कि यदि 'sklearn' कक्षा परिभाषा को बदलता है (उदाहरण के लिए, स्लॉट ड्रॉप या नाम बदलता है), तो मुझे 'serialize_ *' और 'deserialize_ *' फ़ंक्शन को फिर से लिखना होगा और, अधिक महत्वपूर्ण, deserializer लिखना होगा जो परिवर्तित करता है _old_ संस्करण के _old_ संस्करण में serialization। मैं मानता हूं कि यह शायद अचार दुःस्वप्न से बेहतर है, लेकिन शायद ही कभी। – sds
यह गारंटी नहीं दे सकता कि आप sklearn के 20, या 200 संस्करण के साथ संगत होंगे। लेकिन यह कम से कम आपको स्थिति पर अधिक नियंत्रण देता है। जैसे यदि sklearn पूरी तरह से अपने '' वर्गीकरण लॉस फ़ंक्शन'' को फिर से लिखता है, तो आप प्रभावित नहीं होंगे। –