1. 程式人生 > >R語言-決策樹演算法(C4.5和CART)的實現

R語言-決策樹演算法(C4.5和CART)的實現

決策樹演算法的實現:

一、C4.5演算法的實現

a、需要的包:sampling、party

library(sampling)
library(party)

sampling用於實現資料分層隨機抽樣,構造訓練集和測試集。

party用於實現決策樹演算法

另外,還可以設定隨機數種子,可以獲得相同的隨機數。方便資料重複檢驗。

#設定隨機數種子,可以獲得相同的隨機數
set.seed(100)
b、資料準備

我們使用iris資料集作為演算法使用的資料集,通過下列各方法可以檢視資料集的各種指標。

head(iris)
str(iris)
dim(iris)
然後構造訓練集和測試集
sub_train = strata(iris,
                   stratanames = "Species",
                   size = rep(35, 3),
                   method = "srswor")
data_train = iris[sub_train$ID_unit, ]
data_test = iris[-sub_train$ID_unit, ]
抽樣方法是分層不放回抽樣。

c、訓練模型

iris_tree = ctree(Species ~ ., data = data_train)
我們可以通過方法print()或者plot()檢視模型:
#檢視模型
print(iris_tree)
plot(iris_tree)
plot(iris_tree,type="simple")
得到的結果如下:

d、用測試集檢驗模型

test_pre = predict(iris_tree,newdata = data_test)
table(test_pre,data_test$Species)
correct = sum(as.numeric(test_pre)==as.numeric(data_test$Species))/nrow(data_test)
得到的結果如下圖:


對測試集的判斷準確率0.9333。

我們也可以看一下模型對訓練集的判斷準確率:

table(predict(iris_tree),data_train$Species)
correct = sum(as.numeric(predict(iris_tree))==as.numeric(data_train$Species))/nrow(data_train)
得到結果:


準確率0.97143。

二、CART演算法的實現

新增以來的包

library(xts)
library(TTR)
library(quantmod)
library(ROCR)
library(DMwR)
可用於檢視連續變數的相關性
#檢視所有連續變數的相關性,所有分類變數的卡方值
#連續變數
idx.num=which(sapply(algae,is.numeric))
idx.num
correlation=cor(algae$a1,algae[,idx.num],use = "pairwise.complete.obs")
correlation
correlation=abs(correlation)
correlation=correlation[,order(correlation,decreasing = T)]
correlation
分類變數的卡方值
# 所有分類變數的卡方值
idx.factor=which((sapply(algae, is.factor)))
idx.factor
class(idx.factor)
algae[,idx.factor]
t1=table(algae$season,algae$size)
t1
chisq.test(t1)

相關推薦

R語言-決策演算法C4.5CART實現

決策樹演算法的實現: 一、C4.5演算法的實現 a、需要的包:sampling、party library(sampling) library(party) sampling用於實現資料分層隨機抽樣,構造訓練集和測試集。 party用於實現決策樹演算法 另外,還可以設定隨

決策演算法C4.5

  前面我們講到了 I D 3 ID

R語言決策演算法

1,生成樹:rpart()函式raprt(formular,data,weight,subset,na.action=na.rpart,method,model=FALSE,x=FALSE,y=TRUE,parms,control,cost,...)         fomula :模型格式形如outcom

決策ID3、C4.5CART演算法:資訊熵,區別,剪枝理論總結

決策樹演算法中的ID3、c4.5、CART演算法,記錄如下:     決策樹演算法:顧名思義,以二分類問題為例,即利用自變數構造一顆二叉樹,將目標變數區分出來,所有決策樹演算法的關鍵點如下:     1.分裂屬性的選擇。即選擇哪個自變數作為樹叉,也就是在n個自變數中,優先選

決策ID3、C4.5CART、隨機森林的原理與例子

(寫在前面:作者是一名剛入學的模式識別專業的碩士生,第一次寫部落格,有錯誤的地方還請大家多多指教評論,一起交流呀~) 決策樹的基本流程 ①劃分特徵的選擇(常見的選擇方法有:資訊增益、增益率、基尼指數,下文會詳細介紹) ②劃分停止準則:停止準則表示該節點不再劃分

轉載]決策ID3、C4.5CART科普

轉載地址:http://blog.csdn.net/zhangping1987/article/details/23021381 2011年獲得了資料探勘領域最高榮譽獎KDD創新獎,昆蘭發明了著名的決策樹學習演算法ID3、C4.5,其個人主頁公佈了C4.5的C

決策演算法ID3,C4.5CART

ID3,C4.5,CART是是決策樹的核心演算法。它們都由特徵選擇,樹的生成,剪枝組成。但ID3和C4.5用於分類,CART可用於分類與迴歸。 1.ID3演算法 ID3演算法遞迴地構建決策樹,從根節點開始,對所有特徵計算資訊增益,選擇資訊增益最大的特徵作為節點的特徵,由該特徵的不同取值建

機器學習總結決策ID3,C4.5演算法CART演算法

本文主要總結決策樹中的ID3,C4.5和CART演算法,各種演算法的特點,並對比了各種演算法的不同點。 決策樹:是一種基本的分類和迴歸方法。在分類問題中,是基於特徵對例項進行分類。既可以認為是if-then規則的集合,也可以認為是定義在特徵空間和類空間上的條件概率分佈。 決策樹模型:決策樹由結點和有向邊組

【轉】深入淺出理解決策演算法-ID3演算法C4.5演算法

從深入淺出理解決策樹演算法(一)-核心思想 - 知乎專欄文章中,我們已經知道了決策樹最基本也是最核心的思想。那就是其實決策樹就是可以看做一個if-then規則的集合。我們從決策樹的根結點到每一個都葉結點構建一條規則。 並且我們將要預測的例項都可以被一條路徑或者一條規則所覆蓋。 如下例:假設我

C4.5決策演算法Python實現

C4.5演算法使用資訊增益率來代替ID3的資訊增益進行特徵的選擇,克服了資訊增益選擇特徵時偏向於特徵值個數較多的不足。資訊增益率的定義如下: # -*- coding: utf-8 -*- from numpy import * import ma

機器學習回顧篇7決策演算法ID3、C4.5

  注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。   1 演算法概述¶

R語言決策族——隨機森林演算法

筆者寄語:有一篇《有監督學習選擇深度學習還是隨機森林或支援向量機?》(作者Bio:SebastianRaschka)中提到,在日常機器學習工作或學習中,當我們遇到有監督學習相關問題時,不妨考慮下先用簡單的假設空間(簡單模型集合),例如線性模型邏輯迴歸。若效果不好,也即並沒達到你的預期或評判效果基

決策模型 ID3/C4.5/CART演算法比較

決策樹模型在監督學習中非常常見,可用於分類(二分類、多分類)和迴歸。雖然將多棵弱決策樹的Bagging、Random Forest、Boosting等tree ensembel 模型更為常見,但是“完全生長”決策樹因為其簡單直觀,具有很強的解釋性,也有廣泛的應用,而且決策樹是

決策ID3、C4.5CART

顧名思義,決策樹是基於樹結構進行決策。 1.ID3決策樹 以最大化資訊增益為準則來選擇劃分屬性。 假設離散屬性a上有V個可能的取值{a1,...,aV}\{a^1,...,a^V\}{a1,...,aV},若使用a對樣本集D進行劃分,則會產生V個分支節點。其中第

機器學習:決策及ID3,C4.5,CART演算法描述

文章目錄 概念理解 熵: 條件熵: 資訊增益,互資訊: 資訊增益比 基尼指數 ID3演算法描述 C4.5演算法描述 CART (Classification and Regression Tree

機器學習演算法 --- 決策ID3,C4.5

一、決策樹基本概念及演算法優缺點 1.什麼是決策樹 分類決策樹模型是一種描述對例項進行分類的樹形結構。決策樹由結點和有向邊組成。結點有兩種型別:內部結點和葉結點。內部結點表示一個特徵或屬性,葉結點表示一個類。 決策樹(Decision Tree),又稱判定

python機器學習案例系列教程——決策ID3、C4.5CART

決策樹簡介 決策樹算是最好理解的分類器了。決策樹就是一個多層if-else函式,就是對物件屬性進行多層if-else判斷,獲取目標屬性(類標籤)的類別。由於只使用if-else對特徵屬性進行判斷,所以一般特徵屬性為離散值,即使為連續值也會先進行區間離散

【面試考】【入門】決策演算法ID3,C4.5CART

關於決策樹的purity的計算方法可以參考: [決策樹purity/基尼係數/資訊增益 Decision Trees](https://www.cnblogs.com/PythonLearner/p/12940067.html) 如果有不懂得可以私信我,我給你講。 ## ID3 用下面的例子來理解這個演算法:

【機器學習】決策演算法— 程式碼實現

#coding=utf8 ‘’’ Created on 2018年11月4日 @author: xiaofengyang 決策樹演算法:ID3演算法 ‘’’ from sklearn.feature_extraction import DictVectorize

【轉】深入淺出理解決策演算法-核心思想

演算法思想 決策樹(decision tree)是一個樹結構(可以是二叉樹或非二叉樹)。 其每個非葉節點表示一個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放一個類別。 使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇