splitDataSet這個函式困擾了我好一陣子,為什麼以某一特徵值為標準進行劃分資料集以後,變成了區域性?例如,如果以第1個特徵為0為標準進行劃分,那麼返回的結果集就是不含有此特徵的結果集,如下圖紅框部分所示:
程式碼表示為:[[1, 'no'], [1, 'no']]
同理,如果以第1個特徵為1作為標準,那麼返回的結果集如下圖所示:
程式碼表示為:[[1, 'yes'], [1, 'yes'], [0, 'no']]
後經此文提示:http://blog.csdn.net/guo1988kui/article/details/75110361
瞭解到這是因為把那個特徵值作為分界線以後,它自身不再作為特徵出現在資料集中。
但是我沒想明白為什麼要這樣做,是什麼道理?為什麼分界線就不再進入資料集了?穿紅衣服的同學一組,藍衣服的同學一組,那麼這個分界線就是“衣服”,為什麼要把“衣服”排除在外?
同時,實際上,它是否進入資料集,對熵並沒有影響。
它統計的是符合特徵的樣本數量佔樣本總體的比例,得到概率,與特徵數量本身沒有關係。
存疑。隨著學習的深入,希望有一天能夠解開。
繼續往下看就知道了,因為要構建決策樹,資料集中的特徵應當逐步減少。