✨ 欢迎关注Python机器学习AI ✨
本节介绍:
基于
Featurewiz-Polars框架进行特征选择并与默认特征下的模型进行性能比较
。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。
详细数据和代码将在稍后上传至交流群,付费群成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。
购买前请咨询,避免不必要的问题。
✨
Featurewiz-Polars介绍 ✨
Featurewiz-Polars是一个基于 Polars 数据框架的高性能特征工程库,旨在优化大规模数据集的特征选择和编码过程。这个库主要解决了传统方法在处理大数据时效率低下和内存消耗过大的问题。
- 高效处理大数据:利用 Polars 的速度和内存优化特性,能够高效处理百万级行数和大量特征的数据
- 自动化特征选择:提供自动化的特征选择、编码和缺失值处理功能,尤其在大数据环境下表现出色
- 支持多个集成:与 XGBoost、CatBoost、RandomForest 和 LightGBM深度集成,简化机器学习管道,提升模型性能
- MRMR 特征选择:通过最大相关性和最小冗余(MRMR)方法优化特征选择,确保选择的特征能够提升模型表现
- 稳定性提升:通过训练-验证分割(train-validation split)方法提升特征选择的稳定性,减少过拟合
Featurewiz-Polars 提供了一个面向大数据的高效特征工程框架,通过与 Polars 的深度结合,显著提高了特征选择和编码的速度,特别适用于处理大规模数据集的任务
**✨ 代码实现
✨**
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
import warnings
# 忽略所有警告
warnings.filterwarnings("ignore")
path = r"2025-3-24公众号Python机器学习AI.xlsx"
df = pd.read_excel(path)
df
读取数据文件。该数据集包含 256 个样本和 47 个特征,属于真实但已经脱敏的临床数据。由于特征数量较多,可能需要进行特征选择以减少计算复杂度并提高模型的效果
from sklearn.model_selection import train_test_split
# 划分特征和目标变量
X = df.drop(['Electrical_cardioversion'], axis=1)
y = df['Electrical_cardioversion']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.3,
random_state=42,
stratify=df['Electrical_cardioversion']
)
from xgboost import XGBClassifier
# 初始化 XGBoost 分类模型(使用默认参数)
xgb_all = XGBClassifier(random_state=42)
# 训练模型(默认参数)
xgb_all.fit(X_train, y_train)
将数据集划分为训练集和测试集,使用 XGBoost 分类器 在默认参数下对所有特征进行训练,方便后续与经过特征筛选后的模型进行性能对比,判断特征选择是否有效提升了模型性能
from featurewiz_polars import FeatureWiz
# 初始化 FeatureWiz,用于分类任务
wiz = FeatureWiz(
model_type="Classification", # 模型类型,分类任务
estimator=None, # 使用默认估计器
corr_limit=0.7, # 特征之间相关性限制,超过0.7的特征将被去除
category_encoders='onehot', # 类别特征的编码方式,使用独热编码
classic=True, # 使用经典特征工程方法
verbose=0 # 设置为0,不输出详细信息
)
# 拟合并转换训练数据
X_transformed, y_transformed = wiz.fit_transform(X_train, y_train)
# 转换测试数据
X_test_transformed = wiz.transform(X_test)
# 转换测试目标变量
y_test_transformed = wiz.y_encoder.transform(y_test)
使用
FeatureWiz
进行特征选择和预处理,采用默认估计器进行分类任务,使用独热编码对类别特征进行处理,且对特征之间的相关性进行限制(大于0.7的特征会被去除)。训练数据经过转换后用于训练模型,测试数据也进行了同样的转换
- SULOV selected Features:列出了通过 SULOV 方法选择的特征,共有 44 个特征
- Recursive XGBoost selected Features:列出了通过递归 XGBoost 特征选择方法选择的 26 个特征,这些特征是最终用于模型训练的
该过程为后续建模提供了经过筛选的特征,减少了冗余特征,提高了模型的效率表现但是FeatureWiz该函数的作用为返回选择的特征结果
from featurewiz_polars import FeatureWiz_Model
# 初始化 FeatureWiz_Model 用于分类任务,模型为 XGBoost 分类器
wiz_model = FeatureWiz_Model(
model_type="Classification", # 模型类型,分类任务
model=XGBClassifier(), # 使用 XGBoost 分类模型
corr_limit=0.7, # 特征之间的相关性限制,超过0.7的特征将被去除
category_encoders='onehot', # 类别特征的编码方式,使用独热编码
classic=True, # 使用经典特征工程方法
verbose=0 # 设置为0,不输出详细信息
)
# 拟合并转换训练数据
X_transformed, y_transformed = wiz_model.fit_transform(X_train, y_train)
通过
FeatureWiz_Model
进行特征选择,同时使用
XGBoost 分类器
对选定的特征进行训练。它返回经过选择和转换后的特征数据(
X\_transformed
)和目标变量数据 (
y\_transformed
) ,并且在特征选择的同时完成了模型的训练
FeatureWiz_Model 的参数包括:estimator(用于特征选择的估计器,可以是 XGBoost、CatBoost、RandomForest 或 LightGBM),model(用于训练的模型,默认为 RandomForest),model_type(模型类型,指定为分类(classification)或回归(regression),默认值为分类),category_encoders(类别特征的编码方式,支持 target、onehot 和 woe,默认是独热编码),imputation_strategy(缺失值处理策略,支持 mean、median、zeros,默认是均值填充),corr_limit(相关性阈值,超过该值的特征会被移除,默认值是0.7),classic(如果为 True,使用经典的特征选择方法;如果为 False,使用训练-验证分割和递归 XGBoost 方法,默认是 True),verbose(输出的详细程度,默认为 0,表示最少输出)。这些参数共同决定了特征选择、预处理和模型训练的策略,确保模型训练过程高效且稳定
从图中可以看到,通过
特征选择后
(FeatureWiz 模型)训练的 XGBoost 模型在测试集上的 AUC(曲线下面积)值为
0.903
,而
所有特征
(XGBoost 默认模型)训练的 AUC 值为
0.843
- 特征选择后模型的 AUC 值更高,说明特征选择有效地减少了冗余特征,保留了对分类任务最有帮助的特征,从而提升了模型的性能
- 默认模型的 AUC 值较低,这表明包含过多特征(可能有许多无关或冗余的特征)可能会导致过拟合或性能不佳
特征选择能够显著优化模型性能,减少过拟合风险,并提高对测试数据的泛化能力,尤其在特征维度较高时,通过筛选最具信息量的特征,可以有效提升模型的预测效果。Featurewiz-Polars 在进行特征选择时,通过多种高效手段(如缺失值处理、类别特征编码、相关系数阈值剔除以及递归特征筛选)对数据进行深度优化,不仅提高了特征选择的速度,还有效提升了模型性能。特别是在处理复杂数据时,Featurewiz-Polars 的特征选择方法能够减少冗余特征,确保每个选出的特征对模型都有实际贡献,从而进一步增强模型的预测准确性和稳定性。
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到 淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系 ,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。
作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤
。
购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信 deep_ML联系
避免淘宝客服漏掉信息
,希望能为您的学习之路提供帮助!
往期推荐
GeoShapley算法:基于地理数据的Shapley值在空间效应测量中的应用——位置重要性与特征交互作用分析
期刊配图:基于‘UpSet图’展示不同数据预处理对模型性能的影响
J Clean Prod:结合K-means聚类确定样本分组方式再结合shap初步解释模型的模拟实现
nature communications:结合LightGBM特征选择与RF模型的机器学习方法及SHAP解释
期刊配图:结合lightgbm回归模型与K折交叉验证的特征筛选可视化
Nature新算法:准确的小数据预测与表格基础模型TabPFN分类实现及其模型解释
Nature新算法:准确的小数据预测与表格基础模型TabPFN回归实现及其模型解释
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考