博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习中样本数据预处理
阅读量:4067 次
发布时间:2019-05-25

本文共 2464 字,大约阅读时间需要 8 分钟。

特征缩放

X_norm=(X-X_min)/(X_max-X_min )

这里写图片描述

lambda x: (x - x.min()) / (x.max() - x.min())

特征标准化

Gaussian with zero mean and unit variance. z=(x-μ)/σ

这里写图片描述

numeric_feats = all_X.dtypes[all_X.dtypes != "object"].indexall_X[numeric_feats] = all_X[numeric_feats].apply(lambda x: (x - x.mean())                                                            / (x.std()))

类别特征预处理:

不能将类别特征简单表示为数字,因为模型会将类别解释成有序,实际上类别是任意排列的,这里可以用One-hot编码方式来表示。这样估计器将每个具有m个可能值的分类特征转换成m个二元特征,只有一个有效。

>>> enc = preprocessing.OneHotEncoder()>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])  OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,       handle_unknown='error', n_values='auto', sparse=True)>>> enc.transform([[0, 1, 3]]).toarray()array([[ 1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  1.]])
>>> from sklearn.feature_extraction import DictVectorizer>>> vec = DictVectorizer()>>> vec.fit_transform(measurements).toarray()

or

all_X = pd.get_dummies(all_X, dummy_na=True)all_X = all_X.fillna(all_X.mean())

构造多项式特征

考虑到输入数据的非线性特征,往往会增加模型的复杂性。一种简单而常用的方法是多项式特征,它可以得到特征的高阶和交互项。它在PolynomialFeatures中实现

>>> import numpy as np>>> from sklearn.preprocessing import PolynomialFeatures>>> X = np.arange(6).reshape(3, 2)>>> X                                                 array([[0, 1],       [2, 3],       [4, 5]])>>> poly = PolynomialFeatures(2)>>> poly.fit_transform(X)                             array([[  1.,   0.,   1.,   0.,   0.,   1.],       [  1.,   2.,   3.,   4.,   6.,   9.],       [  1.,   4.,   5.,  16.,  20.,  25.]])

注意:当使用多项式核函数时,多项式特征隐式地用于核方法(例如,sklearn.svm.SVC,sklearn.decomposition.KernelPCA)。


标签编码

  • Label binarization

创建多分类标签(LabelBinarizer())

>>> from sklearn import preprocessing>>> lb = preprocessing.LabelBinarizer()>>> lb.fit([1, 2, 6, 4, 2])LabelBinarizer(neg_label=0, pos_label=1, sparse_output=False)>>> lb.classes_array([1, 2, 4, 6])>>> lb.transform([1, 6])array([[1, 0, 0, 0],       [0, 0, 0, 1]])

如果一个实例有多个标签(MultiLabelBinarizer())

>>> lb = preprocessing.MultiLabelBinarizer()>>> lb.fit_transform([(1, 2), (3,)])array([[1, 1, 0],       [0, 0, 1]])>>> lb.classes_array([1, 2, 3])
  • Label encoding

标签规范化,将标签转化为0 ~ n_classes-1

>>> from sklearn import preprocessing>>> le = preprocessing.LabelEncoder()>>> le.fit([1, 2, 2, 6])LabelEncoder()>>> le.classes_array([1, 2, 6])>>> le.transform([1, 1, 2, 6])array([0, 0, 1, 2])>>> le.inverse_transform([0, 0, 1, 2])array([1, 1, 2, 6])

缺失值和不平衡样本单独讨论,见其他两篇Blog

机器学习中样本缺失值的处理方法

机器学习中样本比例不平衡的处理方法

文本处理单独讨论,见Blog:

机器学习中的文本处理


你可能感兴趣的文章
SpringBoot 动态编译 JAVA class 解决 jar in jar 的依赖问题
查看>>
fhs-framework springboot mybatis 解决表关联查询问题的关键方案-翻译服务
查看>>
ZUUL2 使用场景
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
elastic-job 和springboot 集成干货
查看>>
php开发微服务注册到eureka中(使用sidecar)
查看>>
mybatis mybatis plus mybatis jpa hibernate spring data jpa比较
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记13:组合模式(Composite)
查看>>
hdu 1011 Starship Troopers (树形背包dp)
查看>>
hdu 1561 The more, The Better (树形背包dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>