導航:首頁 > 源碼編譯 > 紅酒質量集成演算法實例

紅酒質量集成演算法實例

發布時間:2025-08-16 06:07:16

① 機器學習之隨機森林分類篇(RandomForestClassifier)

一.隨機森林簡介

集成學習(ensemblelearning)是時下非常流行的機器學習演算法,它本身不是一個單獨的機器學習演算法,而是通過在數據上構建多個模型,集成所有模型的建模結果。集成演算法會考慮多個評估器的建模結果,匯總之後得到一個綜合的結果,以此來獲取比單個模型更好的回歸或分類表現。

多個模型集成成為的模型叫做集成評估器(ensembleestimator),組成集成評估器的每個模型都叫做基評估器(baseestimator)。

通常來說,有三類集成演算法:裝袋法(Bagging),提升法(Boosting)和stacking。

裝袋法的核心思想是構建多個相互獨立的評估器,然後對其預測進行平均或多數表決原則來決定集成評估器的結果。裝袋法的代表模型就是隨機森林。提升法中,基評估器是相關的,是按順序一一構建的。其核心思想是結合弱評估器的力量一次次對難以評估的樣本進行預測,從而構成一個強評估器。提升法的代表模型有Adaboost和梯度提升樹。

二.重要參數2.1n_estimators

基評估器的數量。這個參數對隨機森林模型的精確性影響是單調的,n_estimators越大,模型的效果往往越好。但是任何模型都有決策邊界,n_estimators達到一定的程度之後,隨機森林的精確性往往不在上升或開始波動,而且n_estimators越大,需要的計算量和內存也越大,訓練的時間也會越來越長。對於這個參數,應在訓練難度和模型效果之間取得平衡

2....datasetsimportload_wine#內置紅酒數據集wine=load_wine()wine.datawine.target#同時使用隨機森林和決策樹進行結果比較fromsklearn.model_selectionimporttrain_test_splitx_train,x_test,y_train,y_test=train_test_split(wine.data,wine.target,test_size=0.3)clf=DecisionTreeClassifier(random_state=200)rfc=RandomForestClassifier(random_state=200)clf=clf.fit(x_train,y_train)rfc=rfc.fit(x_train,y_train)score_c=clf.score(x_test,y_test)score_r=rfc.score(x_test,y_test)print('TreeScore:{}'.format(score_c),' ''RandomForestScore:{}'.format(score_r))

隨機森林結果高於決策樹結果

2.3再次使用交叉驗證進行比較(cross_val_score)fromsklearn.model_selectionimportcross_val_scoreimportmatplotlib.pyplotaspltrfc=RandomForestClassifier(n_estimators=30)rfc_s=cross_val_score(rfc,wine.data,wine.target,cv=10)clf=DecisionTreeClassifier()clf_s=cross_val_score(clf,wine.data,wine.target,cv=10)plt.figure(figsize=(10,5))plt.plot(range(1,11),rfc_s,label='RandomForest')plt.plot(range(1,11),clf_s,label='DecisionTree')plt.title('RandomForestVSDecisionTree')plt.legend()plt.show()

10次交叉驗證下,雖然決策樹的結果有時和隨機森林相同,但是大總體上,隨機森林結果顯著優於決策樹。

三.袋裝法

當random_state固定時,隨機森林中生成是一組固定的樹,但每棵樹依然是不一致的,消除了每次結果的隨機性。並且我們可以證明,當這種隨機性越大的時候,袋裝法的效果一般會越來越好。用袋裝法集成時,基分類器應當是相互獨立的,是不相同的。但這種做法的局限性是很強的,當我們需要成千上萬棵樹的時候,數據不一定能夠提供成千上萬的特徵來讓我們建盡量多盡量不同的樹。因此,除了random_state。我們還需要其他的隨機性。

3.1bootstrap&oob_score

要讓基分類器盡量都不一樣,則使用不同的訓練集來進行訓練,而袋裝法通過有放回的隨機抽樣技術來形成不同的訓練數據,bootstrap就是用來控制抽樣技術的參數。在一個含有n個樣本的原始訓練集中,我們進行隨機采樣,每次采樣一個樣本,並在抽取下一個樣本之前將該樣本放回原始訓練集,也就是說下次采樣時這個樣本依然可能被採集到,這樣採集n次,最終得到一個和原始訓練集一樣大的n個樣本組成的自助集。

由於是隨機采樣,這樣每次的自助集和原始數據集不同,和其他的采樣集也是不同的。

這樣就有取之不盡用之不竭,並且互不相同的自助集,用這些自助集來訓練我們的基分類器,我們的基分類器自然也就各不相同了。這樣就會有一部分訓練數據被浪費掉,這些數據被稱為袋外數據(outofbagdata,簡寫oob),除了最開始就劃分好的測試集之外,這些數據被用來作為集成演算法的測試集。

也就是說,在使用隨機森林時,我們可以不劃分測試集和訓練集,只需要用袋外數據來測試模型即可。當然,這也不是絕對的,當n和n_estimators都不夠大的時候,很可能就沒有數據掉落在袋外,自然也就無法使用oob數據來測試模型了。

如果希望用袋外數據來測試,則需要在實例化時就將oob_score這個參數調整為True,訓練完畢之後,我們可以用隨機森林的另一個重要屬性:oob_score_來查看我們的在袋外數據上測試的結果:

rfc=RandomForestClassifier(n_estimators=30,oob_score=True)rfc=rfc.fit(wine.data,wine.target)rfc.oob_score_四.重要屬性和介面

隨機森林的介面與決策樹完全一致,因此依然有四個常用介面:apply,fit,predict和score。

除此之外,還需要注意隨機森林的predict_proba介面,這個介面返回每個測試樣本對應的被分到每一類標簽的概率,標簽有幾個分類就返回幾個概率。

如果是二分類問題,則predict_proba返回的數值大於0.5的,被分為1,小於0.5的,被分為0。

傳統的隨機森林是利用袋裝法中的規則,平均或少數服從多數來決定集成的結果,而sklearn中的隨機森林是平均每個樣本對應的predict_proba返回的概率,得到一個平均概率,從而決定測試樣本的分類。

rfc=RandomForestClassifier(n_estimators=25)rfc=rfc.fit(x_train,y_train)#預測結果和標簽相比的正確率print('RandomForestScore:{}'.format(rfc.score(x_test,y_test)))print('-'*100)#特徵重要性print('特徵重要性:{}'.format([*zip(wine.feature_names,rfc.feature_importances_)]))print('-'*100)#每個樣本在每棵樹中葉子節點的索引print('每個樣本在每棵樹中葉子節點的索引:{}'.format(rfc.apply(x_test)[:2]))print('-'*100)#測試集預測的標簽print('測試集預測的標簽:{}'.format(rfc.predict(x_test)))print('-'*100)#每個樣本被分到每個標簽的概率print('每個樣本被分到每個標簽的概率:{}'.format(rfc.predict_proba(x_test)[:5]))

**在使用隨機森林之前,一定要檢查,用來組成隨機森林的分類樹們是否都有至少50%的預測正確率。

作者:在路上lx著作權歸作者所有。

鏈接:https://juejin.cn/post/6996567823619194910

② 什麼是區塊鏈服務

區塊鏈服務是一種基於區塊鏈技術的解決方案,它提供了構建和運行區塊鏈應用所需的基礎設施和工具。以下是關於區塊鏈服務的詳細解釋:

一、核心組成

  • 華為雲區塊鏈引擎:基於業界成熟的區塊鏈技術框架,結合華為在硬體、網路、安全等方面的優勢,提供了高性能、高規模的區塊鏈解決方案。特別適用於政務、金融級、企業級等需要高吞吐量和大型網路場景的客戶。

  • Hyperledger Fabric 增強版:在開源區塊鏈Hyperledger框架基礎上進行了加固和優化,完全兼容社區,為POC測試、技術可行性驗證提供了友好的選擇。

二、主要特點

  • 高效可靠:支持高交易性能(如每秒5萬條商品信息同時上鏈)和大規模的聯盟節點網路。同時,節點支持冷存儲能力,節約存儲資源,並提供高效的智能合約執行力。

  • 安全可信:提供全棧安全可信解決方案,包括輕節點的隱私隔離、BFT演算法、國密加密演算法等。在共識演算法、同態加密、零知識證明等方面具有自主知識產權的專利和技術積累。

  • 雲鏈結合、易用:提供各種區塊鏈需要的無限可擴展的基礎設施資源和豐富多樣的配套雲計算產品。支持一鍵創建區塊鏈計算、存儲、網路資源,並提供可視化智能合約管理等功能。

  • 合作開放:基於業界成熟社區構建增強能力,支持友好接入。與各行業夥伴攜手合作,共同打造基於華為區塊鏈服務的可信區塊鏈解決方案和生態。

三、應用場景

  • 紅酒領域:支持紅酒產品信息並發上鏈,對紅酒的生產、轉運、檢測、清關等數據進行全生命周期跨境溯源,確保貨源的真實性。

  • 數字版權領域:幫助數字內容創作者在作品產生的源頭就可以存證確權,實現作品生產後第一時間進行版權保護,後續還可以實現作品的在線授權和維權。

  • 智能建設領域:構建智能可信的工程簽證管理平台,集成項目建設全過程各項信息,協助各建設參與方做好成本、進度、質量、安全等方面的管控。

綜上所述,區塊鏈服務是一種集成了高性能、高可靠性、安全性和易用性的綜合解決方案,旨在幫助企業快速高效、低成本地搭建企業級的區塊鏈行業方案和應用。

閱讀全文

與紅酒質量集成演算法實例相關的資料

熱點內容
重復使用剛執行的命令用鍵 瀏覽:617
解壓後的圖片怎麼在圖庫顯示 瀏覽:607
pdf轉換成jpg下載 瀏覽:632
熊貓辦公app怎麼下載 瀏覽:880
jpg如何合成pdf 瀏覽:831
阜陽前端程序員私活需要什麼技術 瀏覽:956
pdf雙頁列印 瀏覽:286
不用編譯器可否進行python 瀏覽:433
51單片機led閃爍 瀏覽:349
python程序員會猝死嗎 瀏覽:584
抖音安卓手機如何同步到車載 瀏覽:717
通快數沖編程 瀏覽:210
一汽大眾app速騰怎麼用 瀏覽:986
單片機pwm波控制步進電機 瀏覽:185
怎麼將安卓項目發布在應用商店 瀏覽:530
深入java虛擬機第二版 瀏覽:139
編譯二進制的原理 瀏覽:395
三點乘積演算法 瀏覽:369
成都太平洋保險app上怎麼買商業險 瀏覽:311
粒子群演算法英文文獻 瀏覽:392