一、数据预处理

1.数据采集

2.数据格式化(存储格式等)

3.数据清洗:去掉脏数据

简单直观可以看出的不可能数据

组合或统计属性判定

缺失值处理

1.删除元祖:删除这一条记录或者一列特征,适合记录或者特征占总样本比例很小,或者缺失值非常多。但是会造成数据少很多,有可能造成性能下降

2.数据补齐:这类方法是用一定的值去填充空值,通常基于统计学原理,根据初始数据集中其余对象取值的分布情况来对一个缺失值进行填充

3.不处理:不处理缺失值,直接在包含空值的数据上进行数据挖掘的方法包括贝叶斯网络和人工神经网络等。

具体请看:https://blog.csdn.net/lujiandong1/article/details/52654703

4.数据采样

很多情况下,正负样本不均衡

1.当正负样本量很大时,进行下采样,随机采样和分层抽样

2.当样本量不大时

采集更多样本

过采样

修改损失函数

二、特征工程

1.数值类型

归一化、标准化、正则化:https://www.cnblogs.com/chaosimple/p/4153167.html

统计特征:pandas的mean方法和describe()方法

离散化:将连续数值切割成几块,pandas库里有cut()方法,可以指定对数组arr切成n块,返回的是每个样本属于的那一个区间。cut(arr,n)或者直接指定区间cut(arr,[-5,-1,2,5,10]),返回的result,统计result,pd.value_counts(result).reindex(result.levels)

2.类别类型

2.1.one-hot编码

pandas库的get_dummies(series,prefix='列名前缀')

2.2 Hash处理

3.时间类型

既可以看做连续值,也可以看做离散值

1.连续值,持续时间(单页浏览时长),间隔时间(两次活动的间隔时间)

2.离散值,时间段,星期几,月,季度

python中datetime的strptime函数:datetime.datetime.strptime(x,时间格式,如:"%Y-%m-%d %H:%M:%S"),将字符串转为时间格式类型

时间类型函数可以返回年月日星期:.year,.month,.day,.weekday()

4.文本型

自然语言处理相关

5.组合特征

5.1简单组合特征:拼凑

5.2模型特征组合

GBDT+LR

6.特征选择

原因有:冗余:特征相关性太高,浪费计算性能

噪声:特征对预测结果有负影响

6.1.过滤型(单个)

评估单个特征和结果值之间的相关程度,排序留下top相关的部分特征

评估的准则:pearson相关系数,互信息,距离相关度

缺点是:没有考虑到特征之间的关联作用,可能把有用的关联特征误删掉

相关系数:用scipy.stats.pearsonr(x,y)来计算相关系数,函数返回相关系数和风险值(越小越可信),缺点是只对线性有用,如果是非线性就不适用

互信息:minepy.MINE库

距离相关系数:gist库

sklearn.feature_selection.SelectBest 可以很方便的实现取前k个特征,参数有两个,第一个是评估函数,第二个K=n,评估函数的选择:

回归:

f_regression:相关系数,计算每个变量与目标变量的相关系数,然后计算出F值和P值;

mutual_info_regression:互信息,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。

分类:

chi2:卡方检验;
f_classif:方差分析,计算方差分析(ANOVA)的F值 (组间均方 / 组内均方);
mutual_info_classif:互信息,互信息方法可以捕捉任何一种统计依赖,但是作为非参数方法,需要更多的样本进行准确的估计。

6.2包裹型(子集合)

把特征选择看做一个特征子集搜索问题,筛选各种特征子集,然后用模型评估效果

递归特征删除算法:给特征赋予一个外部模型产生的权重(例如:线性模型系数),RFE递归地使用越来越少的特征来进行特征选择。首先,在原始数据上建立模型并且给每个特征一个权重;然后,淘汰绝对权重最小的特征,递归地执行这个过程直到达到希望的特征数。
RFECV使用交叉验证方法发现最优特征数量。

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression#递归特征消除法,返回特征选择后的数据
#参数estimator为基模型
#参数n_features_to_select为选择的特征个数
RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)

6.3嵌入型

根据模型来判断特征的重要性

最常用的方式是用正则化的方法来做特征选择

使用SelectFromModel方法特征选择

SelectFromModel是一种元转换器,可以与那些有coef_ 或者feature_importances_属性的模型一起使用。如果coef_ 或者feature_importances_小于阈值,我们就认为特征是不重要的。除了指定阈值以外,也可以使用启发式的方式。有效的启发式方法包括均值、中位数或者乘以系数,比如 0.1*均值。

基于L1范数的特征选择

使用L1范数的线性模型有一个稀疏解:许多估计系数都为0。当降维的目的是为了使用其他分类器,他们能和feature_selection.SelectFromModel一起使用选择非零系数。特别地,稀疏估计量对于回归中的 linear_model.Lasso、分类中的linear_model.LogisticRegression和svm.LinearSVC都很有用。

from sklearn.svm import LinearSVC
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel
iris = load_iris()
X, y = iris.data, iris.target
X.shape
(150,4)
lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
model = SelectFromModel(lsvc, prefit=True)
X_new = model.transform(X)
X_new.shape
(150,3)

转载于:https://www.cnblogs.com/stAr-1/p/8920783.html

数据预处理和特征工程相关推荐

  1. 「机器学习速成」数据预处理,特征工程,良好特征的特点

    https://www.toutiao.com/a6703863693408469516/ 大家好,今天我们学习[机器学习速成]之 数据预处理,特征工程,良好特征的特点 我们 马上学三点 , 特征工程 ...

  2. sklearn 神经网络_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  3. sklearn中eof报错_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  4. sklearn实战-----3.数据预处理和特征工程

    1 概述 1.1 数据预处理与特征工程 想象一下未来美好的一天,你学完了菜菜的课程,成为一个精通各种算法和调参调库的数据挖掘工程师了.某一天 你从你的同事,一位药物研究人员那里,得到了一份病人临床表现 ...

  5. 数据预处理与特征工程—12.常见的数据预处理与特征工程手段总结

    文章目录 引言 1.数据预处理 1.1 数据清洗 1.1.1 异常值处理 1.1.2 缺失值处理 1.2 特征预处理 1.2.1 数值型特征无量纲化 1.2.2 连续数值型特征分箱 1.2.2.1 无 ...

  6. 天池- IJCAI-18 阿里妈妈搜索广告转化预测新手入门经历(一:数据预处理、特征工程)

    第一次正式参加数据挖掘类的比赛,投入了三个星期.结果没有进入复赛,但是学到了许多经验.感谢技术圈和github的大佬们提供的baseline,让我少走了很多弯路. 第一次写博客,其一为了防止以后忘记, ...

  7. 使用Sklearn库学习数据预处理和特征工程

    目录 1,概述 1.1,数据预处理和特征工程 1.2,sklearn中的数据预处理和特征工程 2,数据预处理 Preprocessing & Impute 2.1,数据无量纲化 2.2,缺失值 ...

  8. pandas用众数填充缺失值_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o()ブ,我是菜菜,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上 Scikit-learn 0.20.0 (你的版 ...

  9. sklearn_数据预处理和特征工程

    转载自:菜菜的sklearn课堂 文章目录 1 概述 1.1 数据预处理与特征工程 1.2 sklearn中的数据预处理和特征工程 2 数据预处理 Preprocessing & Impute ...

最新文章

  1. lucene反向索引——倒排表无论是文档号及词频,还是位置信息,都是以跳跃表的结构存在的...
  2. android screen monitor怎么用
  3. Java代码的基本格式及注释
  4. Resource interpreted as Stylesheet but transferred with MIME type text/html: “**.jsp“,主要因为拦截器将所有资源拦截
  5. android pptx mime类型,application/vnd.android.package-archive是Apk的MIME类型
  6. C++ dll的隐式与显式调用
  7. mysql驱动连接不了mariadb_无法从振动应用程序连接到MySQL / MariaDB数据库
  8. VS2010新建Web网站与新建Web应用程序的区别
  9. 3蛋白wb_WB常见问题原因分析及解决办法
  10. java怎么实现有消息时显示红点_Android中的红点提示怎么统一实现?
  11. kettle-如何在kettle中编写java代码
  12. 安卓系统dicom阅读器_文石BOOX发布新品poke2 color 全球首款开放系统彩色电纸书
  13. 信息安全习题(含答案)
  14. java batik_java – 如何在Batik SVG库中使用自定义字体?
  15. python 接受前端文件并上传
  16. 给定一个净值序列,计算年化收益、最大回撤、夏普比率
  17. ArcGIS Runtime SDK for Android 读取tpk、vtpk
  18. css 入场动画_CSS3 六边形标题入场动画
  19. 新势力新名片-上海度普新能源通过ASPICE CL2评估!
  20. K-means clustering using random matrix sparsification(ICML2018)

热门文章

  1. Spring-Security 自定义Filter完成验证码校验
  2. 版本号控制-GitHub
  3. 读C#开发实战1200例子记录-2017年8月14日10:03:55
  4. OC2_点语法(属性关键字)
  5. 添加远程链接MySQL的权限
  6. 标准make变量 MAKE_VERSION, CURDIR
  7. 文件的输入/输出操作
  8. Java NIO编写Socket服务器的一个例子
  9. 可用于 线性判别、聚类分析 的R语言函数总结
  10. 浅析微信支付:申请退款、退款回调接口、查询退款