機器學習——隨機森林算法分類問題案例解析(sklearn)

1. 集成學習:三個臭皮匠,如何賽過諸葛亮?

我們之前學習的線性回歸、決策樹等算法,就像是團隊里的某一位“專家”。這位專家可能在某個領域很擅長,但單憑他一人,要解決復雜多變的問題,總會遇到瓶頸。就好比,一位再厲害的“諸葛亮”,也難免有失算的時候。

那怎么辦呢?古人云:“三個臭皮匠,賽過諸葛亮”。**集成學習(Ensemble Learning)**的核心思想正是如此:它不依賴于某一個“超級天才”(強學習器),而是將一群“普通人”(弱學習器)的智慧匯集起來,形成一個決策能力超強的“專家團”(強學習器)。

一個弱學習器,通常指那些性能僅比隨機猜測好一點點的模型。而一個成功的“專家團”需要滿足兩個關鍵條件:

  1. 個體優秀 (Good):團隊里的每個成員(弱學習器)都得有兩把刷子,至少得具備一定的判斷能力(比如,分類準確率要大于50%)。
  2. 彼此差異 (Different):如果團隊成員的想法和知識背景一模一樣,那和一個人決策沒區別。成員之間必須有差異性、能互補短長,這樣集成的效果才會最好。

為了組建這樣的“專家團”,我們主要有兩種策略,可以從兩個維度來理解:

維度一:團隊成員的構成方式 (同質 vs. 異質)

  • 異質集成 (Heterogeneous Ensemble):這就像組建一個“跨學科團隊”。團隊里有搞數學的(線性回歸)、搞分類的(決策樹)、搞空間分析的(K近鄰)等等。我們讓每個不同類型的模型都對問題進行預測,然后給那些歷史表現更好的“專家”更高的發言權(權重),最后綜合所有人的加權意見,得出最終結論。
  • 同質集成 (Homogeneous Ensemble):這就像組建一個“專科攻堅小組”,所有成員都是同一類型,比如全是決策樹專家。為了避免大家想法一致,我們會給每個專家分發略有不同的“資料包”(攪動數據)。通過這種方式,即使模型類型相同,他們學到的側重點也各不相同,從而保證了差異性。

維度二:團隊的工作模式 (并行 vs. 串行)

  • 并行集成 (Parallel Ensemble):大家“同時開工,獨立思考”。就像一場開卷考試,我們給每個學生(弱學習器)發一份略有不同的復習資料(通過自助采樣得到的數據子集),讓他們獨立完成整套試卷。最后,我們統計所有學生的答案,通過“民主投票”來決定最終答案。這種方式互不干擾,非常適合大規模并行計算。

    • 代表算法裝袋法 (Bagging)?和?隨機森林 (Random Forest)
  • 串行集成 (Serial Ensemble):大家“接力工作,查漏補缺”。第一位同學(弱學習器)先做一遍題,然后把做錯的題目標記出來。第二位同學拿到后,就重點攻克上一位同學搞錯的難題。以此類推,每一位新成員都致力于解決前面所有成員留下的“歷史遺留問題”。這樣層層遞進,模型的能力越來越強。

    • 代表算法提升法 (Boosting),如 AdaBoost, GBDT, XGBoost 等。
分類維度類型核心思想工作模式代表算法比喻
按構成異質集成不同類型的模型組合各自預測,加權表決Stacking跨學科專家會診
同質集成同一類型的模型組合通過數據擾動創造差異Bagging, Boosting決策樹專家小組
按生成并行集成獨立、互不依賴同時訓練,投票/平均Bagging, 隨機森林學生獨立完成考試
串行集成依賴、層層遞進迭代訓練,彌補前序錯誤Boosting (AdaBoost, GBDT)師徒接力解決難題

2. 隨機森林分類任務:民主投票的決策專家團

隨機森林是同質并行集成的杰出代表。顧名思義,“森林”由大量的“樹”(決策樹)組成。下面我們來看看這個“專家團”是如何工作的。

工作流程:

  1. 建造森林:有控制的“隨機”

    • 樣本隨機 (Bootstrap Sampling):假設我們有1000個原始樣本。為了訓練第一棵樹,我們從這1000個樣本中有放回地隨機抽取1000次,形成一個訓練集。因為是有放回的,所以這個新的訓練集中,有些樣本可能出現多次,有些則一次都未出現。這個過程就像是為每個專家準備一份獨特的“復習資料”。
    • 特征隨機 (Feature Sampling):在決策樹的每個節點進行分裂時,我們不是從全部 P 個特征中尋找最優分裂點,而是隨機抽取 m 個特征(m < P),再從這 m 個中選出最好的。這確保了每棵樹都不會過分依賴某幾個強特征,增加了樹之間的“視角”差異。
      • 經驗法則:對于分類任務,通常取?m ≈ √p;對于回歸任務,取?m ≈ p/3
      • 與裝袋法(Bagging)的關系:如果設置?m = p,即每次都考慮所有特征,那隨機森林就退化成了裝袋法。所以說,隨機森林是裝袋法的一種“進階版”,它通過增加特征隨機性來進一步提升模型的多樣性。
  2. 獨立訓練:并行工作的專家
    每棵決策樹都使用自己獨特的樣本集和特征子集進行獨立訓練,互不干擾。

  3. 集中決策:少數服從多數
    當一個新的樣本需要預測時,森林里的每一棵樹都獨立地給出一個自己的分類判斷。最后,隨機森林采用“多數投票 (Majority Voting)”原則,得票最多的那個類別就是最終的預測結果。

優點與缺點:

  • 優點
    • 高準確率與抗過擬合:通過平均/投票多棵樹的結果,個別樹的錯誤會被其他樹糾正,使得整體模型非常穩健,不易過擬含。
    • 處理高維數據:即使有數千個特征,隨機森林也能表現良好,并且能幫我們評估哪些特征更重要。
    • 易于并行化:各棵樹的訓練可以分散到多個CPU核心或機器上,效率很高。
  • 缺點
    • 可解釋性較差:相對于單棵決策樹,由成百上千棵樹組成的“黑箱”模型,我們很難直觀地理解其內部的決策邏輯。(這催生了下面要講的解釋性工具!
    • 計算成本:對于大數據集,訓練大量的樹會消耗較多的時間和內存。

3. 誰是MVP?解密隨機森林的特征重要性

隨機森林是一個“黑箱”,但我們依然有辦法窺探其內部,比如,搞清楚“在所有決策中,哪個特征的貢獻最大?” 這就像評選一支球隊的“最有價值球員 (MVP)”。

核心思想:一個特征越重要,意味著它在分裂決策樹節點時,起到的“讓數據變純粹”的作用越大。

計算方法

  1. 單棵樹的貢獻:在一棵決策樹中,每當一個特征被用來分裂節點時,我們會計算這次分裂帶來的“不純度下降量”(例如,基尼指數下降或信息增益提升)。把這個特征在這棵樹里所有分裂點的貢獻加起來,就是它在這棵樹里的重要性得分。
  2. 整個森林的總評:將該特征在森林中所有樹上的重要性得分進行平均,就得到了它在整個隨機森林中的最終重要性排名。

一句話總結:一個特征的重要性,就是它在所有樹中、所有分裂決策里,平均貢獻度的總和。貢獻越大,排名越靠前,它就是我們模型眼中的“MVP”。


4. 不止看“誰”重要,更要看“如何”重要:模型的可解釋性利器

特征重要性告訴我們“哪些”特征是MVP,但沒有告訴我們這個MVP“如何”影響比賽結果的(例如,是得分能力強還是防守能力強?)。部分依賴圖 (PDP)?和?個體條件期望圖 (ICE)?就是為了回答“如何影響”這個問題的強大工具。

1. 部分依賴圖 (Partial Dependence Plot, PDP):看清“平均趨勢”

  • 解決的問題:它展示了當其他所有特征保持不變時,某一個特征值的變化,對模型平均預測結果的影響。
  • 比喻:就像研究“咖啡因攝入量”對“所有學生平均專注度”的影響。我們想知道,是咖啡因越多越好,還是適量最好?
  • 工作原理
    1. 選擇一個你感興趣的特征,比如“年齡”。
    2. 固定住數據集中其他所有特征,然后強制讓所有樣本的“年齡”都等于20歲,計算出所有樣本的平均預測概率。
    3. 接著,強制讓所有樣本的“年齡”都等于21歲,再算一個平均預測概率。
    4. …以此類推,將不同年齡值對應的平均預測結果連接起來,就形成了一條曲線。
  • 解讀:這條曲線展示了“年齡”這個特征對模型預測結果的邊際效應。我們可以直觀地看到,隨著年齡的增長,預測結果是線性上升、下降,還是呈現更復雜的關系。

2. 個體條件期望圖 (Individual Conditional Expectation, ICE Plot):洞察“個體故事”

  • 解決的問題:PDP展示的是平均效果,但這種“平均”可能會掩蓋個體之間的巨大差異。ICE圖則為每一個樣本都畫出一條線,展示特定特征的變化對該樣本預測結果的影響。
  • 比喻:PDP是看咖啡因對“所有學生”的平均影響,而ICE圖是看咖啡因對“張三”、“李四”每個人專注度的具體影響。可能張三喝了咖啡生龍活虎,李四喝了卻心慌意亂。
  • 工作原理:它和PDP的原理幾乎一樣,唯一的區別是——它不對所有樣本的預測結果求平均。它為每個樣本單獨畫出一條“特征-預測”關系曲線。
  • 解讀
    • ICE圖是PDP的“拆解版”。所有ICE曲線的平均線,就是PDP曲線
    • 通過觀察ICE圖,我們可以發現是否存在一些行為特異的子群體。如果所有ICE曲線都大致平行,說明該特征對所有樣本的影響是同質的。如果曲線雜亂無章,說明存在復雜的交互效應。

一句話總結

  • 特征重要性:告訴你哪個特征是MVP。
  • PDP:告訴你這位MVP對**整個團隊(所有樣本)**的平均影響是怎樣的。
  • ICE:告訴你這位MVP對**每一位隊員(單個樣本)**的具體影響是怎樣的。

數據13.1中的數據為例進行講解。針對“數據13.1”,我們以credit(是否發生違約)為響應變量,以age(年齡)、education(受教育程度)、workyears(工作年限)、resideyears(居住年限)、income(年收入水平)、debtratio(債務收入比)、creditdebt(信用卡負債)、otherdebt(其他負債)為特征變量,使用分類隨機森林算法進行。

5.隨機森林算法分類問題案例解析

1 ?變量設置及數據處理

from sklearn.ensemble import RandomForestClassifierfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.metrics import confusion_matrixfrom sklearn.metrics import classification_reportfrom sklearn.metrics import cohen_kappa_scorefrom sklearn.inspection import PartialDependenceDisplayfrom mlxtend.plotting import plot_decision_regions#分類問題隨機森林算法示例#1  變量設置及數據處理data=pd.read_csv('數據13.1.csv')X = data.iloc[:,1:]#設置特征變量y = data.iloc[:,0]#設置響應變量X_train, X_test, y_train, y_test =  train_test_split(X,y,test_size=0.3, stratify=y, random_state=10)

2 ?二元Logistic回歸、單顆分類決策樹算法對比觀察

#2  二元Logistic回歸、單顆分類決策樹算法觀察model =  LogisticRegression(C=1e10, max_iter=1000,fit_intercept=True)model.fit(X_train, y_train)model.score(X_test, y_test)#單顆分類決策樹算法model = DecisionTreeClassifier()path = model.cost_complexity_pruning_path(X_train, y_train)param_grid = {'ccp_alpha': path.ccp_alphas}kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=10)model = GridSearchCV(DecisionTreeClassifier(random_state=10), param_grid, cv=kfold)model.fit(X_train, y_train)print("最優alpha值:", model.best_params_)     model = model.best_estimator_print("最優預測準確率:", model.score(X_test, y_test))

最優alpha值:{'ccp_alpha': 0.004534462760155709}

最優預測準確率:0.861904761904762

3 ?裝袋法分類算法

# 3  裝袋法分類算法model=BaggingClassifier(estimator=DecisionTreeClassifier(random_state=10),n_estimators=300,max_samples=0.8,random_state=0)model.fit(X_train, y_train)model.score(X_test, y_test)

0.8666666666666667

4 ?隨機森林分類算法

# 4  隨機森林分類算法model = RandomForestClassifier(n_estimators=300, max_features='sqrt', random_state=10)model.fit(X_train, y_train)model.score(X_test, y_test)

5 ?尋求max_features最優參數

#5  尋求max_features最優參數scores = []for max_features in range(1, X.shape[1] + 1):    model = RandomForestClassifier(max_features=max_features,                                  n_estimators=300, random_state=10)    model.fit(X_train, y_train)    score = model.score(X_test, y_test)    scores.append(score)index = np.argmax(scores)range(1, X.shape[1] + 1)[index]plt.rcParams['font.sans-serif']=['SimHei'] #正常顯示中文plt.plot(range(1, X.shape[1] + 1), scores, 'o-')plt.axvline(range(1, X.shape[1] + 1)[index], linestyle='--', color='k', linewidth=1)plt.xlabel('最大特征變量數')plt.ylabel('最優預測準確率')plt.title('預測準確率隨選取的最大特征變量數變化情況')plt.show()plt.savefig('預測準確率隨選取的最大特征變量數變化情況.png')print(scores)

圖片

6 ?尋求n_estimators最優參數

#6  尋求n_estimators最優參數ScoreAll = []for i in range(100,300,10):    model= RandomForestClassifier(max_features=2,n_estimators = i,random_state = 10)    model.fit(X_train, y_train)    score = model.score(X_test, y_test)    ScoreAll.append([i,score])ScoreAll = np.array(ScoreAll)print(ScoreAll)max_score = np.where(ScoreAll==np.max(ScoreAll[:,1]))[0][0] #找出最高得分對應的索引print("最優參數以及最高得分:",ScoreAll[max_score])  plt.rcParams['font.sans-serif']=['SimHei'] #正常顯示中文plt.figure(figsize=[20,5])plt.xlabel('n_estimators')plt.ylabel('預測準確率')plt.title('預測準確率隨n_estimators變化情況')plt.plot(ScoreAll[:,0],ScoreAll[:,1])plt.show()plt.savefig('預測準確率隨n_estimators變化情況.png')

圖片

進一步尋求n_estimators最優參數

#進一步尋求n_estimators最優參數ScoreAll = []for i in range(190,210):    model= RandomForestClassifier(max_features=2,n_estimators = i,random_state = 10)    model.fit(X_train, y_train)    score = model.score(X_test, y_test)    ScoreAll.append([i,score])ScoreAll = np.array(ScoreAll)print(ScoreAll)max_score = np.where(ScoreAll==np.max(ScoreAll[:,1]))[0][0] #找出最高得分對應的索引print("最優參數以及最高得分:",ScoreAll[max_score])  plt.figure(figsize=[20,5])plt.xlabel('n_estimators')plt.ylabel('預測準確率')plt.title('預測準確率隨n_estimators變化情況')plt.plot(ScoreAll[:,0],ScoreAll[:,1])plt.show()plt.savefig('預測準確率隨n_estimators變化情況.png')

圖片

7 ?隨機森林特征變量重要性水平分析????

# 7  隨機森林特征變量重要性水平分析sorted_index = model.feature_importances_.argsort()plt.rcParams['font.sans-serif'] = ['SimHei']#解決圖表中中文顯示問題plt.barh(range(X_train.shape[1]), model.feature_importances_[sorted_index])plt.yticks(np.arange(X_train.shape[1]), X_train.columns[sorted_index])plt.xlabel('特征變量重要性水平')plt.ylabel('特征變量')plt.title('隨機森林特征變量重要性水平分析')plt.tight_layout()plt.show()plt.savefig('隨機森林特征變量重要性水平分析.png')

圖片

8 ?繪制部分依賴圖與個體條件期望圖???????

#8  繪制部分依賴圖與個體條件期望圖PartialDependenceDisplay.from_estimator(model, X_train, ['workyears','debtratio'], kind='average')#繪制部分依賴圖簡稱PDP圖PartialDependenceDisplay.from_estimator(model, X_train, ['workyears','debtratio'],kind='individual')#繪制個體條件期望圖(ICE Plot)PartialDependenceDisplay.from_estimator(model, X_train, ['workyears','debtratio'],kind='both')#繪制個體條件期望圖(ICE Plot)plt.show()plt.savefig('部分依賴圖與個體條件期望圖.png')

圖片

9 ?模型性能評價

#9  模型性能評價prob = model.predict_proba(X_test)prob[:5]pred = model.predict(X_test)pred[:5]print(classification_report(y_test,pred))cohen_kappa_score(y_test, pred)#計算kappa得分

圖片

熱力圖

#熱力圖import seaborn as snssns.heatmap(confusion_matrix(y_test, pred), annot=True, fmt='d', cmap='Blues')plt.show()plt.savefig('混淆矩陣熱力圖.png')

圖片

10 ?繪制ROC曲線

???????

#10  繪制ROC曲線plt.rcParams['font.sans-serif'] = ['SimHei']#解決圖表中中文顯示問題from sklearn.metrics import roc_curve,roc_auc_score
# 假設 y_true 和 y_score 是你的真實標簽和模型預測的概率得分predict_target_prob=model.predict_proba(X_test)fpr, tpr, thresholds = roc_curve(y_test, predict_target_prob[:,1])# 計算AUC值auc = roc_auc_score(y_test, predict_target_prob[:,1])print("AUC值:", auc)# 繪制 ROC 曲線plt.plot(fpr, tpr, label='ROC Curve area=%.3f'%auc)plt.plot(fpr, fpr, 'k--', linewidth=1)plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title('隨機森林分類樹算法ROC曲線')plt.legend()plt.show()plt.savefig('隨機森林分類樹算法ROC曲線.pdf')

圖片

11 ?運用兩個特征變量繪制隨機森林算法決策邊界圖

#11  運用兩個特征變量繪制隨機森林算法決策邊界圖X2 = X.iloc[:, [2,5]]#僅選取workyears、debtratio作為特征變量model = RandomForestClassifier(n_estimators=300, max_features=1, random_state=1)model.fit(X2,y)model.score(X2,y)plot_decision_regions(np.array(X2), np.array(y), model)plt.xlabel('debtratio')#將x軸設置為'debtratio'plt.ylabel('workyears')#將y軸設置為'workyears'plt.title('隨機森林算法決策邊界')#將標題設置為'隨機森林算法決策邊界'plt.show()plt.savefig('隨機森林算法決策邊界.png')

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90783.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90783.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mermaid流程圖

手動畫流程圖太復雜了&#xff0c;用極少的字符生成圖表是人生的夢想。 Mermaid Chart - Create complex, visual diagrams with text. A smarter way of creating diagrams. Linux開始菜單流程圖 flowchartA(["StartMenu"]) --> B["/usr/share/applicati…

Compose筆記(三十八)--CompositionLocal

這一節主要了解一下CompositionLocal&#xff0c;CompositionLocal是Jetpack Compose中用于組件樹內隱式數據傳遞的核心機制&#xff0c;其設計初衷是解決跨多層組件的數據共享問題&#xff0c;避免通過函數參數逐層傳遞數據。簡單總結:API: (1)compositionLocalOf<T>創建…

解決uniapp 使用uview生成小程序包太大無法上傳的問題

直接打包的插件內容優化后完美上傳&#xff0c; 相信眼尖的小伙伴已經發現了問題的關鍵 uview 會在每個組件里重復引css。導致包太大。 并且 它的格式是 data-v-哈希 沒法簡單的處理 需要壓縮通用規則。然后 再引用壓縮后的規則例如是然后 成功上傳

在線工具+網頁平臺來學習和操作Python與Excel相關技能

&#x1f517;一、在線平臺推薦&#xff08;免安裝&#xff09; ?Python平臺&#xff08;直接寫代碼、跑結果&#xff09;&#xff1a; 平臺 優點 地址 Google Colab 免費&#xff0c;支持圖表和文件操作&#xff0c;最推薦 https://colab.research.google.com …

R Excel 文件處理指南

R Excel 文件處理指南 引言 R語言作為一種強大的統計計算和圖形展示工具&#xff0c;在數據分析領域有著廣泛的應用。而Excel作為辦公軟件的佼佼者&#xff0c;在數據記錄和計算中也扮演著重要的角色。本文旨在介紹如何使用R語言處理Excel文件&#xff0c;包括讀取、寫入以及數…

億級流量短劇平臺架構演進:高并發場景下的微服務設計與性能調優

一、短劇系統概述與市場背景短劇作為一種新興的內容形式&#xff0c;近年來在移動互聯網領域迅速崛起。根據最新市場數據顯示&#xff0c;2023年中國短劇市場規模已突破300億元&#xff0c;用戶規模達到4.5億&#xff0c;平均每日觀看時長超過60分鐘。這種爆發式增長催生了對專…

4G手機控車模塊的核心功能與應用價值

4G手機控車模塊是基于4G無線通信技術實現車輛遠程監控、控制及數據交互的嵌入式設備。其核心功能包括通過4G網絡實現高速數據傳輸&#xff08;支持TCP/IP協議&#xff09;、遠程參數配置與設備管理、多網絡制式兼容&#xff0c;集成GPS/北斗定位功能&#xff0c;可實時獲取車輛…

【leetGPU】1. Vector Addition

問題 link: https://leetgpu.com/challenges/vector-addition Implement a program that performs element-wise addition of two vectors containing 32-bit floating point numbers on a GPU. The program should take two input vectors of equal length and produce a si…

瑞吉外賣學習筆記

TableField 作用: 當數據庫中表的列名與實體類中的屬性名不一致&#xff0c;使用TableField 使其對應 TableField("db_column_name") private String entityFieldName;exist 屬性 : 指定該字段是否參與增刪改查操作。 TableField(exist false) private String tempF…

RoPE:相對位置編碼的旋轉革命——原理、演進與大模型應用全景

“以復數旋轉解鎖位置關系的本質表達&#xff0c;讓Transformer突破長度藩籬” 旋轉位置編碼&#xff08;Rotary Position Embedding, RoPE&#xff09; 是由 Jianlin Su 等研究者 于2021年提出的突破性位置編碼方法&#xff0c;通過復數空間中的旋轉操作將相對位置信息融入Tra…

震網(Stuxnet):打開潘多拉魔盒的數字幽靈

在科技飛速發展的今天&#xff0c;代碼和數據似乎只存在于無形的數字世界。但如果我告訴大家&#xff0c;一段代碼曾悄無聲息地潛入一座受到嚴密物理隔離的核工廠&#xff0c;并成功摧毀了其中的物理設備&#xff0c;大家是否會感到一絲寒意&#xff1f;這不是科幻電影的情節&a…

一文讀懂:到底什么是 “具身智能” ?

今天咱們來好好聊聊一個最近很火的一個技術話題——具身智能&#xff01; 這個詞聽起來是不是有點難懂&#xff1f;其實我們可以簡單理解為&#xff1a;具身智能是具有身體的人工智能體。這樣是不是會容易理解一些&#xff1f; 具身智能&#xff08;Embodied Intelligence&…

企業級區塊鏈平臺Hyperchain核心原理剖析

Hyperchain作為國產自主可控的企業級聯盟區塊鏈平臺&#xff0c;其核心原理圍繞高性能共識、隱私保護、智能合約引擎及可擴展架構展開&#xff0c;通過多模塊協同實現企業級區塊鏈網絡的高效部署與安全運行。 以下從核心架構、關鍵技術、性能優化、安全機制、應用場景五個維度展…

論文閱讀-RaftStereo

文章目錄1 概述2 模塊說明2.1 特征抽取器2.2 相關金字塔2.3 多級更新算子2.4 Slow-Fast GRU2.5 監督3 效果1 概述 在雙目立體匹配中&#xff0c;基于迭代的模型是一種比較主流的方法&#xff0c;而其鼻祖就是本文要講的RaftStereo。 先來說下什么是雙目立體匹配。給定極線矯正…

內存優化:從堆分配到零拷貝的終極重構

引言 在現代高性能軟件開發中&#xff0c;內存管理往往是性能優化的關鍵戰場。頻繁的堆內存分配(new/delete)不僅會導致性能下降&#xff0c;還會引發內存碎片化問題&#xff0c;嚴重影響系統穩定性。本文將深入剖析高頻調用模塊中堆分配泛濫導致的性能塌方問題&#xff0c;并…

【GoLang#2】:基礎入門(工具鏈 | 基礎語法 | 內置函數)

前言&#xff1a;Go 的一些必備知識 1. Go 語言命名 Go的函數、變量、常量、自定義類型、包(package)的命名方式遵循以下規則&#xff1a; 首字符可以是任意的Unicode字符或者下劃線剩余字符可以是Unicode字符、下劃線、數字字符長度不限 Go 語言代碼風格及開發事項代碼每一行結…

Bert項目--新聞標題文本分類

目錄 技術細節 1、下載模型 2、config文件 3、BERT 文本分類數據預處理流程 4、對輸入文本進行分類 5、計算模型的分類性能指標 6、模型訓練 7、基于BERT的文本分類預測接口 問題總結 技術細節 1、下載模型 文件名稱--a0_download_model.py 使用 ModelScope 庫從模型倉…

sendfile系統調用及示例

好的&#xff0c;我們繼續學習 Linux 系統編程中的重要函數。這次我們介紹 sendfile 函數&#xff0c;它是一個高效的系統調用&#xff0c;用于在兩個文件描述符之間直接傳輸數據&#xff0c;通常用于將文件內容發送到網絡套接字&#xff0c;而無需將數據從內核空間復制到用戶空…

數據結構習題--刪除排序數組中的重復項

數據結構習題–刪除排序數組中的重復項 給你一個 非嚴格遞增排列 的數組 nums &#xff0c;請你 原地 刪除重復出現的元素&#xff0c;使每個元素 只出現一次 &#xff0c;返回刪除后數組的新長度。元素的 相對順序 應該保持 一致 。然后返回 nums 中唯一元素的個數。 方法&…

Docker的容器設置隨Docker的啟動而啟動

原因也比較簡單&#xff0c;在docker run 的時候沒有設置–restartalways參數。 容器啟動時&#xff0c;需要增加參數 –restartalways no - 容器退出時&#xff0c;不重啟容器&#xff1b; on-failure - 只有在非0狀態退出時才從新啟動容器&#xff1b; always - 無論退出狀態…