【问题标题】:Alternative to scikit learn labelBinarizer in RR 中 scikit 学习 labelBinarizer 的替代方案
【发布时间】:2016-04-29 07:01:54
【问题描述】:

我正在为时间序列预测进行机器学习,我需要将日期转换为零和一的向量。 如果我决定日期的相关信息是进行观察的星期几,我希望有一个长度为 7 的向量时间序列,其中仅包含一个“1”放置在第一个插槽中如果是星期一,第二个如果是星期二等等......

例如,我想将输入(如“2015-12-22 22:48:00”)转换为

0 1 0 0 0 0 0

如果相关信息是星期二。或者一个

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0

如果是晚上 10 点

来自sklearn.preprocessinglabelBinarizer() 在python 中做得很好,我在R 中寻找了等价物,但没有找到。你们有谁碰巧知道我在找什么吗?

这是 labelBinarizer() :http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelBinarizer.html

现在我正在 python 中执行此操作:其中 Hour 是我进行观察的确切时间的时间序列;

import sklearn.preprocessing as pp
lbday = pp.LabelBinarizer()
lbday.fit(list(range(24)))
pp.LabelBinarizer(neg_label=0, pos_label=1)
Hour = lbday.transform(Hour)

然后我导出我用 R 读取的二值化日期的 csv。

谢谢!

【问题讨论】:

  • 你已经尝试过什么?你在哪里卡住了?你学习this SO discussion了吗?
  • 我没有卡住,我只是想找到一个与 python 的 labelBinarizer() 做同样事情的 r 包。我正在寻找一种有效的方法,以避免无穷无尽的不可读代码。谢谢链接。不幸的是,这不是我想的。
  • 为我们提供更多可重现的 R 输入/输出。例如,为什么你会放弃关于那个日期的所有内容,但事实上是星期二?您真的想要日期编码,还是任何多级因素(星期几、一年中的几个月、一天中的几个小时)?你能链接到 python 的 labelBinarizer 的文档吗?
  • 当您的代码所做的所有事情都是二进制化小时时,为什么还要提到“二进制化日期”?
  • Spacedman,我希望能够根据一天中的小时、一天中的分钟或一周中的分钟来选择二值化(通过枚举一周中的所有 10080 分钟并构建一个 0 和一个 1) 的 10080 长向量,或者我选择的任何内容。

标签: python r date scikit-learn preprocessor


【解决方案1】:

试试这个:

binarizer <- function(levels){
    f = function(v){
        m = matrix(0, nrow=length(v), ncol=length(levels))
        vf = as.numeric(factor(v, levels=levels))
        m[cbind(1:length(v),vf)]=1
        colnames(m)=levels
        m
    }
    f
}

例子:

> ab = binarizer(letters[1:5]) # valid values a to e
> ab(c("a","e","a"))
     a b c d e
[1,] 1 0 0 0 0
[2,] 0 0 0 0 1
[3,] 1 0 0 0 0 

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 2018-10-21
    • 2016-12-20
    • 2018-11-01
    • 2015-12-22
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    相关资源
    最近更新 更多