【发布时间】:2017-01-05 18:37:47
【问题描述】:
从变量var1 的训练数据集开始:
var1
A
B
C
D
我想创建一个模型(我们称之为dummy_model1),然后将训练数据集转换为:
var1_A var1_B var1_C var1_D
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
此功能(或类似功能)存在于R 中的dummies 包和Pandas 中的get_dummies 中,甚至存在于SQL 中的case 语句中。
然后我希望能够将dummy_model1 应用于新数据集:
var1
C
7
#
A
并得到以下输出:
var1_A var1_B var1_C var1_D
0 0 1 0
0 0 0 0
0 0 0 0
1 0 0 0
我知道我可以在 SQL 中使用“case”语句执行此操作,但鉴于我有大约 2,000 个变量,我很想自动化该过程。此外,新数据集几乎总是有“坏”数据(例如,上例中的7 和#)。
有点语言不可知论(只要它是开源的),但更喜欢Python 或R。请注意,数据超过 500GB,因此限制了我的一些选择。提前致谢。
【问题讨论】:
-
在 R 中,您可以从了解
model.matrix函数开始。 -
您实际上是在问如何将新数据转换为与您从训练数据中创建的虚拟变量编码(可能来自
get_dummies)一致?所以 A 和 C 被 7 编码而 # 被忽略?如果是,我会发布一个简短的 Python 答案。 -
如果“坏”数据是指“不同”数据而不是“代码破坏”数据,那不是问题。我假设您的 500gb 数据集不适合内存(如果可以,请纠正我)。如果没有,请进行信封计算(或仅检查)您的单列
var1是否适合内存。 -
@FrankB。谢谢;我现在有一个更好的图片。我会把解决方案留给那些已经在写的人。
-
明白了。然后我将编写我的解决方案,假设
var1适合内存。
标签: python r dummy-variable