【问题标题】:Dummy coding omits / removes select variables from the data frame R虚拟编码从数据帧 R 中省略/删除选择变量
【发布时间】:2017-03-15 04:53:05
【问题描述】:

我有一个相当大的数据集 1460(n)x81(p)。大约 38 个变量是数字变量,其余变量是 2-30 级的因子。我正在使用 *dummies 包中的 dummy.data.frame 来编码用于运行回归模型的因子变量。

但是,当我运行以下代码时:

train_dummy <- dummy.data.frame(train, sep = ".", verbose = TRUE, all = TRUE) 一些来自原始数据集的列被删除。

有没有人遇到过这样的问题?

原始训练数据集链接:https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

正在删除原始数据集中的许多列,包括响应变量 SalePrice。关于尝试什么的任何想法/建议?

【问题讨论】:

    标签: r dataframe regression pca


    【解决方案1】:

    我无法重现该问题。我认为这里没有足够的信息来重现该问题,但我确实有一些初步想法。

    在训练/测试拆分之前运行虚拟数据处理

    我看到您仅在训练数据上运行虚拟数据。我发现在整个数据集上运行虚拟数据处理通常是更好的策略,然后拆分为训练/测试。

    有时当您先拆分时,您可能会遇到因素水平问题。

    假设我有一个名为 colors 的字段,它是我的数据中包含级别 redbluegreen 的一个因素。如果我将数据拆分为训练数据和测试数据,我可能会遇到这样一种情况,即我的训练数据只有 redblue 值而没有 green。现在,如果我的测试数据集包含所有三个,那么我的训练数据与测试数据中的列数将会有所不同。

    我相信解决这个问题的一种方法是dummy.data.frame 函数中的drop 参数默认为 TRUE。

    检查事项

    在为训练和测试运行虚拟数据处理之前运行这些,以查看这些字段具有哪些特征被丢弃:

    # find the class of each column
    train_class <- sapply(train, class)   
    test_class <- sapply(test, class)
    
    # find the number of unique values within each column
    unq_train_vals <- sapply(train, function(x) length(unique(x))) 
    unq_test_vals <- sapply(test, function(x) length(unique(x)))
    
    # combine into data frame for easy comparison
    mydf <- data.frame(
        train_class = train_class,
        test_class = test_class,
        unq_train_vals = unq_train_vals,
        unq_test_vals = unq_test_vals
    

    )

    我知道这不是一个真正的“答案”,但我还没有足够的代表发表评论。

    【讨论】:

    • 所有被省略的列都是数字或因子类。
    • 所有被省略的列都是数字或因子类。我的代码已经在检查类类型。由于某种奇怪的原因,从原始数据集中删除了许多列。问题中的数据只是虚拟数据。
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2019-02-07
    • 2017-01-08
    • 1970-01-01
    相关资源
    最近更新 更多