[問題] 分辨連續或類別變數
假設有一筆資料 X
我想把其中的連續變數和類別變數分別找出來
舉例來說
X = [ 0 0 2.5 21 1
1 1 3.4 18 0
1 2 6.6 13 1
1 4 4.8 7 1
0 3 5.1 25 1 ];
我想將 X 分成
X_con = [ 2.5 21
3.4 18
6.6 13
4.8 7
5.1 25 ];
X_cat = [ 0 0 1
1 1 0
1 2 1
1 4 1
0 3 1 ];
我目前想到的方法是
flag = false(1,size(X,2));
for i = 1:size(X,2)
flag(i) = all(X(:,i).*X(:,i)==X(:,i));
end
X_con = X(:,~flag);
X_bin = X(:,flag);
這麼一來可以找到 binary variables
但是顯然沒找到其他類別變數
想請問各位有更好的方法嗎?
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.115.173.27
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1450455870.A.88D.html
推
12/19 00:31, , 1F
12/19 00:31, 1F
謝謝回應,但我突然發現我要分的應該是類別變數 categorical variable 才對
也就是 0 1 2 3 4 被歸到同一群,27 13 25 18 等等被歸到連續那一群
如果是這樣該如何做呢?謝謝
推
12/19 01:10, , 2F
12/19 01:10, 2F
推
12/19 10:51, , 3F
12/19 10:51, 3F
→
12/19 10:52, , 4F
12/19 10:52, 4F
→
12/19 10:54, , 5F
12/19 10:54, 5F
→
12/19 10:55, , 6F
12/19 10:55, 6F
→
12/19 11:01, , 7F
12/19 11:01, 7F
→
12/19 11:02, , 8F
12/19 11:02, 8F
→
12/19 11:03, , 9F
12/19 11:03, 9F
→
12/19 11:23, , 10F
12/19 11:23, 10F
→
12/19 11:23, , 11F
12/19 11:23, 11F
謝謝回應
的確,我應該要先讓板友(包括我自己)搞懂分類標準
我心中想的變數是性別、年紀、學歷、所得等個人資料
[ 0 1 1 1 0 ] 代表性別
[ 0 1 2 4 3 ] 對應到不同的教育水準 0: 沒念書 1: 國小 2: 國中 之類
[ 21 18 13 7 25 ] 則是年紀
而資料裡可能還有 [ 22000 28000 31520 36050 ] 等不同所得
通常後兩者會被當作連續變數
但由於測量誤差,收集到的數據只能取到整數
因此用 round 可能行不通
不過我想這是我定義上的問題,跟 Matlab 無關了
anyway 還是謝謝大家
最後想請問
就算只挑出 binary variables
有比上面更好的方法嗎?
另外連續整數測試指的是什麼?
謝謝大家~
推
12/19 12:59, , 12F
12/19 12:59, 12F
→
12/19 12:59, , 13F
12/19 12:59, 13F
推
12/19 13:01, , 14F
12/19 13:01, 14F
→
12/19 13:02, , 15F
12/19 13:02, 15F
→
12/19 13:02, , 16F
12/19 13:02, 16F
推
12/19 13:59, , 17F
12/19 13:59, 17F
→
12/19 13:59, , 18F
12/19 13:59, 18F
→
12/19 13:59, , 19F
12/19 13:59, 19F
→
12/19 13:59, , 20F
12/19 13:59, 20F
→
12/19 13:59, , 21F
12/19 13:59, 21F
→
12/19 13:59, , 22F
12/19 13:59, 22F
→
12/19 13:59, , 23F
12/19 13:59, 23F
→
12/19 14:22, , 24F
12/19 14:22, 24F
→
12/19 14:22, , 25F
12/19 14:22, 25F
感謝回應,我想是我沒講清楚
如果事前知道 X 包含了什麼變數
那當然不必如此麻煩
但若事前不知道,例如說 X 是別人提供的
我希望能找一個方法來自動分類
當然要求別人先分好類也是解法之一
感謝大家的回應
推
12/19 18:01, , 26F
12/19 18:01, 26F
→
12/19 18:02, , 27F
12/19 18:02, 27F
→
12/19 18:02, , 28F
12/19 18:02, 28F
→
12/19 18:03, , 29F
12/19 18:03, 29F
→
12/19 18:03, , 30F
12/19 18:03, 30F
→
12/19 18:04, , 31F
12/19 18:04, 31F
→
12/19 18:04, , 32F
12/19 18:04, 32F
→
12/19 18:04, , 33F
12/19 18:04, 33F
→
12/19 18:06, , 34F
12/19 18:06, 34F
→
12/19 18:06, , 35F
12/19 18:06, 35F
→
12/19 19:41, , 36F
12/19 19:41, 36F
→
12/19 19:41, , 37F
12/19 19:41, 37F
→
12/19 19:42, , 38F
12/19 19:42, 38F
→
12/19 19:42, , 39F
12/19 19:42, 39F
感謝指點,其實是我想寫一個估計法給有資料的人操作
因此我不會知道有哪些變數,也不知道變數的特性
但由於這個估計法必須先區分連續變數和類型變數
叫使用者先分好類目前看來是最好的答案
感謝各位板友的建議與回應,謝謝
※ 編輯: Tinderstick (140.112.177.145), 01/01/2016 17:36:12
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章