1. 程式人生 > >R語言學習系列(資料探勘之決策樹演算法實現--ID3程式碼篇)

R語言學習系列(資料探勘之決策樹演算法實現--ID3程式碼篇)

轉載自:http://blog.csdn.net/hawksoft/article/details/7760868

1、輔助類,用於計算過程和結果儲存

[csharp] view plaincopyprint?
  1. /// <summary>
  2.     /// 決策樹節點.
  3.     /// </summary>
  4.     publicclass DecisionTreeNode  
  5.     {  
  6.         /// <summary>
  7.         /// 型別:分支或葉子
  8.         /// </summary>
  9.         public
    string Type { getset; }  
  10.         /// <summary>
  11.         /// 關鍵字一般存當前屬性因子
  12.         /// </summary>
  13.         publicstring Key { getset; }  
  14.         /// <summary>
  15.         /// 判斷值,葉子節點有效.
  16.         /// </summary>
  17.         publicstring DecisionValue { getset; }  
  18.         /// <summary>
  19.         /// 前一個屬性因子,可以看作是分支條件.
  20.         /// </summary>
  21.         publicstring ParentFactor { getset; }  
  22.         /// <summary>
  23.         /// 當前節點的樣本數量,
  24.         /// </summary>
  25.         publicint CalcCount { getset; }  
  26.         /// <summary>
  27.         /// 當前節點的樣本索引集合.
  28.         /// </summary>
  29.         public List<int> DataIndexes {
    get;set;}  
  30.         /// <summary>
  31.         /// 分支節點集合.
  32.         /// </summary>
  33.         public Dictionary<string, DecisionTreeNode> Children { getprivateset; }  
  34.         /// <summary>
  35.         /// 父節點
  36.         /// </summary>
  37.         public DecisionTreeNode Parent { getset; }  
  38.         public DecisionTreeNode()  
  39.         {  
  40.             DataIndexes = new List<int>();  
  41.             Children = new Dictionary<string, DecisionTreeNode>();  
  42.         }  
  43.     }  
  44.     /// <summary>
  45.     /// 用於計算過程存放資料.用陣列不是很方便,這裡採用字典,可以減少迴圈次數.
  46.     /// </summary>
  47.     publicclass CalcNode  
  48.     {  
  49.         publicstring Key { getset; }  
  50.         publicstring Type { getset; }  
  51.         publicint CalcCount { getset; }  
  52.         public List<int> DataIndexes {get;set;}  
  53.         public Dictionary<string, CalcNode> Children { getprivateset; }  
  54.         public CalcNode()  
  55.         {  
  56.             DataIndexes = new List<int>();  
  57.             Children = new Dictionary<string, CalcNode>();  
  58.         }  
  59.         publicvoid AddChildren(string Key,string AType,int AIndex, int Count = 1)  
  60.         {  
  61.             if (Children.ContainsKey(Key) == false)  
  62.             {  
  63.                 Children.Add(Key, new CalcNode());  
  64.             }  
  65.             Children[Key].Key = Key;  
  66.             Children[Key].Type = AType;  
  67.             Children[Key].CalcCount += Count;  
  68.             Children[Key].DataIndexes.Add(AIndex);  
  69.         }  
  70.     }  


2、演算法類,註釋比較詳細,有時間再寫一篇原理文章

[csharp] view plaincopyprint?
  1. /// <summary>
  2.    /// 決策樹演算法類,不適合連續性值。
  3.    /// </summary>
  4.    publicclass DecisionTreeAlg  
  5.    {  
  6.        privatestring PrefixString = "                                                                                                                                                                                                       ";  
  7.        /// <summary>
  8.        /// 構建決策樹,決策分類屬性約定放在第1列。
  9.        /// </summary>
  10.        /// <param name="Inputs">行表示屬性,列為值,注意列等長</param>
  11.        /// <param name="PNode">父節點</param>
  12.        /// <param name="PropertyNames">測試屬性名稱</param>
  13.        /// <param name="TestProperties">當前可用測試屬性索引</param>
  14.        /// <param name="DefaultClassFactor">預設判別決策分類因子</param>
  15.        /// <param name="CallLevel">用來測試輸出控制,無實際作用</param>
  16.        /// <param name="OutContents">輸出內容,為除錯用</param>
  17.        /// <param name="PropertyFactors">屬性因子</param>
  18.        publicvoid BuildDecisionTree(int CallLevel, refstring OutContents, 

    相關推薦

    R語言學習系列(資料決策演算法實現--ID3程式碼)

    轉載自:http://blog.csdn.net/hawksoft/article/details/7760868 1、輔助類,用於計算過程和結果儲存 [csharp] view plaincopyprint? /// &

    R語言中的資料演算法

          R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、原始碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。                                                               

    資料推薦分析--python實現

    # #  FILTERINGDATA.py # #  Code file for the book Programmer's Guide to Data Mining #  http://guidetodatamining.com #  Ron Zacharski # #

    機器學習資料十個重要演算法

    資料探勘中常用的十個重要演算法  一、 C4.5 C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3 演算法.   C4.5演算法繼承了ID3演算法的長處。並在下面幾方面對ID3演算法進行了改進: 1) 用資訊增益率來選擇屬性,克服了用資訊增

    轉載:資料_SVD的python實現和分析

    作者:NumX  來源:CSDN  原文:https://blog.csdn.net/baidu_36316735/article/details/53760479?utm_source=copy 前言 今日實現第一個推薦演算法,在”機器學習實戰“一書中找到了SVD方法一

    基於微軟案例資料Microsoft 時序演算法

    此演算法也是資料探勘演算法中比較重要的一款,因為所有的推算和預測都將利用於未來,而這所有的一切都將有一條時間線貫穿始終,而這將是時序演算法的側重點。 應用場景介紹 通過前幾篇文章的介紹,我們已經能預測出影響某種行為的因素有哪些,並且根據這些因素綜合挖掘出我們的最優客戶群體(

    資料_SVD的python實現和分析pin

    前言 今日實現第一個推薦演算法,在”機器學習實戰“一書中找到了SVD方法一章練習。這裡總結下筆記經驗,與大家分享 。 簡介 對於一個簡單的推薦系統,例如電影推薦,我們知道N個使用者對M個電影的評分。這時候對於一個新的使用者,我們應該如何給他推薦新的電影呢?一個最簡單的方法,

    資料Scala零基礎學習(一)

    第5章 函式5.1函式程式程式碼:object section5_1 extends App { // def gcd(x:Int,y:Int):Int=if(x%y==0) y else gcd(

    資料無監督學習

    在單鏈接(或單鏈)層次聚類中,兩個聚類之間的距離是兩個聚類中最近的兩個資料點(兩個資料分別來自兩上不同的聚類)之間的距離。即單鏈接聚類演算法在每一步合併那些最近元素具有最小的聚類,即最短最近資料點的兩上聚類。

    【Mark Schmidt課件】機器學習資料——特徵選擇

    本課件的主要內容如下: 上次課程回顧:尋找“真實”模型 資訊準則 貝葉斯資訊準則 關於食物過敏 特徵選擇 全基因組關聯分析 “迴歸權重”方法 搜尋評分法 評分函式的選擇 “特徵數量”懲罰

    【Mark Schmidt課件】機器學習資料——非線性迴歸

    本課件主要內容包括: 魯棒迴歸 體育運動中的非線性級數 自適應計數/距離法 線性模型的侷限性 非線性特徵變換 一般多項式特徵(d = 1) 英文原文課件下載地址: http://page5.dfpan

    【Mark Schmidt課件】機器學習資料——數值優化與梯度下降

    本課件主要包括以下內容: 優化簡介 上次課程回顧:線性迴歸 大規模最小二乘 尋找區域性最小值的梯度下降法 二維梯度下降 存在奇異點的最小二乘 魯棒迴歸 基於L1-範數的迴歸 L1-範數的平滑近似

    【Mark Schmidt課件】機器學習資料——正規方程組

    本課件的主要內容包括: d維資料的梯度和臨界點 最小二乘偏導數 矩陣代數回顧 線性最小二乘 線性和二次梯度 正規方程組 最小二乘問題的不正確解 最小二乘解的非唯一性 凸函式 如何判斷函式的

    【Mark Schmidt課件】機器學習資料——普通最小二乘

    本課件主要內容包括: 有監督學習:迴歸 示例:依賴與解釋變數 數字標籤的處理 一維線性迴歸 最小二乘目標 微分函式最小化 最小二乘解 二維最小二乘 d維最小二乘 偏微分

    零基礎學習資料的33個知識點整理

    摘要: 下面是一些關於大資料探勘的知識點,今天和大家一起來學習一下。1. 資料、資訊和知識是廣義資料表現的不同形式。2. 主要知識模式型別有:廣義知識,關聯知識,類知識,預測型知識,特異型知識3. web挖掘研究的主要流派有:Web結構挖掘、Web使用挖掘、Web內容挖掘4. 一般地說,KD

    資料售房資料分析1

    最近再做一批關於售房的資料,感覺自己陷入一個死衚衕裡: 該批資料是儲存再postgresql裡面,是從某售房網站上爬下來的,以資料庫中的一列欄位作為儲存資料,該列欄位是以json的資料形式儲存的,這裡跟我打開了一個新大門,資料庫能儲存json資料格式的資料,而且postgresql還有一套專門的

    【Mark Schmidt課件】機器學習資料——進一步討論線性分類器

    本課件主要內容包括: 上次課程回顧:基於迴歸的分類方法 Hinge損失 Logistic損失 Logistic迴歸與SVMs “黑盒”分類器比較 最大餘量分類器 支援向量機 魯棒性與凸近似 非凸0-

    【Mark Schmidt課件】機器學習資料——線性分類器

    本課件主要內容包括: 上次課程回顧:L1正則化 組合特徵選擇 線性模型與最小二乘 梯度下降與誤差函式 正則化 辨識重要郵件 基於迴歸的二元分類? 一維判決邊界 二維判決邊界 感知器演算法

    【Mark Schmidt課件】機器學習資料——多元分類

    本課件主要內容: 上次課程回顧:隨機梯度 無限資料的隨機梯度 詞性標註POS POS特徵 多元線性分類 題外話:多標籤分類 多元SVMs 多元Logistic迴歸 題外話:Frobenius範數

    資料十大經典演算法

    國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 2006年12月評選出了資料探勘領域的十大經典演算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, k