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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

随机森林模型sklearn_sklearn之随机森林

發布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 随机森林模型sklearn_sklearn之随机森林 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

'''集合算法:

1.正向激勵

2.自助聚合:每次從總樣本矩陣中以有放回抽樣的方式隨機抽取部分樣本構建決策樹,這樣形成多棵包含不同訓練樣本的決策樹,

以削弱某些強勢樣本對模型預測結果的影響,提高模型的泛化特性。

3.隨機森林:在自助聚合的基礎上,每次構建決策樹模型時,不僅隨機選擇部分樣本,而且還隨機選擇部分特征,這樣的集合算法,

不僅規避了強勢樣本對預測結果的影響,而且也削弱了強勢特征的影響,使模型的預測能力更加泛化。(中庸-->真值)

隨機森林相關API:

import sklearn.ensemble as se

# 隨機森林回歸模型 (屬于集合算法的一種)

# max_depth:決策樹最大深度10

# n_estimators:構建1000棵決策樹,訓練模型

# min_samples_split: 子表中最小樣本數 若小于這個數字,則不再繼續向下拆分

model = se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=2)

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

1.讀取數據 bike_day.csv

2.整理輸入集和輸出集 劃分測試集與訓練集

3.選擇模型----隨機森林,訓練模型

4.使用測試集輸出r2得分

5.輸出特征重要性,并繪制圖像'''

importnumpy as npimportmatplotlib.pyplot as mpimportsklearn.metrics as smimport sklearn.ensemble as se #集合算法模塊

import sklearn.utils as su #打亂數據

'''=================================分析bike_day.csv==============================='''

#讀取數據方法1#data = []#with open('./ml_data/bike_day.csv','r') as f:#for line in f.readlines():#data.append(line[:-1].split(','))#print(data)#data = np.array(data)

#讀取數據方法2

data = np.loadtxt('./ml_data/bike_day.csv', unpack=False, dtype='U20', delimiter=',')print(data.shape)

day_headers= data[0, 2:13]print(day_headers)

x= np.array(data[1:, 2:13], dtype='f8')

y= np.array(data[1:, -1], dtype='f8')#劃分測試集和訓練集

x, y = su.shuffle(x, y, random_state=7) #打亂樣本

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:]#訓練模型

model = se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=3)

model.fit(train_x, train_y)#模型測試

pred_test_y =model.predict(test_x)#模型評估

print('bike_day的r2_score得分:', sm.r2_score(test_y, pred_test_y))#輸出模型特征重要性

day_fi =model.feature_importances_'''=================================分析bike_hour.csv==============================='''

#讀取數據

data =[]

with open('./ml_data/bike_hour.csv', 'r') as f:for line inf.readlines():

data.append(line[:-1].split(','))

data=np.array(data)

hour_headers= data[0, 2:14]print(hour_headers)

x= np.array(data[1:, 2:14], dtype='f8')

y= np.array(data[1:, -1], dtype='f8')#劃分測試集和訓練集

x, y = su.shuffle(x, y, random_state=7) #打亂樣本

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:]#訓練模型

model = se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=3)

model.fit(train_x, train_y)#模型測試

pred_test_y =model.predict(test_x)#模型評估

print('bike_hour的r2_score得分:', sm.r2_score(test_y, pred_test_y))#輸出模型特征重要性

hour_fi =model.feature_importances_#畫出bike_day的特征重要性圖像

mp.figure('Feature Importance', facecolor='lightgray')

mp.rcParams['font.sans-serif'] = 'SimHei'mp.subplot(211)

mp.title('Bike_day FI')

mp.ylabel('Feature Importance')

mp.grid(linestyle=":")

sorted_indexes= day_fi.argsort()[::-1] #下標排序,從大到小

x =np.arange(day_headers.size)

mp.bar(x, day_fi[sorted_indexes],0.7, color='dodgerblue', label='BDFI')

mp.xticks(x, day_headers[sorted_indexes])#設置x軸坐標

mp.tight_layout()

mp.legend()#畫出bike_hour的特征重要性圖像

mp.subplot(212)

mp.title('Bike_hour FI')

mp.ylabel('Feature Importance')

mp.grid(linestyle=":")

sorted_indexes= hour_fi.argsort()[::-1] #下標排序,從大到小

x =np.arange(hour_headers.size)

mp.bar(x, hour_fi[sorted_indexes],0.7, color='orangered', label='BHFI')

mp.xticks(x, hour_headers[sorted_indexes])#設置x軸坐標

mp.tight_layout()

mp.legend()

mp.show()

輸出結果:

(732, 16)

['season' 'yr' 'mnth' 'holiday' 'weekday' 'workingday' 'weathersit' 'temp'

'atemp' 'hum' 'windspeed']

bike_day的r2_score得分:0.8929064136199945['season' 'yr' 'mnth' 'hr' 'holiday' 'weekday' 'workingday' 'weathersit'

'temp' 'atemp' 'hum' 'windspeed']

bike_hour的r2_score得分:0.9185230199218621

總結

以上是生活随笔為你收集整理的随机森林模型sklearn_sklearn之随机森林的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。