输入变量可以是离散型数据和连续性数据的组合吗?

  统计/机器学习 监督式学习 数据预处理    浏览次数:3477        分享
0

比如说输入变量第一个是各省市,用(1,2,3,4...m)来表示各省市,是一个离散变量,第二个输入变量是车速,是一个连续变量,那要怎么进行数据处理,使得能够进行训练,就是离散变量+连续变量,要对这个离散变量做什么处理呢?

 

goldminer   2020-04-11 16:36



   3个回答 
6

处理这种分类变量,要结合模型来看。但总体来说有以下两种处理方式:

第一种是Label Encoder, 直接将分类变量转为数值变量,你的例子里就是使用(1,2,... m)来表示城市,这种方法为变量赋予了顺序的含义,变量的每个。我总结了几个特点:

  • 分类变量是有序的话,例如小学,初中,高中这种,可以使用
  • 如果模型只是用部分特征值来计算,比如decision tree, random forest,等树类算法适用。原因是数据集里连续变量多时,用One-hot-encoding会让其他非分类变量不被/很少被选入为特征
  • 回归算法,neural network算法等不适用


第二种时One-Hot-Encoding,拓增数据集至很多个特征值,你的例子里,以每一个城市为一个特征,值只取0/1,如果有m个城市,则新增m个特征, 这种方法能保证每个分类变量里的取值有同等的重要性,无序的,不正交的变量。特点如下:

  • 分类变量如果是无序的话,比如城市,可以使用One-Hot-Encoding
  • 回归算法,KNN,Neural network等使用
  • 结合PCA降维来使用有奇效,PCA可以找到线性相关的部分,并组合这部分特征
  • 缺点就是会占用比较多内存计算空间了,毕竟数据集可能会被扩增到非常大

其余的方法如LightGBM encoding(支持类别变量), Hash encoding, embedding等,不同情况不同采用,这里就不多说了。

Reference:

What is the best method for converting categorical features to something numerical ones.

How LightGBM deals with categorical features

What algorithms require one-hot encoding?

SofaSofa数据科学社区DS面试题库 DS面经

QuinnWei   2020-04-16 08:30

1

你可以把省份进行独热处理(one-hot encoding),也就是把这一个特征变成m个二元特征。

SofaSofa数据科学社区DS面试题库 DS面经

wxw_pku   2020-04-12 17:13

比如说省份的数量是10个,意思是不是把这10个省份用(0,0,0,0,1,0,0,0,0,0)类似这样的形式考虑?然后在后面加上如速度的数值,比如是30,那这样组合起来的训练集样式就是(0,0,0,0,1,0,0,0,0,0,30)这样的吗? - goldminer   2020-04-13 11:37
是的 - wxw_pku   2020-04-13 23:50
1

如果你是用python里的sklearn的api,那么你要离散变量处理成连续变量,才能训练

如果你用catboost,其实没有影响,可以直接混合离散变量和连续变量一起训练

SofaSofa数据科学社区DS面试题库 DS面经

壬金   2020-04-26 08:46



  相关讨论

离散变量和连续变量可以一起放入机器学习的分类器中吗?

对于数值型变量模型怎么知道是连续变量还是离散变量?

数据一样,y却不一样的样本该怎么处理?

数据量太少能不能bootstrap

对连续特征一定要进行分箱处理吗?

机器学习中如何将几种度量距离的量进行线性组合

在数据预处理阶段,特征的标准化有哪些方法?

dummy variable是n个还是n-1个

怎么对特征做标准化使得数值都是正数?

机器学习中的过采样和欠采样是什么意思?

  随便看看

sklearn训练classifier的时候报错Unknown label type

z test和t test什么区别?

numpy array里怎么用fillna填充nan的值?

如何调节seaborn里字体大小?

dropout rate一般设置多大?