前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >特征锦囊:怎么进行多项式or对数的数据变换?

特征锦囊:怎么进行多项式or对数的数据变换?

作者头像
Sam Gor
发布2020-01-02 10:30:20
9610
发布2020-01-02 10:30:20
举报
文章被收录于专栏:SAMshareSAMshare
今日锦囊

怎么进行多项式or对数的数据变换?

数据变换,这个操作在特征工程中用得还是蛮多的,一个特征在当前的分布下无法有明显的区分度,但一个小小的变换则可以带来意想不到的效果,而这个小小的变换,也就是今天给大家分享的小锦囊。

多项式变换

按照指定的degree,进行多项式操作从而衍生出新变量(当然这是针对每一列特征内的操作)。

举个栗子:

代码语言:javascript
复制
from sklearn.datasets import load_iris
#导入IRIS数据集
iris = load_iris()
iris.data[0]

# Output: array([ 5.1,  3.5,  1.4,  0.2])
代码语言:javascript
复制
tt = PolynomialFeatures().fit_transform(iris.data)
tt[0]

# Output: array([  1.  ,   5.1 ,   3.5 ,   1.4 ,   0.2 ,  26.01,  17.85,   7.14, 1.02,  12.25,   4.9 ,   0.7 ,   1.96,   0.28,   0.04])

因为PolynomialFeatures()方法默认degree是2,所以只会进行二项式的衍生。

一般来说,多项式变换都是按照下面的方式来的:

f = kx + b 一次函数(degree为1) f = ax^2 + bx + w 二次函数(degree为2) f = ax^3 + bx^2 + cx + w 三次函数(degree为3)

这类的转换可以适当地提升模型的拟合能力,对于在线性回归模型上的应用较为广泛。

对数变换

这个操作就是直接进行一个对数转换,改变原先的数据分布,而可以达到的作用主要有:

1)取完对数之后可以缩小数据的绝对数值,方便计算;

2)取完对数之后可以把乘法计算转换为加法计算;

3)还有就是分布改变带来的意想不到的效果。

numpy库里就有好几类对数转换的方法,可以通过from numpy import xxx 进行导入使用。

log:计算自然对数

log10:底为10的log

log2:底为2的log

log1p:底为e的log

代码集合
代码语言:javascript
复制
from sklearn.datasets import load_iris
#导入IRIS数据集
iris = load_iris()

#多项式转换
#参数degree为度,默认值为2
from sklearn.preprocessing import PolynomialFeatures
PolynomialFeatures().fit_transform(iris.data)

#对数变换
from numpy import log1p
from sklearn.preprocessing import FunctionTransformer
#自定义转换函数为对数函数的数据变换
#第一个参数是单变元函数
FunctionTransformer(log1p).fit_transform(iris.data)

以上的变换操作,够我们衍生出一堆变量了,开始用起来吧!

原创不易,如果觉得这种学习方式有用,希望可以帮忙随手转发or点下“在看”,这是对我的极大鼓励!阿里嘎多!?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAMshare 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 怎么进行多项式or对数的数据变换?
    • 多项式变换
      • 对数变换
        • 代码集合
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档