首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理范畴变量

问如何处理范畴变量
EN

Data Science用户
提问于 2017-10-14 17:04:58
回答 2查看 2K关注 0票数 0

我是数据科学的新手,对分类变量有一个问题。我的数据集有2列字符串-出发城市和到达城市。看起来是这样的:

代码语言:javascript
复制
ID  | DepCity| ArrCity |Price|Time|SomeColumn   |ColToPredict|
1   |London  | Berlin  | 300 | 95 | 220         | 4          |
2   |Dublin  | Nice    | 420 |115 | 59          | 1          |
3   |Milan   | Brussels| 150 |108 | 154         | 3          |
4   |Paris   | Rome    | 160 |120 | 200         | 4          |
250 |Madrid  | Oslo    | 290 |300 | 110         | 2          |

因此,这两列中都有很多分类变量,而且这些列都很重要(它们的值依赖于其他列)。

我使用Python和滑雪板。而且,不可能像一些教程中所建议的那样,仅仅消除它们。

我知道有一种方法可以通过为每个变量创建带有零和1的新列来处理分类变量。但我不确定这是不是我的情况,因为我在每个专栏里有大约30个独特的城市。将范畴变量转换为数字的最佳方法是什么?

EN

回答 2

Data Science用户

发布于 2017-10-14 18:01:34

在您的具体案例中,您正在与城市合作,城市可以被建模为地理位置。我从来没有用过它--你可以看看地理哈希方法。

或者也可以为每个城市使用标识符。像随机森林这样的算法可以这样直接使用。

票数 3
EN

Data Science用户

发布于 2017-10-19 14:37:31

为每个变量创建0和1s的新列是一种称为“一个热编码”的技术,我认为公平地说,在使用不能使用范畴变量的算法时,这是对待分类变量的一种标准方法。正如您正确识别的那样,它可以通过大幅增加问题的维度来引发问题,特别是当您的分类变量中有许多级别时。其他常用的编码技术,如赫默特,同样增加了维数。

另一种编码方式是二进制编码。在二进制编码中,类别级别首先被编码为序号(顺序编号)。序数码被转换为二进制码,二进制数字被分割成单独的列。要编码30个独特的城市,您需要5列。维数由表示二进制数所需的数字数增加,对于每个分类变量。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/23796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档