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