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

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

 

结构化数据

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

非结构化数据

文本、网络关系节点

 

一.数值特征

1. 预处理

特征工程(三)数挖不同类型数据特征工程中处理pipeline_第1张图片

特征工程(三)数挖不同类型数据特征工程中处理pipeline_第2张图片       

特征工程(三)数挖不同类型数据特征工程中处理pipeline_第3张图片

2. 离散值处理

labelEncoder / map / one-hot-encoding / get_dummy

特征交叉

二值特征转换

类别合并

多项式特征(模型用SVM)

3. 连续特征离散化

binning 

分位数切分

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

二.日期特征

ts_objs = np.array([pd.Timestamp(item) for item in np.array(df.Time)])

转换成timestamp标准格式  '2015-03-08 10:30:00.360000+0000‘

可以使用函数提取更多特征

df['Year'] = df['TS_obj'].apply(lambda d: d.year)
df['Month'] = df['TS_obj'].apply(lambda d: d.month)
df['Day'] = df['TS_obj'].apply(lambda d: d.day)
df['DayOfWeek'] = df['TS_obj'].apply(lambda d: d.dayofweek)
df['DayName'] = df['TS_obj'].apply(lambda d: d.weekday_name)
df['DayOfYear'] = df['TS_obj'].apply(lambda d: d.dayofyear)
df['WeekOfYear'] = df['TS_obj'].apply(lambda d: d.weekofyear)
df['Quarter'] = df['TS_obj'].apply(lambda d: d.quarter)

三.文本特征

对文本数据集

1.基本预处理

将语料库预处理:一行一个文档或句子,将文档或句子分词(以空格分割,英文可以不用分词,英文单词之间已经由空格分割,中文预料需要使用分词工具进行分词,常见的分词工具有StandNLP、ICTCLAS、Ansj、FudanNLP、HanLP、结巴分词等,并去掉停用词)形成array格式。设文章个数为5,去掉停用词后单词种类为11

2.词袋模型(考虑词频,矩阵稀疏 5*11) 

from sklearn.feature_extraction.text import CountVectorizer

3.N-Grams模型(考虑词顺序,矩阵很稀疏 )

bv = CountVectorizer(ngram_range=(2,2))

4.TF-IDF 模型 (词频*权重 5*11)

5.Similarity特征 (5*5)

6.LDA模型

7.词嵌入模型(5*指定维数)

from gensim.models import word2vec

 

关于文本的特征处理详细可见我之前的博客

https://blog.csdn.net/weixin_41814051/article/details/104393633

四.网络节点

关于网络节点的特征处理详见我之前的博客

https://blog.csdn.net/weixin_41814051/article/details/104333603

 

2020年3月新增

看到了几篇比较好的文章,分别对离散数值、连续数值、文本数据做特征工程处理的pipeline

结构化

离散数值:https://www.leiphone.com/news/201801/KTVu68zA6szteVmS.html

连续数值:https://www.leiphone.com/news/201801/T9JlyTOAMxFZvWly.html

日期

非结构化

文本:https://www.leiphone.com/news/201802/Vd1dZrQRqUSdJPTC.html

网络节点

 

 

 

 

你可能感兴趣的:(数据挖掘#特征工程)