我有一个针对数据集运行的Gaussian naive bayes算法。我需要的是获取目标类的特性重要性(特性的影响性)。
这是我的密码:
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(inputs, target, test_size=0.2)
gaussian_nb = GaussianNB()gaussian_nb.fit(X_train, y_train)gaussian_nb.score(X_test, y_test)*100我试过:
importance = gaussian_nb.coefs_ # and even tried coef_它给出了一个错误:
AttributeError: GaussianNB对象没有属性“coefs_”
有人能帮帮我吗?
发布于 2020-07-16 14:39:43
GaussianNB没有提供一种评价特征重要性的内在方法。天真的Bayes方法通过确定与特征相关的条件概率和无条件概率,并以最高的概率预测类。因此,没有计算的系数或与你用来训练模型的特征相关的系数(与它的文档比较)。
话虽如此,有一些方法,你可以应用后专案分析模型后,已培训。这些方法之一是置换重要性,它也方便地在scikit-learn中实现。使用您提供的代码作为基础,您将以以下方式使用permutation_importance:
from sklearn.inspection import permutation_importance
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(inputs, target, test_size=0.2)
gaussian_nb = GaussianNB()
gaussian_nb.fit(X_train, y_train)
imps = permutation_importance(gaussian_nb, X_test, y_test)
print(imps.importances_mean)请注意排列的重要性与数据集有关,必须传递数据集才能获得值。这可以是您用来训练模型的相同数据,即X_train和y_train,也可以是您为评估而保存的坚持集,如X_test和y_test。后一种方法只是泛化能力方面的最佳选择。
如果您想更多地了解置换作为一种方法的重要性以及它是如何工作的,那么scikit-learn提供的scikit-learn绝对是一个好的开始。
发布于 2020-07-16 11:40:42
如果您看一看文档,朴素贝叶斯没有这些特性重要性属性。您可以使用get_params方法进行学习,但并不是真正独立的特性。如果您需要理解特性的重要性,那么一个很好的解决方案就是对决策树这样的东西进行分析,然后使用最重要的特性来实现GaussianNB。
https://stackoverflow.com/questions/62933365
复制相似问题