決策樹演算法的實現:
一、c4.5演算法的實現
a、需要的包:sampling、party
sampling用於實現資料分層隨機抽樣,構造訓練集和測試集。library(sampling)
library(party)
party用於實現決策樹演算法
另外,還可以設定隨機數種子,可以獲得相同的隨機數。方便資料重複檢驗。
b、資料準備#設定隨機數種子,可以獲得相同的隨機數
set.seed(100)
我們使用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="******")
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
correlation=cor(algae$a1,algae[,idx.num],use = "pairwise.complete.obs")
correlation
correlation=abs(correlation)
correlation=correlation[,order(correlation,decreasing = t)]
correlation
# 所有分類變數的卡方值
idx.factor
class(idx.factor)
algae[,idx.factor]
t1=table(algae$season,algae$size)
t1chisq.test(t1)
決策樹 C4 5演算法
c4.5演算法是用於生成決策樹的的一種經典演算法,是id3演算法的一種延伸和優化。改進了點 1 通過資訊增益率選擇 屬性,克服了id3演算法中通過資訊增益傾向於選擇擁有多個屬性值的屬性作為 屬性的不足 2 能夠處理離散型和連續型的屬性型別,即將連續型的屬性進行離散化處理 3 構造決策樹之後進行剪枝操...
決策樹之C4 5演算法
c4.5演算法是機器學習中的乙個重要的決策樹演算法,它是對id3演算法的改進,相對於id3演算法主要有以下幾個改進 1 用資訊增益率來選擇屬性 2 在決策樹的構造過程中對樹進行剪枝 3 對非離散資料也能處理 4 能夠對不完整資料進行處理 接下來分別詳細講述這幾點的改進方案 1 用資訊增益率來選擇屬性...
C4 5決策樹演算法思想
前幾天有小夥伴問到這個演算法,於是想總結一下好了,畢竟是乙個如此著名的演算法,這裡就重在思想啦 建議配合實際例子學習。參考 1 周志華 機器學習 2 決策樹 decision tree 是在已知各種情況發生概率的基礎上,通過構成決策樹來評價專案風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一...