1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型
決策樹是根據若干輸入變量的值構造出一個適合的模型,以此來預測輸出變量的值,并用樹形結構展示出來。決策樹主要有兩個類別:分類樹和回歸樹。分類樹主要針對離散的目標變量,回歸樹則針對連續的目標變量。R語言中的rpart軟件包既可以實現回歸樹,又可以實現分類樹。
1 安裝并加載rpart軟件包。
install.packages("rpart")
library(rpart)
rpart()函數的基本形式為:
rpart(formula, data, weights, subset, na.action = na.rpart, method, model = FALSE, x = FALSE, y = TRUE, parms, control, cost, ...)
其中,formula為要建立模型的公式,一般格式為y~x1+x2+...+xn。當輸入變量為除y以外的所有變量時,可簡化為y~.來表示;data為訓練數據集;subset可以幫助我們選出data中的若干行來建立模型;na.action為缺失值處理方式,默認刪除缺失樣本;method用于選擇決策樹的類型,主要有anova回歸樹、class分類樹,另外還有exp、poisson;control中含有大量參數,與rpart.control一致,minsplit表示每個節點中所含樣本數的最小值,minbucket表示每個葉節中所含樣本數的最小值,cp表示復雜度參數,maxdepth表示節點層次的最大值。
2??讀取數據集。
sz_data=read.csv("sz_data.csv",head=T,encoding="utf-8")
head(sz_data);dim(sz_data) #查看數據的前幾行和數據維度
3??進行數據預處理。在實際應用中,如果數據有缺失值,需要先按照一定的方法先對缺失值進行處理。這里我們直接劃分訓練集和測試集,并且隨機抽取70%的樣本作為訓練集。
n=0.7*nrow(sz_data) #作為訓練集的樣本量
sub_train=sample(nrow(sz_data),n)#隨機抽取n個樣本
data_train=sz_data[sub_train,-1]#訓練集
data_test=sz_data[-sub_train,-1]#測試集
head(data_train);dim(data_train)
head(data_test);dim(data_test)
4??由于數據集的目標變量是離散變量,因此選擇method="class"。本例中的節點層次的最大值設為2,參數的優劣可根據后面計算的錯誤率反復驗證。
rp_fit1=rpart(is_rise~.,data_train,method="class",maxdepth=2,minsplit=10)#建立分類樹
summary(rp_fit1)
print(rp_fit1)#導出決策樹的表格
結果顯示根節點共有294個樣本,即全部訓練數據集。"2)"和"3)"以"Opening"變量為節點,將樣本分為兩支,分別是8、286個樣本。
5??繪制決策樹圖形。這里調整了參數,在圖形中做一些對比。
rp_fit2=rpart(is_rise~.,data_train,method="class",maxdepth=3,minsplit=10) #建立分類樹2
par(mfrow = c(1,2), xpd = NA)
plot(rp_fit1)
text(rp_fit1,use.n=TRUE)
plot(rp_fit2)
text(rp_fit2,use.n=TRUE)
6??驗證模型的準確性。
#對測試集預測目標變量
pre_is_rise=predict(rp_fit1,data_test,type="class")
pre_is_rise
#計算錯誤率
error_rp=sum(pre_is_rise!=data_test$is_rise)/nrow(data_test);error_rp
實際應用中,對參數、輸入變量等進行調整,可增加準確度。
歡慶雙節總結
以上是生活随笔為你收集整理的1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序傻瓜制作_盘点:微信小程序制作
- 下一篇: 电脑一复制粘贴就卡死_油门突然卡死,踩刹