Scikit-Learn में रैंडम फॉरेस्ट रेजिस्टर से वज़न (सूत्र) निर्यात करें


9

मैंने स्किकिट लर्न इन पाइथन (रैंडम फ़ॉरेस्ट रिग्रेसर) के साथ एक भविष्यवाणी मॉडल का प्रशिक्षण लिया और मैं मैनुअल भविष्यवाणी के लिए एक एक्सेल टूल बनाने के लिए प्रत्येक सुविधा के भार को किसी तरह निकालना चाहता हूं।

केवल एक चीज जो मुझे मिली है, model.feature_importances_लेकिन यह मदद नहीं करती है।

क्या इसे हासिल करने का कोई तरीका है?

def performRandomForest(X_train, y_train, X_test, y_test):

    '''Perform Random Forest Regression'''

    from sklearn.ensemble  import  RandomForestRegressor

    model  =  RandomForestRegressor()
    model.fit( X_train , y_train )

    #make predictions
    expected  = y_test
    predicted  = model.predict( X_test )

    #summarize the fit of the model
    mse  = np.mean(( predicted - expected )** 2)
    accuracy = ( model.score ( X_train , y_train ))

    return model, mse, accuracy

फिलहाल, मैं model.predict([features])इसे करने के लिए उपयोग करता हूं , लेकिन मुझे एक्सेल फाइल में इसकी आवश्यकता है।


2
एक रैंडम फ़ॉरेस्ट रेजिस्टर एक रैंडम फ़ॉरेस्ट है decision trees, इसलिए आपको ऐसा कोई समीकरण नहीं मिलेगा जैसा आप लीनियर रिग्रेशन के साथ करते हैं। इसके बजाय आपको if, then, elseतर्क के एक गुच्छा और कई अंतिम समीकरणों को संख्यात्मक मूल्यों में बदलने के लिए मिलेगा । यहां तक ​​कि अगर आप पेड़ की कल्पना कर सकते हैं और तर्क के सभी को बाहर निकाल सकते हैं, तो यह सब एक बड़ी गड़बड़ की तरह लगता है। यदि आप एक्सेल में काम कर रहे हैं, तो शायद एज़्योर का उपयोग करके अपने मॉडल को एक्सेल में प्रशिक्षित करने के बारे में सोचें। हालाँकि, मैं शायद एक्सेल के भीतर से अजगर को फोन करूंगा।
AN6U5

प्रत्येक पत्ती का औसत लेने से काम नहीं चलेगा? मैंने एक रेखीय प्रतिगमन मॉडल की भी कोशिश की और अंतर सीमाओं के अंदर है। इसलिए, अगर यादृच्छिक जंगल को निर्यात करने का कोई उचित और कुशल तरीका नहीं है, तो मुझे रैखिक प्रतिगमन पर वापस जाने की आवश्यकता हो सकती है।
तस्सो


1
धन्यवाद, लेकिन मुझे LR में इस तरह से पता था। क्या आप कृपया अपनी टिप्पणियों को एक उत्तर पर जोड़ सकते हैं ताकि मैं इसे उत्तर के रूप में चिह्नित कर सकूं?
तसोस

यह शायद कुछ दिनों के लिए छोड़ने / अनुत्तरित होने के लायक है यह देखने के लिए कि क्या किसी और के पास उपयोगी अंतर्दृष्टि है। डेटा विज्ञान स्टैक एक्सचेंज स्टैक ओवरफ्लो की तुलना में बहुत छोटा है, इसलिए अच्छे व्यावहारिक जवाब पाने के लिए कई बार 2-3 दिन लगते हैं।
AN6U5

जवाबों:



0

इसके बजाय वजन निर्यात के लिए, आप एक अचार फाइल करने के लिए मॉडल का निर्यात और एक का उपयोग कर सकते xlwings स्प्रेडशीट से डेटा को पढ़ने के लिए, मसालेदार मॉडल लोड और एक भविष्यवाणी चलाने यहाँ एक इसी तरह के सवाल है


0

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

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

from treeinterpreter import treeinterpreter as ti
# fit a scikit-learn's regressor model

rf = RandomForestRegressor()

rf.fit(trainX, trainY)

prediction, bias, contributions = ti.predict(rf, testX)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.