【问题标题】:How to scale feature "Age" which is in text format?如何缩放文本格式的特征“年龄”?
【发布时间】:2019-12-09 06:48:04
【问题描述】:

我需要从以下格式的数据集中缩放“年龄”属性。如何在 R 中对基于文本的变量进行缩放?

age_upon_outcome
2 weeks
1 month
3 months
1 year
3 weeks
2 months
8 months

【问题讨论】:

  • 你能再清楚一点,时代的格式是什么吗?在进行任何缩放之前,您必须将文本字段转换为数字字段。
  • @A.K.年龄的格式为 2 周、1 个月、3 个月、1 年

标签: r date data-processing feature-scaling


【解决方案1】:

处理文本数据的一般规范是将它们转换为数字格式,即完整的数字。

在您的情况下,由于变量按周、月或年的顺序排列,因此一种方法是按周或按天计算。

如果你按天计算,你通常会有(考虑一周有 7 天,一个月有 30 天):

14, 30, 90, .... 

如果按周计算,您通常会有(考虑一个月有 4 周,一年有 52 周):

2, 4, 12, ... 

现在你已经有了数字,应该很容易缩放它们,例如流行的 MinMaxScaling:

MinMaxScaleFeature <- function(x)
{
    return((x - min(x)) /(max(x) - min(x)))
}

这就是典型函数的样子。


您还可以使用其他扩展机制,例如 Standard 或 Robust,您可以在此处查看它们:https://medium.com/@ian.dzindo01/feature-scaling-in-python-a59cc72147c1

【讨论】:

    【解决方案2】:
    require(dplyr)
    require(tidyr)
    
    age_upon_outcome <- 
    '2 weeks
    1 month
    3 months
    1 year
    3 weeks
    2 months
    8 months'
    
    age_upon_outcome <- strsplit(age_upon_outcome, '\n') %>% unlist 
    
    my_df <- as.data.frame(age_upon_outcome, stringsAsFactors = FALSE) %>%  as_tibble()
    
    
    my_df %>%  separate(age_upon_outcome, into = c('age', 'unit'), sep = ' ') %>% 
      mutate(unit_in_days = case_when(unit == 'weeks' ~ 7, 
                                      unit == 'month' ~ 30,
                                      unit == 'months' ~ 30,
                                      unit == 'year' ~ 365)) %>% 
     mutate(age = as.numeric(age)*unit_in_days) %>% 
     mutate(scaled_age = (age - mean(age)) /sd(age))
    

    输出

        age unit   unit_in_days scaled_age
      <dbl> <chr>         <dbl>      <dbl>
    1    14 weeks             7     -0.769
    2    30 month            30     -0.650
    3    90 months           30     -0.202
    4   365 year            365      1.85 
    5    21 weeks             7     -0.717
    6    60 months           30     -0.426
    7   240 months           30      0.916
    

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 1970-01-01
      • 2020-05-31
      • 2019-10-10
      • 2017-10-13
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多