डेटमबॉक्स मशीन लर्निंग फ्रेमवर्क संस्करण 0.8.0 ने प्लेटोब्लॉकचैन डेटा इंटेलिजेंस जारी किया। लंबवत खोज। ऐ.

डेटंबॉक्स मशीन लर्निंग फ्रेमवर्क संस्करण 0.8.0 जारी किया

Datumbox फ्रेमवर्क v0.8.0 बाहर है और कई शक्तिशाली सुविधाओं को पैक करता है! यह संस्करण नए प्रीप्रोसेसिंग, फ़ीचर सेलेक्शन और मॉडल चयन एल्गोरिदम, नए शक्तिशाली स्टोरेज इंजन लाता है जो मॉडल और डेटाफ़्रेम को सहेजने / लोड करने, कई पूर्व-प्रशिक्षित मशीन लर्निंग मॉडल और बहुत सारी मेमोरी और गति सुधारों पर बेहतर नियंत्रण देता है। इसे अभी से डाउनलोड करें Github or मावेन सेंट्रल रिपोजिटरी.

संस्करण 0.8.0 के मुख्य लक्ष्यों में से एक फ्रेमवर्क के भंडारण तंत्र में सुधार करना और सभी समर्थित एल्गोरिदम को डिस्क-आधारित प्रशिक्षण उपलब्ध कराना था। नए स्टोरेज इंजन, मॉडल कब और कैसे बनाए जा रहे हैं, इस पर बेहतर नियंत्रण देते हैं। एक महत्वपूर्ण परिवर्तन यह है कि फिट () पद्धति समाप्त होने के बाद मॉडल स्वचालित रूप से संग्रहीत नहीं किए जा रहे हैं, लेकिन इसके बजाय किसी को मॉडल का नाम प्रदान करने के लिए सहेजें () विधि को स्पष्ट रूप से कॉल करने की आवश्यकता है। यह हमें न केवल एक क्रमिक चरण के माध्यम से जाने के लिए बल्कि डेटाफ़्रेम को बचाने / लोड करने के लिए आसान अस्थायी एल्गोरिदम को छोड़ने में सक्षम बनाता है:

Configuration configuration = Configuration.getConfiguration();
Dataframe data = ...; //load a dataframe here

MaximumEntropy.TrainingParameters params = new MaximumEntropy.TrainingParameters();
MaximumEntropy model = MLBuilder.create(params, getConfiguration());
model.fit(data);
model.save("MyModel"); //save the model using the specific name
model.close();

data.save("MyData"); //save the data using a specific name
data.close();

data = Dataframe.Builder.load("MyData", configuration); //load the data
model = MLBuilder.load(MaximumEntropy.class, "MyModel", configuration); //load the model
model.predict(data);
model.delete(); //delete the model

वर्तमान में हम दो स्टोरेज इंजनों का समर्थन करते हैं: इनमेमोरी इंजन जो बहुत तेज़ है क्योंकि यह मेमोरी में सब कुछ लोड करता है और मैपबीडी इंजन जो धीमा है लेकिन डिस्क-आधारित प्रशिक्षण की अनुमति देता है। आप अपने datumbox.configuration.properties को बदलकर किस इंजन का उपयोग कर सकते हैं या आप प्रोग्रामेटिक रूप से कॉन्फ़िगरेशन ऑब्जेक्ट को संशोधित कर सकते हैं। प्रत्येक इंजन की अपनी कॉन्फ़िगरेशन फ़ाइल होती है, लेकिन फिर से आप सब कुछ प्रोग्रामेटिक रूप से संशोधित कर सकते हैं:

Configuration configuration = Configuration.getConfiguration(); //conf from properties file

configuration.setStorageConfiguration(new InMemoryConfiguration()); //use In-Memory engine
//configuration.setStorageConfiguration(new MapDBConfiguration()); //use MapDB engine

कृपया ध्यान दें कि दोनों इंजनों में, एक निर्देशिका सेटिंग है जो नियंत्रित करती है कि मॉडल कहाँ संग्रहीत किए जा रहे हैं (इनमेमोरीकॉन्फ़िगरेशन.निर्देशिका और मैपडीबीकॉन्फ़िगरेशन.निर्देशिका विन्यास फाइल में गुण)। सुनिश्चित करें कि आप उन्हें बदलते हैं या फिर मॉडल आपके सिस्टम के अस्थायी फ़ोल्डर पर लिखे जाएंगे। कॉन्फ़िगरेशन फ़ाइलों की संरचना कैसे करें, इस बारे में अधिक जानकारी के लिए इस पर एक नज़र डालें कोड उदाहरण परियोजना.

नए संग्रहण तंत्र के साथ, अब इसे सार्वजनिक रूप से साझा करना संभव है पूर्व प्रशिक्षित मॉडल जो सेंटीमेंट एनालिसिस, स्पैम डिटेक्शन, लैंग्वेज डिटेक्शन, टॉपिक क्लासिफिकेशन और अन्य सभी मॉडल्स के क्षेत्रों को कवर करता है जो डेटाबॉक्स एपीआई के माध्यम से उपलब्ध हैं। अब तुम यह कर सकते हो डाउनलोड और एपीआई की आवश्यकता के बिना और दैनिक कॉल की संख्या द्वारा सीमित किए बिना अपनी परियोजना पर सभी पूर्व-प्रशिक्षित मॉडल का उपयोग करें। वर्तमान में प्रकाशित मॉडल InMemory भंडारण इंजन का उपयोग करके प्रशिक्षित किए जाते हैं और वे केवल अंग्रेजी का समर्थन करते हैं। भविष्य के रिलीज पर, मैं और अधिक भाषाओं के लिए समर्थन प्रदान करने की योजना बना रहा हूं।

नए ढांचे में, कई वर्गों के सार्वजनिक तरीकों पर कई बदलाव हैं (इसलिए यह पीछे की ओर संगत नहीं है)। सबसे उल्लेखनीय अंतर मॉडल के आरम्भिक तरीके पर है। जैसा कि हमने पहले के कोड उदाहरण में देखा था, मॉडल सीधे त्वरित नहीं हैं, बल्कि इसके बजाय MLBuilder वर्ग का उपयोग किसी मॉडल को बनाने या लोड करने के लिए किया जाता है। प्रशिक्षण मापदंडों को सीधे बिल्डर को प्रदान किया जाता है और उन्हें एक सेटर के साथ नहीं बदला जा सकता है।

एक और सुधार है जिस तरह से हम मॉडल चयन करते हैं। V0.8.0 नए मॉडलसेलेक्शन पैकेज को पेश करता है जो हमारे मॉडल के प्रदर्शन को मान्य करने और मापने के लिए सभी आवश्यक उपकरण प्रदान करता है। मेट्रिक्स सबपैक में हम वर्गीकरण, क्लस्टरिंग, रिग्रेशन और सिफारिश के लिए सबसे महत्वपूर्ण सत्यापन मैट्रिक्स प्रदान करते हैं। ध्यान दें कि ValidationMetrics प्रत्येक व्यक्तिगत एल्गोरिथ्म से हटा दिया जाता है और वे अब मॉडल के साथ एक साथ संग्रहीत नहीं होते हैं। फ्रेमवर्क नए स्प्लिटर्स सबपैकेज प्रदान करता है जो विभिन्न योजनाओं का उपयोग करके मूल डेटासेट को विभाजित करने में सक्षम बनाता है। वर्तमान में K- गुना विभाजन KFoldSplitter वर्ग का उपयोग करते हुए किया जाता है, जबकि डाटासेट को एक प्रशिक्षण और परीक्षण सेट में विभाजित करते हुए ShuffleSplitter के साथ प्राप्त किया जा सकता है। अंत में एक मॉडल को जल्दी से मान्य करने के लिए, ढांचा मान्यकर्ता वर्ग प्रदान करता है। यहां बताया गया है कि कोई व्यक्ति कोड की कुछ पंक्तियों के भीतर K- गुना क्रॉस सत्यापन कैसे कर सकता है:

ClassificationMetrics vm = new Validator<>(ClassificationMetrics.class, configuration)
    .validate(new KFoldSplitter(k).split(data), new MaximumEntropy.TrainingParameters());

नया प्रीप्रोसेसिंग पैकेज पुराने डेटा ट्रांसफ़ॉर्मर्स को बदल देता है और मशीन के एल्गोरिदम से पहले डेटा को स्केल और एनकोड करने पर बेहतर नियंत्रण देता है। न्यूमेरिकल वेरिएबल्स को स्केल करने के लिए निम्न एल्गोरिदम का समर्थन किया जाता है: मिनमैक्सस्लेकर, स्टैण्डर्डस्क्लेर, मैक्सअब्स्कैल्सर और बाइनरीस्लेकर। बाउलरी में श्रेणीबद्ध चर एन्कोडिंग के लिए आप निम्न विधियों का उपयोग कर सकते हैं: OneHotEncoder और CornerConstraintsEncoder। यहाँ आप नए एल्गोरिदम का उपयोग कर सकते हैं:

StandardScaler numericalScaler = MLBuilder.create(
    new StandardScaler.TrainingParameters(), 
    configuration
);
numericalScaler.fit_transform(trainingData);

CornerConstraintsEncoder categoricalEncoder = MLBuilder.create(
    new CornerConstraintsEncoder.TrainingParameters(), 
    configuration
);
categoricalEncoder.fit_transform(trainingData);

एक अन्य महत्वपूर्ण अद्यतन तथ्य यह है कि फीचर चयन पैकेज को फिर से लिखा गया था। वर्तमान में सभी फ़ीचर चयन एल्गोरिदम विशिष्ट डेटाटाइप्स पर ध्यान केंद्रित करते हैं, जिससे विभिन्न तरीकों को एक साथ चेन करना संभव हो जाता है। परिणामस्वरूप TextClassifier और Modeler कक्षाएं केवल एक के बजाय फीचर चयनकर्ता मापदंडों की एक सूची प्राप्त करती हैं।

जैसा कि पहले उल्लेख किया गया है कि सभी एल्गोरिदम अब डिस्क-आधारित प्रशिक्षण का समर्थन करते हैं, जिसमें मैट्रिसेस का उपयोग करना शामिल है (केवल अपवाद सपोर्ट वेक्टर मशीनें हैं)। नया भंडारण इंजन तंत्र भी कुछ एल्गोरिदम या डेटाफ़्रेम को कॉन्फ़िगर करने के लिए संभव बनाता है ताकि मेमोरी को डिस्क पर संग्रहीत किया जा सके। मुख्य रूप से नए भंडारण इंजन तंत्र के कारण लेकिन DPMM परिवार के लोगों जैसे व्यक्तिगत एल्गोरिदम के ट्यूनिंग के कारण कई गति सुधार पेश किए गए थे।

अंतिम लेकिन कम से कम नया संस्करण सभी निर्भरता को उनके नवीनतम संस्करणों में अद्यतन नहीं करता है और उनमें से कुछ को हटा देता है जैसे कि कॉमन्स-लैंग और lp_solve। कॉमन्स-लैंग, जो HTML पार्सिंग के लिए इस्तेमाल किया गया था, को तेजी से कस्टम HTMLParser कार्यान्वयन के साथ बदल दिया गया है। Lp_solve को शुद्ध Java सिंप्लेक्स सॉल्वर से बदल दिया गया है जिसका अर्थ है कि Datumbox को अब ऑपरेटिंग सिस्टम पर स्थापित विशिष्ट सिस्टम लाइब्रेरी की आवश्यकता नहीं है। इसके अलावा lp_solve को जाना पड़ा क्योंकि यह LGPLv2 का उपयोग करता है जो Apache 2.0 लाइसेंस के साथ संगत नहीं है।

संस्करण 0.8.0 फ्रेमवर्क पर कई और नई सुविधाएँ और सुधार लाता है। परिवर्तनों की विस्तृत जानकारी के लिए कृपया जाँच करें चैंज.

के कोड क्लोन करने के लिए मत भूलना डेटांबॉक्स फ्रेमवर्क v0.8.0 Github से, बाहर की जाँच करें कोड उदाहरण और पूर्व-प्रशिक्षित मशीन लर्निंग मॉडल डाउनलोड करें डाटंबॉक्स चिड़ियाघर। मुझे आपकी टिप्पणियों और सुझावों की प्रतीक्षा है।

समय टिकट:

से अधिक दातुनॉक्स