ส่งออกน้ำหนัก (สูตร) ​​จาก Random Forest Regressor ใน Scikit-Learn


9

ฉันได้ฝึกฝนแบบจำลองการทำนายด้วย Scikit Learn ใน Python (Random Forest Regressor) และฉันต้องการแยกน้ำหนักของคุณลักษณะแต่ละอย่างเพื่อสร้างเครื่องมือ excel สำหรับการคาดการณ์ด้วยตนเอง

สิ่งเดียวที่ฉันพบคือ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])เพื่อทำ แต่ฉันต้องการมันในไฟล์ excel


2
regressor สุ่มป่าเป็นป่าสุ่มของdecision treesดังนั้นคุณจะไม่ได้หนึ่งสมการเช่นเดียวกับการถดถอยเชิงเส้น คุณจะได้รับif, then, elseตรรกะจำนวนมากและสมการสุดท้ายเพื่อเปลี่ยนค่าสุดท้ายให้เป็นค่าตัวเลข แม้ว่าคุณจะสามารถมองเห็นต้นไม้และดึงตรรกะทั้งหมดออกมาทั้งหมดนี้ดูเหมือนเป็นระเบียบขนาดใหญ่ หากคุณกำลังทำงานใน excel คุณอาจคิดถึงการฝึกอบรมแบบจำลองของคุณใน excel โดยใช้ Azure อย่างไรก็ตามฉันอาจจะเรียกหลามจากภายใน excel
AN6U5

การเฉลี่ยของใบไม้แต่ละใบจะไม่ทำงานใช่ไหม ฉันลองแบบจำลองการถดถอยเชิงเส้นและความแตกต่างก็อยู่ในขอบเขต ดังนั้นหากไม่มีวิธีที่เหมาะสมและมีประสิทธิภาพในการส่งออกฟอเรสต์แบบสุ่มฉันอาจต้องย้อนกลับไปที่การถดถอยเชิงเส้น
Tasos


1
ขอบคุณ แต่ฉันรู้วิธีนี้ใน LR คุณช่วยกรุณาแสดงความคิดเห็นในคำตอบเพื่อที่ฉันจะได้ทำเครื่องหมายว่าตอบแล้วหรือไม่?
Tasos

มันอาจจะคุ้มค่าที่จะออกไปข้างนอก / ยังไม่ได้รับคำตอบสองสามวันเพื่อดูว่าคนอื่นมีความเข้าใจที่เป็นประโยชน์หรือไม่ การแลกเปลี่ยนข้อมูลด้านวิทยาศาสตร์ข้อมูลมีขนาดเล็กกว่ากองล้นมากดังนั้นจึงใช้เวลา 2-3 วันในการรับคำตอบที่ดี
AN6U5

คำตอบ:



0

แทนการส่งออกน้ำหนักคุณสามารถส่งออกรูปแบบไปยังแฟ้มดองและใช้xlwingsอ่านข้อมูลจากสเปรดชีทที่โหลดรูปแบบดองและเรียกใช้การคาดคะเนนี่เป็นคำถามที่คล้ายกัน


0

ฉันเดาว่าคุณต้องการแยกตรรกะทั้งหมดตามด้วยต้นไม้ที่แตกต่างกันเพื่อจบลงที่ regressor สุดท้าย เพื่อที่คุณจะต้องสกัดตรรกะของต้นไม้แต่ละต้นก่อนแล้วจึงแยกวิธีการติดตามเส้นทางเหล่านั้น Scikit เรียนรู้สามารถให้ที่ผ่าน. decision_path (X) กับ X ชุดข้อมูลบางส่วนที่จะทำนาย จากที่นี่คุณจะได้รับความคิดเกี่ยวกับวิธีการคาดการณ์ป่าแบบสุ่มและตรรกะใดที่ตามมาในแต่ละขั้นตอน

เมื่อคุณแยกการตัดสินใจออกแล้วคุณสามารถใช้Tree Interpreterเพื่อรับ "สูตร" ของ Random Forest ที่คุณฝึกฝน ฉันไม่คุ้นเคยกับ Tree Interpreter แต่ดูเหมือนว่าจะทำงานโดยตรงกับผู้สร้างแบบจำลองที่คุณฝึกมาแล้วเช่น

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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.