机器学习如何处理混合类型的特征

我的数据中有两千多个特征,其中大部分都是这样的:在同一个特征中,取值既可能为数值,也可能是字母。比如,特征A表示在现居地居住了多久,其中的值可能是具体的数,如2年、5年、8年,也可能是字母M、T、C,这些字母表示出于某些原因,得不到具体居住了多久的数据。


但如果我想运行算法,需要先将这些字母转换为数值。毕竟不是纯类别特征,中间还夹杂了有意义的数值,应该如何处理呢?

首先..一点..你不知道这些字母的含义...到底是居住了多久...或者是其他的含义啊..
然后你要做算法的时候,要将这些字母转换成数值...这个数值的转换公式是什么呢..
你不知道字母的含义,然后又去转换成数值,如果这个特征的确实存在那样的数值,
你不是就混淆了吗.
要么弄清楚这些字母的具体含义,要么直接去除.
不然就是做逻辑混淆的.

不管是字母还是数字 还是中文 转换的前提的你得知道这个规则吧 。

其实知道规则了 转换不转换 都不重要了 不转就是处理的时候 多个分支呗。

一般会对这种字符串类型的数据进行量化,要么是数值映射,要么是one-hot编码。

可以参考我之前的文章https://zhouchen.blog.csdn.net/article/details/101435593。

如果你是表格型特征,pandas有个很方便的处理函数。

https://blog.csdn.net/extremebingo/article/details/80402312

https://www.jianshu.com/p/20abe9f204b1

https://zhuanlan.zhihu.com/p/90782025

离散变量数值化处理

参考https://zhuanlan.zhihu.com/p/88921408

比如2年、5年、8年;分别使用001,010和100表示

例如,有个特征为m,取值有A,B,C,可以将其拆分为3个特征m_A,m_B,m_C,为A则m_A为1其他为0。

或者你可以先去全数据扫一下..看看出现这样的情况多还是不多。但是数据量大肯定耗时.动手总比空想强
 你首先要把数字列非数字的值和缺省的剔除掉
 机器学习是数学运算...字母是算不了的...
 你数据多且字母占比小的话,建议直接删除这个行...
 找了一篇数据处理的,你有兴趣可以看一下...
https://www.cnblogs.com/wkslearner/p/8933685.html

具体转化上,可以使用两种方式:1. 序号编码。 2. 独热编码。

序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为低、中、高三档,我们可以将其编码分别为1、2、3进行表示。

独热编码通常用于处理类别间不具有大小关系的数据。具体使用时,可以采用稀疏向量进行表示。

机器学习特征处理——独热编码:

https://www.jianshu.com/p/42e93acacc52