人工手动筛选特征
创始人
2024-11-15 02:04:05
0

一、相关性分析

计算特征之间的相关性,并移除高度相关的特征(相关系数大于 0.95)

import pandas as pd   import numpy as np    # 创建一个示例数据框   data = {       'A': [1, 2, 3, 4, 5],       'B': [5, 4, 3, 2, 1],       'C': [1, 1, 2, 2, 3],       'D': [5, 3, 2, 4, 5],       'E': [2, 4, 6, 8, 10]   }    X = pd.DataFrame(data)   print("原始数据框:")   print(X)    # 计算相关矩阵   corr_matrix = X.corr().abs()   print("\n相关矩阵:")   print(corr_matrix)    # 获取上三角矩阵   upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(bool))   print("\n上三角矩阵:")   print(upper)    # 找出任何相关系数大于 0.95 的列   to_drop = [column for column in upper.columns if any(upper[column] > 0.95)]   print("\n要移除的特征:")   print(to_drop)    # 移除高相关特征   X_reduced = X.drop(to_drop, axis=1)   print("\n去除高度相关后的数据框:")   print(X_reduced)

二、重要性分析

提取和展示模型中各特征的重要性,尤其是查看特征重要性为零的特征以及非零特征。

import pandas as pd   import lightgbm as lgb   from sklearn.datasets import load_breast_cancer   from sklearn.model_selection import train_test_split    # 加载数据集   data = load_breast_cancer()   X = pd.DataFrame(data.data, columns=data.feature_names)   y = pd.Series(data.target)    # 拆分训练和测试数据   X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)    # 创建 LightGBM 数据集   d_train = lgb.Dataset(X_train, label=y_train)    # 训练 LightGBM 模型   model = lgb.train(params={'objective': 'binary'}, train_set=d_train, num_boost_round=100)    # 获取特征重要性   fea_iptc = pd.DataFrame({       'feature_name': X.columns,       'importance': model.feature_importance()   })    # 显示特征重要性数据框   print(fea_iptc)    # 找到特征重要性为0的特征   fea_importance_0 = fea_iptc['feature_name'].loc[fea_iptc['importance'] == 0].tolist()   print('fea_importance_0: ', len(fea_importance_0), fea_importance_0)    # 找到特征重要性不为0的特征   fea_importance_not_0 = fea_iptc['feature_name'].loc[fea_iptc['importance'] != 0].tolist()   print('fea_importance_not_0: ', len(fea_importance_not_0), fea_importance_not_0)

三、iv和psi分析

使用信息值(IV)和群体稳定指数(PSI)筛选特征

import pandas as pd    # 示例数据:特征名称与它们的 IV 和 PSI 值   data = {       'name': ['feature1', 'feature2', 'feature3', 'feature4', 'feature5'],       'iv': [0.02, 0.15, 0.03, 0.01, 0.5],  # IV 值       'psi': [0.04, 0.02, 0.06, 0.07, 0.03]  # PSI 值   }    # 创建 DataFrame   iv_df = pd.DataFrame(data)    # 定义筛选特征的函数   def select_features_by_iv_psi(feature_stats, iv_threshold=0.01, psi_threshold=0.05):       """根据IV和PSI值筛选特征"""       high_iv_features = feature_stats[feature_stats['iv'] >= iv_threshold]       selected_features = high_iv_features[high_iv_features['psi'] < psi_threshold]       return selected_features['name'].tolist()    # 可选的特征列表   selected_features_list = ['feature1', 'feature2', 'feature3']    # 过滤特征   filtered_iv_df = iv_df[iv_df['name'].isin(selected_features_list)]    # 使用筛选函数   selected_features = select_features_by_iv_psi(filtered_iv_df)    # 输出筛选结果   print("Selected features:", len(selected_features), selected_features)

相关内容

热门资讯

此事备受玩家关注!新超圣辅助透... 此事备受玩家关注!新超圣辅助透视挂,建德麻将存在有挂,一贯有挂细节运新超圣辅助工具,进入游戏界面。进...
今天上午!熊猫麻将辅助透视挂,... 今天上午!熊猫麻将辅助透视挂,大唐撸麻雀确实有挂,确实有挂透视1、下载好大唐撸麻雀正确养号方法之后点...
突发!小吆三打哈辅助透视挂,悠... 突发!小吆三打哈辅助透视挂,悠闲麻将真的是有挂,原来有挂解密一、小吆三打哈游戏安装教程牌型概率发牌机...
今年以来!樱花梦雨辅助透视挂,... 今年以来!樱花梦雨辅助透视挂,新滕州麻将真的是有挂,好像有挂方法今年以来!樱花梦雨辅助透视挂,新滕州...
备受关注的!边锋老友棋牌辅助透... 备受关注的!边锋老友棋牌辅助透视挂,微友麻将是真的有挂,一直有挂攻略运边锋老友棋牌辅助工具,进入游戏...
明白辅助挂!萍乡滚筒辅助透视挂... 明白辅助挂!萍乡滚筒辅助透视挂,大唐麻将游戏是有挂,一直有挂教程1、操作简单,无需大唐麻将游戏手机版...
据报道!丫丫古诗辅助透视挂,琼... 据报道!丫丫古诗辅助透视挂,琼崖海南麻将真的有挂,其实有挂方法丫丫古诗脚本下载中分为三种模型:丫丫古...
随着!多多休闲辅助透视挂,东游... 随着!多多休闲辅助透视挂,东游麻将是真的有挂,竟然有挂存在随着!多多休闲辅助透视挂,东游麻将是真的有...
方法辅助挂!星禾游戏辅助透视挂... 方法辅助挂!星禾游戏辅助透视挂,太浪乾安麻将是真的有挂,果然发现有挂1、下载好星禾游戏脚本下载之后点...
近日!巅峰互娱辅助透视挂,趣咪... 近日!巅峰互娱辅助透视挂,趣咪麻将确实有挂,真是揭秘有挂;1、这是跨平台的巅峰互娱轻量版有透视,在线...