目錄
1、id3簡介與補充
看id3算法將近一週左右了,其實從數學過程上去理解就只那麼一天,然後從哲學源頭去理解花了一二天,最後寫成程序前前後後用時一週左右。期間還包括用二三天時間學習matplotlib,自繪決策樹,做數據可視化。
所謂,窮則獨善其身,達則兼濟天下。以後在名不正的情況下,就不過多地施其職,不做過多分享了。總之,就如大家所說,id3其實很簡單,稍複雜一點的是在代碼細節上的落實。
關於id3的介紹,太多太多,我這裏就補充幾點哲學上的內在邏輯:
id3往小說是在分類,往大說是一個決策結果、一個概念形成過程;
一個標籤的成立取決於若干相關特徵,id3就是基於分析這些特徵在影響標籤成立的重要性方面進行的;
進行某個判斷前後的信息熵之差體現這個判斷依據對標籤成立的重要性;
越重要的特徵越早判斷。
2、實例與數據可視化
#數據:
#FIELDS=['Outlook','Temperature','Humidity','Windy','Play']
#S=[
# ['sunny','hot','high','false','no'],
# ['sunny','hot','high','true','no'],
# ['overcast','hot','high','false','yes'],
# ['rain','mild','high','false','yes'],
# ['rain','cool','normal','false','yes'],
# ['rain','cool','normal','true','no'],
# ['overcast','cool','normal','true','yes'],
# ['sunny','mild','high','false','no'],
# ['sunny','cool','normal','false','yes'],
# ['rain','mild','normal','false','yes'],
# ['sunny','mild','normal','true','yes'],
# ['overcast','mild','high','true','yes'],
# ['overcast','hot','normal','false','yes'],
# ['rain','mild','high','true','no']
# ]
效果:
#數據:
#年齡,收入,學生,信貸率,買電腦
#age,income,student,credit_rating,buys_computer
#youth,high,no,fair,no
#youth,high,no,excellent,no
#middle_aged,high,no,fair,yes
#senior,medium,no,fair,yes
#senior,low,yes,fair,yes
#senior,low,yes,excellent,no
#middle_aged,low,yes,excellent,yes
#youth,medium,no,fair,no
#youth,low,yes,fair,yes
#senior,medium,yes,fair,yes
#youth,medium,yes,excellent,yes
#middle_aged,medium,no,excellent,yes
#middle_aged,high,yes,fair,yes
#senior,medium,no,excellent,no
PS:這個credit_rating我還真一時不知道該叫它什麼好。
效果:
其實還遠沒有結束,我還只做到id3算法實現的程序準確性與數據可視化這一層,既還沒用於學習訓練,也沒用於算法自身準確度評價,學習結果輸出應用也還沒做,以及後面的更高級算法都還沒涉足,看來還是要繼續學習。只不過,以後的這些都要簡單、方便很多很多。