[Python] Scikit- सीखने classifiers के लिए सबसे जानकारीपूर्ण विशेषताएं कैसे प्राप्त करें?


Answers

लार्समैन्स कोड की मदद से मैं द्विआधारी मामले के लिए इस कोड के साथ आया था:

def show_most_informative_features(vectorizer, clf, n=20):
    feature_names = vectorizer.get_feature_names()
    coefs_with_fns = sorted(zip(clf.coef_[0], feature_names))
    top = zip(coefs_with_fns[:n], coefs_with_fns[:-(n + 1):-1])
    for (coef_1, fn_1), (coef_2, fn_2) in top:
        print "\t%.4f\t%-15s\t\t%.4f\t%-15s" % (coef_1, fn_1, coef_2, fn_2)
Question

मशीन सीखने के संकुल जैसे लिबिनियर और एनएलटीके में क्लासिफायरियर एक विधि show_most_informative_features() प्रस्तुत करते हैं, जो कि डीबगिंग विशेषताओं के लिए वास्तव में उपयोगी है:

viagra = None          ok : spam     =      4.5 : 1.0
hello = True           ok : spam     =      4.5 : 1.0
hello = None           spam : ok     =      3.3 : 1.0
viagra = True          spam : ok     =      3.3 : 1.0
casino = True          spam : ok     =      2.0 : 1.0
casino = None          ok : spam     =      1.5 : 1.0

मेरा प्रश्न यह है कि क्या कुछ ऐसी ही क्लासिफायर में सीखने के लिए लागू किया गया है- सीखना मैंने दस्तावेज़ीकरण की खोज की, लेकिन कुछ भी ऐसा नहीं मिला।

अगर ऐसा कोई कार्य नहीं है, तो क्या किसी को पता है कि उन मूल्यों को कैसे प्राप्त किया जाए?

आपका बहुत बहुत धन्यवाद!




हमने हाल ही में एक लाइब्रेरी ( https://github.com/TeamHG-Memex/eli5 ) जारी की है जो ऐसा करने की अनुमति देता है: यह वैकुयस-सीखना, बाइनरी / मल्टीकालेस मामलों से भिन्न-क्लासफ़ीयर हैंडल करती है, सुविधा मूल्यों के अनुसार पाठ को उजागर करने की अनुमति देता है , आइपीथॉन के साथ एकीकृत करता है, आदि।




आप इस तरह से ऐसा कुछ भी कर सकते हैं ताकि ऑर्डर करके महत्व विशेषताओं का ग्राफ बनाया जा सके:

importances = clf.feature_importances_
std = np.std([tree.feature_importances_ for tree in clf.estimators_],
         axis=0)
indices = np.argsort(importances)[::-1]

# Print the feature ranking
#print("Feature ranking:")


# Plot the feature importances of the forest
plt.figure()
plt.title("Feature importances")
plt.bar(range(train[features].shape[1]), importances[indices],
   color="r", yerr=std[indices], align="center")
plt.xticks(range(train[features].shape[1]), indices)
plt.xlim([-1, train[features].shape[1]])
plt.show()