日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python+sklearn实现随机森林模型

發(fā)布時間:2023/12/9 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python+sklearn实现随机森林模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
自助聚合

每次從總樣本矩陣中以有放回抽樣的方式,隨機抽取部分樣本構(gòu)建決策樹, 這樣形成多顆包含不同訓(xùn)練本的決策樹. 以削弱某些強勢樣本對模型預(yù)測結(jié)果的影響. 提高模型的泛化特性.

隨機森林

在自助聚合的基礎(chǔ)上, 每次構(gòu)建決策樹模型時, 不僅隨機選擇部分樣本, 而且還隨機選擇部分特征(樹的高度不同), 這樣的集合算法, 不僅規(guī)避了強勢樣本對預(yù)測結(jié)果的影響, 而且也削弱了強勢特征的影響, 是模型的預(yù)測能力更加泛化.

隨機森林相關(guān)API:

import sklearn.ensemble as se # 構(gòu)建隨機森林回歸器模型 model = se.RandomForestRegressor(max_depth=4, # 最大深度n_estimators=1000, # 構(gòu)建1000棵決策樹# 子表中最小樣本數(shù) 若<=這個數(shù)字則不再繼續(xù)劃分min_samples_slit=2 )

案例: 分析共享單車的需求, 從而判斷如何投放.

""" demo02_bike.py 共享單車案例 隨機森林 """ import numpy as np import sklearn.utils as su import sklearn.ensemble as se import sklearn.metrics as sm import matplotlib.pyplot as mpdata = np.loadtxt('../ml_data/bike_day.csv', delimiter=',', unpack=False, dtype='U20') # 獲取輸入集與輸出集 header = data[0, 2:13] x = np.array(data[1:, 2:13], dtype=float) y = np.array(data[1:, -1], dtype=float) # 打亂數(shù)據(jù)集 x, y = su.shuffle(x, y, random_state=7) # 拆分訓(xùn)練集,測試集 train_size = int(len(x)*0.9) train_x, test_x, train_y, test_y = \x[:train_size], x[train_size:], \y[:train_size], y[train_size:] # 隨機森林模型訓(xùn)練 model=se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=2) model.fit(train_x, train_y) pred_test_y = model.predict(test_x) # 使用r2得分驗證預(yù)測結(jié)果 print(sm.r2_score(test_y, pred_test_y)) # 輸出特征重要性 fi_day = model.feature_importances_ print(fi_day) print(header)# 繪制特征重要性柱狀圖 mp.figure('Bike', facecolor='lightgray') mp.subplot(211) mp.title('Day', fontsize=16) mp.ylabel('Importances', fontsize=12) mp.tick_params(labelsize=8) mp.grid(linestyle=':') pos = np.arange(fi_day.size) sorted_i = fi_day.argsort()[::-1] mp.xticks(pos, header[sorted_i]) mp.bar(pos, fi_day[sorted_i], color='dodgerblue', label='Bike_Day') mp.legend()data = np.loadtxt('../ml_data/bike_hour.csv', delimiter=',', unpack=False, dtype='U20') # 獲取輸入集與輸出集 header = data[0, 2:14] x = np.array(data[1:, 2:14], dtype=float) y = np.array(data[1:, -1], dtype=float) # 打亂數(shù)據(jù)集 x, y = su.shuffle(x, y, random_state=7) # 拆分訓(xùn)練集,測試集 train_size = int(len(x)*0.9) train_x, test_x, train_y, test_y = \x[:train_size], x[train_size:], \y[:train_size], y[train_size:] # 隨機森林模型訓(xùn)練 model=se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=2) model.fit(train_x, train_y) pred_test_y = model.predict(test_x) # 使用r2得分驗證預(yù)測結(jié)果 print(sm.r2_score(test_y, pred_test_y)) # 輸出特征重要性 fi_hour = model.feature_importances_ print(fi_hour) print(header)mp.subplot(212) mp.title('Hour', fontsize=16) mp.ylabel('Importances', fontsize=12) mp.tick_params(labelsize=8) mp.grid(linestyle=':') pos = np.arange(fi_hour.size) sorted_i = fi_hour.argsort()[::-1] mp.xticks(pos, header[sorted_i]) mp.bar(pos, fi_hour[sorted_i], color='orangered', label='Bike Hour') mp.legend() mp.show() 0.8926334392300549 [0.06638183 0.28997887 0.02826374 0.00304802 0.01460011 0.004116910.01753458 0.33964001 0.14297167 0.06249903 0.03096522] ['season' 'yr' 'mnth' 'holiday' 'weekday' 'workingday' 'weathersit' 'temp''atemp' 'hum' 'windspeed'] 0.9186105067675527 [0.02229112 0.08663297 0.00830193 0.64513701 0.00145209 0.007057560.06023155 0.01646287 0.12005369 0.01383168 0.01587423 0.0026733 ] ['season' 'yr' 'mnth' 'hr' 'holiday' 'weekday' 'workingday' 'weathersit''temp' 'atemp' 'hum' 'windspeed']

總結(jié)

以上是生活随笔為你收集整理的python+sklearn实现随机森林模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。