在做特征向量化的时候, 为什么一个特征有 3 个不同的值,向量化后变为了 0 和 1? 在学习随机森林的时候遇到问题. 虚心请教大佬

2021-07-20 19:33:00 +08:00
 yagamil
vec = DictVectorizer()
X = vec.fit_transform(feature_list).toarray()

数据格式如下:

age 特征有 3 个值 youth, middle_age , sesor 然后向量化后就变成了

这样得到的结果是不是就不准了?

1080 次点击
所在节点    Python
6 条回复
necomancer
2021-07-20 22:51:50 +08:00
取决于你对 feature 的理解和怎么建模,比如你可以 low=1, medium=2, high=3,因为 low-high 之间距离大于 medium 到 high 的距离似乎也挺合理的。但向量化
low medium high
(01) (01) (01)
比如你有一个 feature 对应 low,则给出向量
1 0 0
high 则是
0 0 1
这样做是为了两两间等距,并且是一组正交基。一般用于你的离散 feature 之间等权且没什么关联。
yagamil
2021-07-20 23:21:29 +08:00
@necomancer 谢谢回复.
如果特征里面的不同值有 4 个,5 个,是不是就无法用 0 和 1 表达了你?
necomancer
2021-07-22 10:06:45 +08:00
@yagamil 可以啊,
a b c d e
0 0 0 0 1
代表选择了 e
princelai
2021-07-22 15:47:08 +08:00
更常用的是 one hot 方法,特征处理是为了让计算机知道怎么区分,通常连续数字不需要做处理,分类 /非连续内容需要做处理,或者说不可以比较大小的都需要处理,能比较大小的直接替换为数字就能用。
yagamil
2021-07-22 23:18:46 +08:00
谢谢大神回复
@princelai 这个倒经常用. 不过对于随机森林这种算信息商的, 不同类别只是一个符号作用, 并不涉及距离. 好像 onehot 没用的 ?
princelai
2021-07-23 10:03:39 +08:00
@yagamil #5 你可以看看西瓜书,我印象中以上来就讲的挑西瓜对西瓜分类。比如西瓜有很多性状,根蒂曲直,瓜皮花纹,瓜皮颜色,瓤颜色等等,瓤颜色有红色、青色、分红三种,这一个特征做完 onehot 就是 001,010,100,最终结果恰好是红色的就是熟瓜,那么这个特征熵最低,从这里分裂可以使结果误差最小,那么其他特征都可以不用,只用到瓜瓤颜色 onehot 后的三列特征即可 100%预测准确了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/790686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX