R語言學習系列(資料探勘之決策樹演算法實現--ID3程式碼篇)
轉載自:http://blog.csdn.net/hawksoft/article/details/7760868
1、輔助類,用於計算過程和結果儲存
[csharp] view plaincopyprint?- /// <summary>
- /// 決策樹節點.
- /// </summary>
- publicclass DecisionTreeNode
- {
- /// <summary>
- /// 型別:分支或葉子
- /// </summary>
-
public
- /// <summary>
- /// 關鍵字一般存當前屬性因子
- /// </summary>
- publicstring Key { get; set; }
- /// <summary>
- /// 判斷值,葉子節點有效.
- /// </summary>
- publicstring DecisionValue { get; set; }
- /// <summary>
-
/// 前一個屬性因子,可以看作是分支條件.
- /// </summary>
- publicstring ParentFactor { get; set; }
- /// <summary>
- /// 當前節點的樣本數量,
- /// </summary>
- publicint CalcCount { get; set; }
- /// <summary>
- /// 當前節點的樣本索引集合.
- /// </summary>
-
public List<int> DataIndexes {
- /// <summary>
- /// 分支節點集合.
- /// </summary>
- public Dictionary<string, DecisionTreeNode> Children { get; privateset; }
- /// <summary>
- /// 父節點
- /// </summary>
- public DecisionTreeNode Parent { get; set; }
- public DecisionTreeNode()
- {
- DataIndexes = new List<int>();
- Children = new Dictionary<string, DecisionTreeNode>();
- }
- }
- /// <summary>
- /// 用於計算過程存放資料.用陣列不是很方便,這裡採用字典,可以減少迴圈次數.
- /// </summary>
- publicclass CalcNode
- {
- publicstring Key { get; set; }
- publicstring Type { get; set; }
- publicint CalcCount { get; set; }
- public List<int> DataIndexes {get;set;}
- public Dictionary<string, CalcNode> Children { get; privateset; }
- public CalcNode()
- {
- DataIndexes = new List<int>();
- Children = new Dictionary<string, CalcNode>();
- }
- publicvoid AddChildren(string Key,string AType,int AIndex, int Count = 1)
- {
- if (Children.ContainsKey(Key) == false)
- {
- Children.Add(Key, new CalcNode());
- }
- Children[Key].Key = Key;
- Children[Key].Type = AType;
- Children[Key].CalcCount += Count;
- Children[Key].DataIndexes.Add(AIndex);
- }
- }
2、演算法類,註釋比較詳細,有時間再寫一篇原理文章
- /// <summary>
- /// 決策樹演算法類,不適合連續性值。
- /// </summary>
- publicclass DecisionTreeAlg
- {
- privatestring PrefixString = " ";
- /// <summary>
- /// 構建決策樹,決策分類屬性約定放在第1列。
- /// </summary>
- /// <param name="Inputs">行表示屬性,列為值,注意列等長</param>
- /// <param name="PNode">父節點</param>
- /// <param name="PropertyNames">測試屬性名稱</param>
- /// <param name="TestProperties">當前可用測試屬性索引</param>
- /// <param name="DefaultClassFactor">預設判別決策分類因子</param>
- /// <param name="CallLevel">用來測試輸出控制,無實際作用</param>
- /// <param name="OutContents">輸出內容,為除錯用</param>
- /// <param name="PropertyFactors">屬性因子</param>
-
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