特征工程(三)数挖不同类型数据特征工程中处理pipeline

本文简要概述了在特征工程中处理结构化数据(如离散数值、连续数值、日期)和非结构化数据(如文本、网络关系节点)的一般步骤。涉及内容包括数值特征的预处理、离散值和连续值的处理、日期特征的转化、文本特征的提取(如词袋模型、TF-IDF、词嵌入)以及网络节点的特征处理。同时提供了相关文章链接以供深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非常简略的整理下在做特征工程我针对不同数据会采用的一些常规流程,不做具体介绍。

 

结构化数据

离散数值、连续数值、日期

非结构化数据

文本、网络关系节点

 

一.数值特征

1. 预处理

       

2. 离散值处理

labelEncoder / map / one-hot-encoding / get_dummy

特征交叉

二值特征转换

类别合并

多项式特征(模型用SVM)

3. 连续特征离散化

binning 

分位数切分

4. 对数变换(模拟正态分布)

二.日期特征

ts_objs = np.
### Python 中的特征工程技术与数据处理 #### 使用 Pandas 和 Scikit-Learn 进行特征工程 在 Python 的数据处理领域,Pandas 是最常用的库之一。通过 Pandas 可以轻松操作结构化数据,并提供多种功能用于清理和转换数据[^1]。 ```python import pandas as pd # 创建示例 DataFrame data = {'age': [25, 30, None, 45], 'income': [70000, 80000, 90000, 100000]} df = pd.DataFrame(data) # 处理缺失值:填充平均 mean_income = df['income'].mean() df.fillna({'age': mean_income}, inplace=True) ``` Scikit-learn 提供了许多实用的功能来进行更复杂的特征变换。例如: - **标准化 (Standardization)**: 将值型特征缩放到零均值单位方差。 ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaled_features = scaler.fit_transform(df[['income']]) ``` - **独热编码 (One-Hot Encoding)**: 对分类变量进行二元向量表示。 ```python categorical_columns = ['category'] encoded_df = pd.get_dummies(df, columns=categorical_columns) ``` #### 应对异常值的方法 对于异常值检测,可以采用箱线图法或 Z-Score 法等统计学手段来识别并处理异常情况[^2]。 ```python def detect_outliers_zscore(data): from scipy.stats import zscore threshold = 3 outliers = [] zscores = zscore(data) for i in range(len(zscores)): if abs(zscores[i]) > threshold: outliers.append(i) return outliers outlier_indices = detect_outliers_zscore(df['income']) print(f'Outliers found at indices {outlier_indices}') ``` #### 构建管道简化工作流程 为了使整个过程更加自动化且易于管理,建议构建一个完整的机器学习流水线。这不仅提高了效率还减少了人为错误的可能性。 ```python from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.compose import ColumnTransformer numeric_features = ['age', 'income'] numeric_transformer = Pipeline(steps=[ ('imputer', SimpleImputer(strategy='median')), ('scaler', StandardScaler())]) preprocessor = ColumnTransformer( transformers=[ ('num', numeric_transformer, numeric_features)]) pipeline = Pipeline(steps=[('preprocessor', preprocessor)]) X_prepared = pipeline.fit_transform(df) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值