use*_*401 4 python gaussian scikit-learn naivebayes
我有一个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()
Run Code Online (Sandbox Code Playgroud)
gaussian_nb.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
gaussian_nb.score(X_test, y_test)*100
Run Code Online (Sandbox Code Playgroud)
我尝试过:
importance = gaussian_nb.coefs_ # and even tried coef_
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误:
AttributeError:“GaussianNB”对象没有属性“coefs_”
有人可以帮帮我吗?
它GaussianNB没有提供评估特征重要性的内在方法。Na\xc3\xafve 贝叶斯方法通过确定与特征相关的条件和无条件概率来工作,并预测具有最高概率的类别。因此,没有计算任何系数或与用于训练模型的特征相关联(与其文档相比)。
话虽如此,您可以在模型训练后事后应用一些方法来分析模型。其中一种方法是排列重要性,它也方便地在scikit-learn. 以您提供的代码为基础,您将使用permutation_importance以下方式:
from sklearn.inspection import permutation_importance\nfrom sklearn.naive_bayes import GaussianNB\nfrom sklearn.model_selection import train_test_split\n\n\nX_train, X_test, y_train, y_test = train_test_split(inputs, target, test_size=0.2)\n\ngaussian_nb = GaussianNB()\ngaussian_nb.fit(X_train, y_train)\n\nimps = permutation_importance(gaussian_nb, X_test, y_test)\nprint(imps.importances_mean)\nRun Code Online (Sandbox Code Playgroud)\n请注意,排列重要性取决于数据集,您必须传递数据集才能获取值。这可以是您用于训练模型的相同数据,即X_train和y_train,也可以是您为评估而保存的保留集,例如X_test和y_test。就泛化能力而言,后一种方法是更好的选择。
如果您想更多地了解排列重要性作为一种方法及其工作原理,那么提供的用户指南scikit-learn绝对是一个好的开始。