目錄
1 概念
隨機森林:隨機森林是包含多個決策樹的分類器,並且其輸出類別是由個別樹輸出的類別的衆數而定
決策樹見案例:https://blog.csdn.net/qq_36327687/article/details/84944850
2 優點
01 適合離散型和連續型的屬性數據
02 對海量數據,儘量避免了過度擬合的問題
03 對高緯度的數據,不會出現特徵選擇困難的問題
04 實現簡單,訓練速度快,適合進行分佈式計算
3 理論方法
# 隨機森林生成方法:
rfcModel=RandomforestClassifier(
n_estimators=10,
max_leaf_nodes=None
)
n_estimators 森林中樹的個數,默認值爲10
max_leaf_nodes 統一設置樹中最大的葉子節點數
# 隨機森林訓練以及預測方法
rfcModel.fit(featureData,targetData)
featureData 特徵數據
targetData 目標數據
rfcModel.predict(featureData)
featureData 特徵數據
4、代碼完整案例
import pandas;
data = pandas.read_csv('D:\\DATA\\pycase\\number2\\5.3\\data.csv')
# 虛擬變量的轉換
dummyColumns = ["Gender", "ParentEncouragement"]
for column in dummyColumns:
data[column]=data[column].astype('category')
dummiesData = pandas.get_dummies(
data,
columns=dummyColumns,
prefix=dummyColumns,
prefix_sep="=",
drop_first=True
)
dummiesData.columns
# 挑選出重要特徵
fData = dummiesData[[
'ParentIncome', 'IQ', 'Gender=Male',
'ParentEncouragement=Not Encouraged'
]]
# 挑選結果屬性
tData = dummiesData["CollegePlans"]
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
# 決策樹的評分
dtModel = DecisionTreeClassifier()
dtScores = cross_val_score(
dtModel,
fData, tData, cv=10
)
dtScores.mean()
# 隨機森林哥的評分,在沒有參數調優的情況下,隨機森林好,參數:葉子結點
rfcModel = RandomForestClassifier()
rfcScores = cross_val_score(
rfcModel,
fData, tData, cv=10
)
rfcScores.mean()
# 決策樹,加入葉子節點進行調油
dtModel = DecisionTreeClassifier(max_leaf_nodes=8)
dtScores = cross_val_score(
dtModel,
fData, tData, cv=10
)
dtScores.mean()
# 隨機森林,加入葉子節點進行調油,結果和決策樹差不多,所以沒有最好,適合
rfcModel = RandomForestClassifier(max_leaf_nodes=8)
rfcScores = cross_val_score(
rfcModel,
fData, tData, cv=10
)
rfcScores.mean()