随笔 - 384  文章 - 0  评论 - 35  阅读 - 142万

特征重要性之排列重要性Permutaion Importance

基于模型刷选特征方法有:排列重要性、shap value、null importance

这里简单介绍一下排列重要性:

一、排列重要性原理

首先建立一个模型,计算某列特征重要性时,打乱该列顺序,其余列不变,然后再使用打乱后的数据来预测,最后计算正确率;如果某列对模型预测很重要,那么打乱该列顺序之后,模型预测正确率就会很差,如果对预测结果没有影响,则说明该变量对模型没有那么重要;为了消减随机对结果的影响,我们会多次乱打,再求均值和方差。

 

二、排列重要性的好处

  1. 计算速度快
  2. 应用广泛、易于理解
  3. 与我们期望一个特征重要性度量所具有的性质一致

三、排列重要性如何使用Python实现

1.可以直接eli5库计算和展示排列重要性

复制代码
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 26 15:51:26 2021

@author: chenguimei
"""

# 引入数据
from sklearn import datasets
import pandas as pd
import numpy as np

iris = datasets.load_iris()
X = pd.DataFrame(iris.data)
X.columns = iris.feature_names
y = iris.target
print("Class labels:",np.unique(y))  #打印分类类别的种类


# 切分训练数据和测试数据
from sklearn.model_selection import train_test_split
## 30%测试数据,70%训练数据,stratify=y表示训练数据和测试数据具有相同的类别比例
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=1,stratify=y)


#决策树模型  
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(criterion='gini',max_depth=4,random_state=1)
tree.fit(X_train,y_train)
print(X.columns,tree.feature_importances_)

from sklearn.metrics import roc_curve, auc
resu = tree.predict(X_test)
print(resu)
print(y_test)


import eli5
from eli5.sklearn import PermutationImportance

perm = PermutationImportance(lr, random_state=1).fit(X_test, y_test)
eli5.show_weights(perm, feature_names = X_test.columns.tolist())
复制代码

 

 2.sklearn.inspection._permutation_importance 的permutation_importance

from sklearn.inspection._permutation_importance import permutation_importance
from sklearn.datasets import load_iris
from sklearn.metrics import get_scorer
from sklearn.linear_model import LogisticRegression


permutation_importance(tree, X_test, y_test, get_scorer('accuracy'))

 

 

文章强调2点:(1)打乱顺序;(2)使用准确率指标衡量

 

posted on   小小喽啰  阅读(4245)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示