将由group_by分类变量生成的连续变量表示为ML模型

时间:2019-03-19 20:57:57

标签: r

我正在尝试找到处理数据的最佳方法(在数据帧调用x中)。我目前正在编写一个函数,该函数将使用Cust_ID变量group_by并计算该Cust_ID和ID_code的平均价格。

我目前正在做的是y并生成一个稀疏矩阵,并且ID_code与稀疏矩阵匹配的情况下,1都会实现到单元格中。 (类似于伪变量/一键编码,但我的唯一列多于唯一的ID_code。)

y创建的列更加独特,比x$ID_code(包含8001:8005)中的观察更为独特。

首先计算mean Price,其次生成y序列。第三,创建由zeroones填充的矩阵。最后,将原始数据x与新创建的matrix绑定在一起。

   x <- x %>%
  group_by(Cust_ID, ID_code) %>%
  mutate(mean_cust_price = mean(price)) %>%
  ungroup()

y <- seq(8000:8010)
y <- y + 8000
y <- as.data.frame(y)

##############################################################################
matrixDATA <-  matrix(y$y, byrow = TRUE,
                           nrow = length(x$ID_code),
                            ncol = length(y$y),
                            dimnames = list(1:nrow(x), y$y))

 for(i in 1:ncol(matrixDATA)){
   matrixDATA[, i] <- matrixDATA[, i] == as.integer(x$ID_code)
 }

x_clean <- cbind(x, matrixDATA)
##############################################################################

这部分全部按我的期望和预期工作。但是,我想合并mean_cust_price变量。创建新的稀疏矩阵不是此连续变量的正确方法,但我总结了如何显示(机器学习模型)当ID_code = 8002Cust_ID = 11时,平均价格为p {{1 }}。

我只是在努力思考如何将其提供给ML模型。

例如:

我的原始数据如下:

982212.963

我有# A tibble: 200 x 4 Cust_ID ID_code price mean_cust_price <dbl> <dbl> <dbl> <dbl> 1 11.0 8002 365000 982213 2 11.0 8004 193000 355850 3 11.0 8003 690000 532776 4 11.0 8004 195000 355850 5 11.0 8003 558000 532776 6 10.0 8004 900 1100 7 10.0 8002 1200 1189 8 11.0 8003 1100000 532776 9 11.0 8004 480000 355850 10 11.0 8001 295000 377793 这样的分类变量,我ID_code进入了矩阵。

最终数据如下:

spread

因此,我可以表示 Cust_ID ID_code price mean_cust_price 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 1 11 8002 365000 982213.0 0 1 0 0 0 0 0 0 0 0 2 11 8004 193000 355850.0 0 0 0 1 0 0 0 0 0 0 3 11 8003 690000 532775.8 0 0 1 0 0 0 0 0 0 0 4 11 8004 195000 355850.0 0 0 0 1 0 0 0 0 0 0 8011 1 0 2 0 3 0 4 0 变量,但我也想展示Cust_ID变量,因为取决于mean_cust_priceCust_ID的数字变化很大。

我怎样才能最好地代表这一点?

当前格式可以以稀疏矩阵格式输入到ML模型中(在删除ID变量和Price之后)。

数据:

ID_code

0 个答案:

没有答案