隨機森林演算法python實現

2021-09-23 15:44:00 字數 3557 閱讀 6970

樣本資料

1.實現根據樣本資料(用眼距離distance、最長持續用眼時長duration、總用眼時長total_time、戶外運動時長outdoor、用眼角度angle、健康環境光照用眼比例proportion)判別是否需要近視預警

2.樣本實在太少,結果還行,原理都是一樣的

import pandas

patients = pandas.read_csv(

"data.csv"

)patients.head(

5)

from sklearn.model_selection import train_test_split

patients_data=patients.loc[:,

'distance'

:'proportion'

]patients_target=patients.loc[:,

'warning'

]data_train,data_test,target_train,target_test=train_test_split(patients_data,patients_target,test_size=

0.1,random_state=

42)

import numpy as np

from sklearn.feature_selection import selectkbest, f_classif

import matplotlib.pyplot as plt

predictors =

["distance"

,"duration"

,"total_time"

,"outdoor"

,"angle"

,"proportion"

]selector = selectkbest(f_classif, k=5)

selector.fit(data_train, target_train)

scores =

-np.log10(selector.pvalues_)

plt.bar(

range

(len

(predictors)

), scores)

plt.xticks(

range

(len

(predictors)

), predictors, rotation=

'vertical'

)plt.show(

)

predictors_best =

["distance"

,"total_time"

,"angle"

,"proportion"

]data_train = data_train[predictors_best]

data_test = data_test[predictors_best]

from sklearn.model_selection import gridsearchcv

tree_param_grid =

grid = gridsearchcv(randomforestclassifier(

),param_grid=tree_param_grid, cv=kf)

#(演算法,調節引數(用字典形式),交叉驗證次數)

grid.fit(data_train, target_train)

#訓練集

grid.cv_results_ , grid.best_params_, grid.best_score_#得分,最優引數,最優得分

from sklearn import model_selection

from sklearn.ensemble import randomforestclassifier

rf = randomforestclassifier(random_state=

1, n_estimators=

35, min_samples_split=

2, min_samples_leaf=2)

#交叉驗證

kf = model_selection.kfold(n_splits=3)

scores = model_selection.cross_val_score(rf, data_train, target_train, cv=kf)

print

(scores.mean(

))

sample

distance

duration

total_time

outdoor

angle

proportion

warning(1 yes 0 no)120

72344

14811811

23468263

1357501

32598357

3212641

43765291

1578890

534151162

16918631

630178259

14632501

72035134

3723680

839111169874

520922

44265

13614761

1039

151219

1402550

1121

179184

6418601

1225

41241

7116721

1318

171286

13135891

1432

33236

10229501

1520

133226

12417811

1617

148236

6632751

1734

111214575

8801824

85163

15514321

1932

165276

14633521

2025

124359

17133700

2131

51167

4725470

2231

63352

5822441

2316

58164

4513730

2429

37326

10433681

2534

47197595

6602636

123185

16526700

2725

126171

4523331

2831

8498

3730511

2930

92153

11414480

3029

178278

14627451

python實現簡單隨機森林

自助聚合 隨機從n個樣本中抽取m個樣本,構建一棵決策樹,重複此過程,共形成b棵樹,構成每棵樹的樣本不同且隨機,以此來削弱少數強勢樣本對模型 結果的影響。sklearn.datasets 標準資料集 sklearn.utils 輔助工具 sklearn.tree 決策樹 單個 model st.dec...

隨機森林演算法

random forest是加州大學伯克利分校的breiman leo和adele cutler於2001年發表的 中提到的新的機器學習演算法,可以用來做分類,聚類,回歸,和生存分析,這裡只簡單介紹該演算法在分類上的應用。random forest 隨機森林 演算法是通過訓練多個決策樹,生成模型,然...

隨機森林演算法原理 機器學習演算法 隨機森林

隨機森林是一種通用的機器學習方法,能夠處理回歸和分類問題。它還負責資料降維 缺失值處理 離群值處理以及資料分析的其他步驟。它是一種整合學習方法,將一組一般的模型組合成乙個強大的模型 我們通過適用隨機的方式從資料中抽取樣本和特徵值,訓練多個不同的決策樹,形成森林。為了根據屬性對新物件進行分類,每個數都...