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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

【火炉炼AI】机器学习007-用随机森林构建共享单车需求预测模型

發(fā)布時(shí)間:2025/4/5 ChatGpt 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【火炉炼AI】机器学习007-用随机森林构建共享单车需求预测模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【火爐煉AI】機(jī)器學(xué)習(xí)007-用隨機(jī)森林構(gòu)建共享單車需求預(yù)測模型

(本文所使用的Python庫和版本號: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

共享單車是最近幾年才發(fā)展起來的一種便民交通工具,基本上是我等屌絲上班,下班,相親,泡妞必備神器。本項(xiàng)目擬使用隨機(jī)森林回歸器構(gòu)建共享單車需求預(yù)測模型,從而查看各種不同的條件下,共享單車的需求量。


1. 準(zhǔn)備數(shù)據(jù)集

本次使用的數(shù)據(jù)集來源于加利福尼亞大學(xué)歐文分校(UCI)大學(xué)的公開數(shù)據(jù)集:https://archive.ics.uci.edu/ml/datasets/Bike+Sharing+Dataset,關(guān)于本次數(shù)據(jù)集的各種信息可以參考該網(wǎng)站,同時(shí)也可以直接從該網(wǎng)站下載和使用數(shù)據(jù)集。本次共享單車數(shù)據(jù)集包含有兩個(gè)文件,一個(gè)是按天來統(tǒng)計(jì)的共享單車使用量數(shù)據(jù),另一個(gè)是按照小時(shí)數(shù)來統(tǒng)計(jì)的使用量。

說句題外話,這個(gè)共享單車數(shù)據(jù)集是在2011年至2012年間收集的,此處的共享單車是采用固定樁形式的單車,類似于中國的永安行,并不是我們目前所看到的滿大街的小黃車,小藍(lán)車,摩拜之類。

下載后,將數(shù)據(jù)集解壓到D:\PyProjects\DataSet\SharingBikes中。本數(shù)據(jù)集總共有17389個(gè)樣本,每個(gè)樣本有16列,其中,前兩列是樣本序號和日期,可以不用考慮,最后三列數(shù)據(jù)是不同類型的輸出結(jié)果,最后一列是第十四列和第十五列的和,因此本模型中不考慮第十四列和第十五列。

本數(shù)據(jù)集16列對應(yīng)的信息分別為:

如下為分析數(shù)據(jù)集的主要代碼,此處我沒有深入研究數(shù)據(jù)集各個(gè)特征列之間的關(guān)系。

# 首先分析數(shù)據(jù)集 dataset_path='D:\PyProjects\DataSet\SharingBikes/day.csv' # 首先只分析day 數(shù)據(jù) # 首先加載數(shù)據(jù)集 raw_df=pd.read_csv(dataset_path,index_col=0) # print(raw_df.shape) # (731, 15) # print(raw_df.head()) # 查看是否正確加載 # print(raw_df.columns) # 刪除不需要的列,第1列,第12,13列 df=raw_df.drop(['dteday','casual','registered'],axis=1) # print(df.shape) # (731, 12) # print(df.head()) # 查看沒有問題 print(df.info()) # 沒有缺失值 第一列為object,需要進(jìn)行轉(zhuǎn)換 # print(df.columns)# 分隔數(shù)據(jù)集 dataset=df.as_matrix() # 將pandas轉(zhuǎn)為np.ndarray# 將整個(gè)數(shù)據(jù)集分隔成train set和test set from sklearn.model_selection import train_test_split train_set,test_set=train_test_split(dataset,test_size=0.1,random_state=37) # print(train_set.shape) # (657, 12) # print(test_set.shape) # (74, 12) # print(dataset[:3]) 復(fù)制代碼

-------------------------------------輸---------出--------------------------------

<class 'pandas.core.frame.DataFrame'> Int64Index: 731 entries, 1 to 731 Data columns (total 12 columns): season 731 non-null int64 yr 731 non-null int64 mnth 731 non-null int64 holiday 731 non-null int64 weekday 731 non-null int64 workingday 731 non-null int64 weathersit 731 non-null int64 temp 731 non-null float64 atemp 731 non-null float64 hum 731 non-null float64 windspeed 731 non-null float64 cnt 731 non-null int64 dtypes: float64(4), int64(8) memory usage: 74.2 KB None

--------------------------------------------完-------------------------------------

########################小**********結(jié)###############################

1,從打印的結(jié)果可以看出,這個(gè)數(shù)據(jù)集中沒有缺失值,且每一列的數(shù)據(jù)特征都是一致的,故而不需要再額外做這些處理。

2,數(shù)據(jù)集中season, yr等有7列是int64類型,代表這些數(shù)據(jù)需要重新轉(zhuǎn)換為獨(dú)熱編碼格式,比如對于season中,1=春,2=夏,3=秋,4=冬,需要改成獨(dú)熱編碼形成的稀疏矩陣。

#################################################################


2. 構(gòu)建隨機(jī)森林回歸模型

在第一次嘗試時(shí),我沒有對原始數(shù)據(jù)進(jìn)行任何的特征分析,也沒有對數(shù)據(jù)集進(jìn)行修改,直接使用隨機(jī)森林回歸模型進(jìn)行擬合,看看結(jié)果怎么樣。

# 其次,構(gòu)建隨機(jī)森林回歸器模型 from sklearn.ensemble import RandomForestRegressor rf_regressor=RandomForestRegressor() # rf_regressor=RandomForestRegressor(n_estimators=1000,max_depth=10,min_samples_split=0.5)rf_regressor.fit(train_set[:,:-1],train_set[:,-1]) # 訓(xùn)練模型# 使用測試集來評價(jià)該回歸模型 predict_test_y=rf_regressor.predict(test_set[:,:-1])import sklearn.metrics as metrics print('隨機(jī)森林回歸模型的評測結(jié)果----->>>') print('均方誤差MSE:{}'.format(round(metrics.mean_squared_error(predict_test_y,test_set[:,-1]),2))) print('解釋方差分:{}'.format(round(metrics.explained_variance_score(predict_test_y,test_set[:,-1]),2))) print('R平方得分:{}'.format(round(metrics.r2_score(predict_test_y,test_set[:,-1]),2))) 復(fù)制代碼

-------------------------------------輸---------出--------------------------------

隨機(jī)森林回歸模型的評測結(jié)果----->>> 均方誤差MSE:291769.31 解釋方差分:0.92 R平方得分:0.92

--------------------------------------------完-------------------------------------

然后采用(【火爐煉AI】機(jī)器學(xué)習(xí)006-用決策樹回歸器構(gòu)建房價(jià)評估模型)的方式繪制相對重要性直方圖,結(jié)果如下:

########################小**********結(jié)###############################

1,在沒有對數(shù)據(jù)集進(jìn)行任何處理的情況下,采用默認(rèn)的隨機(jī)森林回歸器得到的模型在測試集上的MSE非常大,解釋方差分和R2都是0.93,表明模擬的還可以。

2,從相對重要性圖中可以看出,溫度對共享單車的使用影響最大,這個(gè)可以理解,比如冬天太冷,夏天太熱時(shí),騎小黃車的人就顯著減少。但圖中顯示年份(yr)是第二個(gè)重要因素,這個(gè)估計(jì)是因?yàn)槟攴葜挥?011和2012兩年所致,要想得到更加可信的結(jié)果,還需要更多年份的數(shù)據(jù)。

#################################################################


注:本部分代碼已經(jīng)全部上傳到(我的github)上,歡迎下載。

參考資料:

1, Python機(jī)器學(xué)習(xí)經(jīng)典實(shí)例,Prateek Joshi著,陶俊杰,陳小莉譯

總結(jié)

以上是生活随笔為你收集整理的【火炉炼AI】机器学习007-用随机森林构建共享单车需求预测模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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