數(shù)據(jù)代碼分享|R語言用CHAID決策樹分析花卉栽培影響因素數(shù)據(jù)可視化、誤差分析
在植物學和農業(yè)科學領域,理解影響植物生長和花朵產生的因素對于提高生產效率和優(yōu)化栽培方法具有重要意義。因此,對于一個包含多個變量的數(shù)據(jù)集進行全面的分析和可視化是非常有幫助的。
本研究基于一個數(shù)據(jù)集,該數(shù)據(jù)集包含了花卉栽培過程中的多種變量,其中包括數(shù)值型變量(如花朵數(shù)量、白天條件和夜晚條件)以及分類變量(如肥料類型、品種和栽培制度)。我們使用R語言中的CHAID決策樹算法幫助客戶對這個數(shù)據(jù)集進行了分析,并通過可視化展現(xiàn)了影響種花的關鍵因素。
數(shù)據(jù)集中的變量解釋如下:
數(shù)值型變量:
Flowers(花朵):這是一個數(shù)值型變量,表示植物的花朵數(shù)量。每個樣本有一個具體的數(shù)字,用于描述植物生長期間產生的花朵數(shù)量。
Day(白天):這是一個數(shù)值型變量,表示植物在白天的相關信息。溫度,用于描述植物在白天的環(huán)境條件和生長狀態(tài)。
Night(夜晚):這是一個數(shù)值型變量,表示植物在夜晚的相關信息。夜間溫度,用于描述植物在夜晚的環(huán)境條件和生長狀態(tài)。
分類變量:
Fertilizer(肥料):這是一個分類變量,表示植物所接受的肥料類型,用于描述植物的養(yǎng)分供應情況。
Variety(品種):這是一個分類變量,表示植物的品種,用于描述不同品種植物的特征和性質。
Regimem(栽培制度):這是一個分類變量,表示植物的栽培方式或管理制度,用于描述植物的生長環(huán)境和栽培方法。
通過對這些變量的解釋和研究,我們可以探索花朵數(shù)量與其他變量(如白天、夜晚條件、肥料類型、品種和栽培制度)之間的關系,了解不同因素對植物生長和花朵產生的影響。同時,也可以比較不同品種、不同栽培制度和肥料類型下的花朵數(shù)量和生長表現(xiàn),以便在農業(yè)、園藝和植物繁殖等領域應用相關知識。
讀取數(shù)據(jù)
df2=read.xlsx("data.xlsx",sheet = 2) ? ?head(df2)
關聯(lián)分析
cor(df2)
CHAID決策樹
CHAID(Chi-square Automatic Interaction Detector)決策樹是一種用于創(chuàng)建分類模型的決策樹算法。它基于卡方檢驗來確定在給定的特征和目標變量之間是否存在顯著的關聯(lián)。
CHAID決策樹的構建過程是逐步進行的。它首先選擇一個作為根節(jié)點的特征,然后根據(jù)該特征的不同取值將數(shù)據(jù)集分割成多個子集。接下來,對每個子集重復上述過程,選擇一個最佳的特征繼續(xù)分割。這個過程一直持續(xù)到滿足停止準則為止,例如達到預定的樹深度或子集中的樣本數(shù)量不足。
在每次分割過程中,CHAID使用卡方檢驗來評估特征和目標變量之間的關聯(lián)程度。它將特征的不同取值作為自變量,目標變量的不同取值作為因變量,計算卡方值。如果卡方值超過了預定的顯著性水平,說明該特征與目標變量之間存在顯著的關聯(lián),可以選擇該特征作為分割點。
CHAID決策樹的優(yōu)點是能夠處理離散型和連續(xù)型的特征變量,并且可以處理多分類問題。它還可以自動選擇最佳的分割點,減少了人工選擇特征的主觀性。然而,CHAID決策樹在處理高維數(shù)據(jù)和處理缺失值方面存在一定的局限性。
#獲得訓練集 ?train <- sample(1:nrow(df2), nrow(df2)*0.8)
建立決策樹:Flowers
ct = deciionee(Flowers? ~ ., data = df2 )
通過決策樹模型可以得到以下的決策樹,從結果中可以看到day和night兩個變量是決策flowers類型的重要變量。
# 預測每一個樣本屬于每一個類別的概率 ?tr.pred = predict(ct, newda
第一個樣本屬于每個類別的概率如下表所示
## [[1]] ?##? [1] 0.153125000 0.109375000 0.083333333 0.044791667 0.018750000 ?##? [6] 0.018750000 0.007291667 0.002083333 0.001041667 0.003125000 ?## [11] 0.001041667 0.001041667 0.005208333 0.025000000 0.081250000 ?## [16] 0.141666667 0.162500000 0.140625000 ?##
第二個樣本屬于每個類別的概率如下表所示
## [[2]] ?##? [1] 0.153125000 0.109375000 0.083333333 0.044791667 0.018750000 ?##? [6] 0.018750000 0.007291667 0.002083333 0.001041667 0.003125000 ?## [11] 0.001041667 0.001041667 0.005208333 0.025000000 0.081250000 ?## [16] 0.141666667 0.162500000 0.140625000 ?##
第三個樣本屬于每個類別的概率如下表所示
## [[3]] ?##? [1] 0.153125000 0.109375000 0.083333333 0.044791667 0.018750000 ?##? [6] 0.018750000 0.007291667 0.002083333 0.001041667 0.003125000 ?## [11] 0.001041667 0.001041667 0.005208333 0.025000000 0.081250000 ?## [16] 0.141666667 0.162500000 0.140625000 ?##
得到訓練集混淆矩陣
tab=table(tree.pred,df2.test$Flowers)
混淆矩陣為預測flower類別和實際flower類別組成的矩陣,行為預測類別,列為實際類別。從結果可以看到實際預測類別和預測類別符合的個數(shù)和程度。
繪制實際類別和預測類別的散點圖
圖中橫線表示y=x的直線,橫軸為實際類別,縱軸為預測類別,圖中的點越接近橫線表示預測的效果越好。
求均方誤差
mean((as.numeric(tree.pred) - as.numeric(df2.test$Flowers))^2)## [1] 74.65885
將flower分成三組5-9,9-13,13-19
將"flower"數(shù)量分成三組進行分類,每組的范圍如下:
第一組:包括5到9(包括5和9)之間的flower; 第二組:包括9到13(包括9和13)之間的flower; 第三組:包括13到19(包括13和19)之間的flower。
# 建立CHAID決策樹=======================Flowersdf2$Flowers=as.numeric(df2$Flowers)index1=which(df2$Flowers<=5) index2=which(df2$Flowers<=9 & df2$Flowers>=5) index3=which(df2$Flowers>=9) df2$Flowers[index1]=1df2$Flowers[index2]=2df2$Flowers[index3]=3
CHAID決策樹
plot(ct
table(predict(ct), df2$Flowers)
預測類別概率Estimated class probabilities
tr.pred = predict(ct, newdata=df2.test, type="prob") ?tr.pred## [[1]] ?## [1] 2.5125
誤差
#rmse ?sqrt(mean((as.numeric(tree.pred) - as.numeric(df2.test$Flowers))^2))## [1] 0.4875514#nmse ? ??(sum( tree.pred - (df2.test$Flowers))^2)/(mean(tree.pred)*(mean((df2.test$Flowers))))/nrow(tree.pred)## [1] 0.002686602
最受歡迎的見解
1.PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯模型和KMEANS聚類用戶畫像
2.R語言基于樹的方法:決策樹,隨機森林
3.python中使用scikit-learn和pandas決策樹
4.機器學習:在SAS中運行隨機森林數(shù)據(jù)分析報告
5.R語言用隨機森林和文本挖掘提高航空公司客戶滿意度
6.機器學習助推快時尚精準銷售時間序列
7.用機器學習識別不斷變化的股市狀況——隱馬爾可夫模型的應用
8.python機器學習:推薦系統(tǒng)實現(xiàn)(以矩陣分解來協(xié)同過濾)
9.python中用pytorch機器學習分類預測銀行客戶流失