2016-01-22 57 views
0

我正在做機器學習的時間序列預測,我需要將日期轉換爲向量的零和一個。 如果我確定日期的相關信息是進行觀察的星期幾,我想要有一個長度爲7的向量的時間序列,其中第一個只包含一個「1」插槽,如果是星期一,第二如果是星期二等...替代scikit學習labelBinarizer在R

我想,例如輸入(如「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 

如果是,它是從sklearn.preprocessing 10時三十分

labelBinarizer()確實是很好的蟒蛇,我已經找了R中的相當,但還沒有找到它。你們有沒有碰巧知道我在找什麼?

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

現在我做這在Python:其中一小時是一個時間序列,在其中我的觀察結果的確切時間;

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!

+0

你有什麼已經嘗試過?你卡在哪裏?你有沒有學習[這個SO討論](http://stackoverflow.com/q/277660/1305688)? –

+0

我沒有卡住,我只想找到一個與python的labelBinarizer()完全相同的r包。我正在尋找一種有效的方式,以避免無休止的無法讀取的代碼。 Thx爲鏈接。不幸的是,這不是我想的。 –

+1

爲我們提供更多可再現的R輸入/輸出。比如說,爲什麼你放棄了那個日期的所有事情,但是它週二的事實呢?你真的想要一個日期的編碼,或任何多層次的因素(一週中的幾天,一年的幾個月,一天中的幾小時)?你能鏈接到python的labelBinarizer的文檔嗎? – Spacedman

回答

0

試試這個:

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 
+0

這很有幫助,非常感謝! –