機器學習:更多分類回歸算法之決策樹、SVM、KNN

下面介紹的這幾種算法,既能用于回歸問題又能用于分類問題,接下來了解下吧。

決策樹

可參考:

決策樹(Decision Tree) | 菜鳥教程

決策樹(Decision Tree)是一種常用的監督學習算法,可用于分類和回歸任務。它通過構建樹形結構進行決策,每個內部節點代表一個特征上的 “判斷”,分支代表判斷結果,葉節點代表最終的預測類別或值。決策樹的核心思想是:通過對數據的特征進行逐層劃分,最終將數據映射到不同的類別或數值。

一、決策樹的基本結構

決策樹由三部分組成:

  1. 根節點:最初的決策點,包含全部訓練樣本。

  2. 內部節點:對應一個特征上的測試條件(如 “年齡> 30?”)。

  3. 葉節點:最終的預測結果(如 “購買” 或 “不購買”)。

例如,一個簡單的 “是否出門打籃球” 決策樹可能如下:

二、決策樹的構建過程

決策樹的構建是一個遞歸劃分的過程,主要步驟如下:

  • 特征選擇:從當前節點的特征中選擇一個最優特征(如 “天氣”)作為劃分依據。

  • 劃分數據集:根據該特征的不同取值,將數據集劃分為多個子集(如 “晴天” 和 “非晴天”)。

  • 遞歸生成子樹:對每個子集重復步驟 1-2,直到滿足終止條件(如:

    • 子集中所有樣本屬于同一類別。

    • 沒有剩余特征可供劃分。

    • 樹的深度達到預設上限。

其中,特征選擇是核心環節,常用的準則有:

  • 信息增益(ID3 算法):選擇能最大減少信息熵的特征。

  • 信息增益率(C4.5 算法):對信息增益進行修正,避免偏向取值多的特征。

  • 基尼不純度(CART 算法):選擇能最小化基尼指數(樣本被誤分類的概率)的特征。

三、決策樹的優缺點

優點

  1. 直觀易懂:決策樹可以可視化,便于理解和解釋(如醫生診斷規則)。

  2. 無需預處理:對數據尺度、分布不敏感,無需歸一化或標準化。

  3. 處理非線性關系:能自動學習特征間的復雜非線性關系。

  4. 支持多輸出:可同時預測多個目標變量。

缺點

  1. 容易過擬合:決策樹可能過度擬合訓練數據,導致泛化能力差(解決方案:剪枝、隨機森林)。

  2. 不穩定:數據的微小變化可能導致樹結構劇烈變化(集成學習可緩解)。

  3. 偏向問題:對具有較多取值的特征有偏好(如 ID3)。

  4. 計算復雜度高:構建樹的時間復雜度較高(尤其是特征和樣本量較大時)。

四、決策樹的應用場景

  • 分類任務:

    • 醫療診斷(如根據癥狀判斷疾病類型)。

    • 客戶細分(如根據消費行為劃分客戶類別)。

  • 回歸任務:

    • 房價預測(根據房屋面積、位置等預測價格)。

    • 銷量預測(根據促銷活動、季節等預測銷量)。

  • 集成學習基礎:作為隨機森林、梯度提升樹(GBDT)等集成算法的基模型。

五、決策樹的優化方法

  • 剪枝(Pruning):

    • 預剪枝:在樹構建過程中提前停止劃分(如限制樹的最大深度)。

    • 后剪枝:構建完整樹后,通過交叉驗證移除不必要的節點。

  • 特征選擇優化:使用信息增益率(C4.5)或基尼不純度(CART)替代信息增益。

  • 集成學習:結合多個決策樹(如隨機森林、XGBoost)提高穩定性和準確性。

六、常見決策樹算法對比

算法支持任務特征選擇準則樹結構缺失值處理
ID3分類信息增益多叉樹不支持
C4.5分類信息增益率多叉樹支持
CART分類 + 回歸基尼不純度(分類)/ 均方誤差(回歸)二叉樹支持

總結

決策樹是一種強大且直觀的機器學習算法,適合處理非線性關系和需要可解釋性的場景。雖然它存在過擬合風險,但通過剪枝、集成學習等優化手段,決策樹在實際應用中仍然表現出色,尤其是作為集成模型(如隨機森林)的基礎組件。

SVM

可參考:

支持向量機 | 菜鳥教程

SVM(Support Vector Machine,支持向量機)是一種強大的監督學習算法,主要用于分類和回歸任務,尤其在處理高維數據時表現出色。其核心思想是:通過尋找一個最優超平面,將不同類別的數據分隔開,并最大化類別之間的間隔(Margin),從而獲得良好的泛化能力。

支持向量

  • 離超平面最近的樣本點被稱為“支持向量”。這些支持向量對于定義超平面至關重要。

  • 支持向量機通過最大化支持向量到超平面的距離(即最大化間隔)來選擇最佳的超平面。

SVM 分類流程

  1. 選擇一個超平面:找到一個能夠最大化分類邊界的超平面。

  2. 訓練支持向量:通過支持向量機算法,選擇離超平面最近的樣本點作為支持向量。

  3. 通過最大化間隔來找到最優超平面:選擇一個最優超平面,使得間隔最大化。

  4. 使用核函數處理非線性問題:通過核函數將數據映射到高維空間來解決非線性可分問題。

SVM 也可用于回歸任務(Support Vector Regression,SVR)。與分類不同,SVR 的目標是找到一個超平面,使得所有訓練數據點到該超平面的距離不超過 \(\epsilon\),同時盡量使超平面平坦。

SVM 的優缺點

優點

  1. 適用于高維數據:在特征維度遠大于樣本數時仍表現良好(如文本分類)。

  2. 魯棒性強:只依賴支持向量,對離群點不敏感(通過軟間隔控制)。

  3. 避免過擬合:通過最大化間隔和核技巧,獲得良好的泛化能力。

  4. 核函數靈活性:可通過選擇不同核函數處理各種數據分布。

缺點

  1. 計算復雜度高:訓練時間隨樣本數增加顯著增長(尤其在大數據集上)。

  2. 參數敏感:核函數參數(如 RBF 的 \(\gamma\))和正則化參數 C 需要仔細調優。

  3. 不適用于大規模數據:傳統 SVM 求解器在樣本數超過 10 萬時效率較低(可使用 SGD 等優化)。

  4. 多分類需擴展:SVM 原生只支持二分類,處理多分類需組合多個二分類器(如 One-vs-One 或 One-vs-All)。

SVM 的應用場景

  1. 文本分類:如垃圾郵件識別、新聞分類(高維稀疏數據)。

  2. 圖像識別:如手寫數字識別、人臉識別。

  3. 生物信息學:如蛋白質結構預測、癌癥分類。

  4. 異常檢測:通過 One-Class SVM 識別罕見事件。

  5. 金融風控:如信用評分、欺詐檢測。

SVM 的優化與擴展

  1. 高效求解算法:如序列最小優化算法(SMO)、梯度下降法(SGD)。

  2. 集成 SVM:與 Bagging 或 Boosting 結合提高性能。

  3. 多分類擴展:如 One-vs-One、One-vs-All、DAG-SVM。

  4. 在線學習:如核感知機(Kernel Perceptron)。

總結

SVM 是一種優雅且強大的機器學習算法,特別適合處理高維、小樣本數據,且具有嚴格的數學理論保證。雖然其計算復雜度較高,但在許多領域(如文本和圖像分析)仍是首選算法之一。使用 SVM 時,需注意選擇合適的核函數和調優參數,以獲得最佳性能。

KNN

可參考:

K 近鄰算法 | 菜鳥教程

KNN(K-Nearest Neighbors,K 近鄰算法)是一種簡單且常用的監督學習算法,主要用于分類和回歸任務。

KNN(K-Nearest Neighbors)不屬于深度學習算法,而是一種傳統的機器學習算法。其核心思想可以概括為:“物以類聚,人以群分”—— 一個樣本的類別或數值,由與其最接近的 K 個鄰居的類別或數值決定。

一、KNN 的基本原理

  • 核心邏輯 對于一個待預測的樣本,KNN 會在訓練數據集中找到與該樣本 “距離最近” 的 K 個樣本(即 “鄰居”),然后根據這 K 個鄰居的信息來預測結果:

    • 分類任務:采用 “少數服從多數” 原則,K 個鄰居中出現次數最多的類別即為預測類別。

    • 回歸任務:取 K 個鄰居的數值的平均值(或加權平均值)作為預測結果。

  • 距離度量 衡量樣本間 “接近程度” 的常用指標包括:

二、KNN 的執行步驟

以分類任務為例,KNN 的工作流程如下:

  1. 準備訓練數據:包含已知類別的樣本(特征 + 標簽)。

  2. 確定參數 K:即選擇多少個鄰居(K 為正整數,需人為設定)。

  3. 計算距離:計算待預測樣本與訓練集中所有樣本的距離。

  4. 篩選鄰居:按距離從小到大排序,選取前 K 個樣本作為 “鄰居”。

  5. 投票預測:統計 K 個鄰居中出現次數最多的類別,作為待預測樣本的類別。

三、關鍵參數 K 的影響

K 的取值對模型結果影響很大,需要謹慎選擇:

  • K=1:模型容易過擬合(對噪聲敏感,決策邊界復雜)。

  • K 過大:模型會過度平滑,忽略局部特征,導致欠擬合(決策邊界簡單)。

  • 經驗選擇:通常通過交叉驗證(如網格搜索)選擇最優 K 值,且 K 一般取奇數(避免投票平局)。

四、KNN 的優缺點

優點

  • 簡單易懂:無需復雜的數學推導,原理直觀。

  • 無需訓練過程:屬于 “懶惰學習”(Lazy Learning),新樣本到來時才計算距離,適合動態數據集。

  • 適用于多分類問題:天然支持多類別預測,無需額外處理。

缺點

  • 計算成本高:預測時需與所有訓練樣本計算距離,數據量大時效率低(時間復雜度為 O (n),n 為樣本數)。

  • 對不平衡數據敏感:若某類樣本數量遠多于其他類,可能主導預測結果。

  • 對特征尺度敏感:不同特征的量綱差異會影響距離計算(需先標準化 / 歸一化特征)。

五、KNN 的應用場景

  • 分類任務:如手寫數字識別、鳶尾花種類分類、客戶流失預測等。

  • 回歸任務:如房價預測、用戶評分預測等。

  • 推薦系統:基于用戶相似度的 “近鄰推薦”(如 “和你相似的用戶也喜歡...”)。

六、優化方法

為解決 KNN 的效率問題,常用優化手段包括:

  • 數據降維:減少特征數量,降低距離計算復雜度(如 PCA)。

  • 索引結構:使用 KD 樹、球樹等數據結構加速鄰居搜索。

  • 加權 KNN:給距離近的鄰居賦予更高權重,減少遠鄰的干擾。

總之,KNN 是一種 “簡單但不簡陋” 的算法,在小規模數據集或對可解釋性要求高的場景中非常實用,但在大數據場景下需結合優化手段使用。

補充

補充更多相關內容。

主成分分析

主成分分析(Principal Component Analysis,簡稱PCA)是一種常用的數據降維方法,它的核心思想是通過線性變換,將高維數據映射到低維空間,在盡可能保留原始數據信息(即方差)的前提下,減少數據的維度,從而簡化數據結構、去除冗余信息,并便于后續的分析或建模。

從嚴格意義上來說,PCA 更偏向于一種數據預處理技術。其本質是數據的線性變換與壓縮,而非 “學習” 輸入到輸出的映射關系:

  • 它不涉及 “標簽”(即無監督),也不構建預測模型,僅關注數據本身的分布結構(方差、相關性)。

  • 目標是簡化數據(降維)、去除冗余或噪聲,為后續任務(如分類、回歸)做準備。

PCA 不是嚴格意義上的機器學習算法,而是一種無監督的數據降維與預處理技術。但由于其在機器學習流程中的廣泛應用(如數據預處理、特征工程),常被納入機器學習的工具鏈中進行討論。

PCA 的核心目標

  • 降維:將高維特征(如 100 個特征)轉化為低維特征(如 2 個或 3 個特征),降低計算復雜度。

  • 保留信息:新的低維特征(稱為 “主成分”)應盡可能保留原始數據的大部分變異(方差),即數據的核心信息。

  • 去相關性:新的主成分之間彼此線性無關,消除原始特征間的冗余關聯。

PCA 的基本原理

PCA 的本質是尋找一組新的正交坐標軸(主成分),使得數據在這些坐標軸上的投影具有最大的方差。具體步驟可概括為:

  • 數據標準化 對原始數據進行均值中心化(每個特征減去其均值),確保各特征在同一量級上,避免方差大的特征主導結果(例如,若特征 A 的單位是 “米”,特征 B 是 “厘米”,需先標準化)。

  • 計算協方差矩陣 協方差矩陣用于描述特征之間的相關性:若兩個特征的協方差為正,說明它們正相關;為負則負相關;為 0 則無關。PCA 的目標是通過變換消除這種相關性。

  • 求解協方差矩陣的特征值和特征向量

    • 特征向量:代表新的坐標軸(主成分)的方向。

    • 特征值:表示數據在對應特征向量方向上的方差大小,特征值越大,該方向包含的信息越多。

  • 選擇主成分 按特征值從大到小排序,選取前 k 個特征向量作為主成分(k < 原始維度),確保這 k 個主成分的累計方差貢獻率(即前 k 個特征值之和 / 總特征值之和)達到預設閾值(如 95%),以保留大部分信息。

  • 映射數據到新空間 用選中的 k 個特征向量構成變換矩陣,將原始數據投影到該矩陣上,得到降維后的低維數據。

舉例說明

假設我們有一組二維數據(特征 X1 和 X2),分布近似一個橢圓。

  • 原始數據中,X1 和 X2 可能存在相關性(例如,“身高” 和 “體重”)。

  • PCA 會找到橢圓的長軸(第一主成分)和短軸(第二主成分),其中長軸方向的方差最大,包含最多信息。

  • 若我們選擇保留第一主成分,就將二維數據降為一維,此時數據在長軸上的投影保留了大部分原始信息。

PCA 的應用場景

  • 數據可視化:將高維數據(如 100 維)降為 2 或 3 維,便于繪圖觀察分布(例如,用 PCA 將圖像的像素特征降維后可視化)。

  • 降噪:低方差的主成分可能對應噪聲,去除這些成分可簡化數據并減少干擾。

  • 預處理:在機器學習中,降維后的數據可加速模型訓練(如減少 SVM、KNN 的計算量)。

PCA 的局限性

  • 是線性降維方法,無法處理非線性結構的數據(此時可考慮核 PCA、t-SNE 等非線性方法)。

  • 降維后的數據(主成分)失去了原始特征的物理意義,解釋性較差(例如,原始特征是 “年齡”“收入”,主成分可能是兩者的混合,難以直接解讀)。

總之,PCA 是一種高效的降維工具,通過聚焦數據的核心變異方向,在簡化數據的同時保留關鍵信息,廣泛應用于數據分析、機器學習和模式識別等領域。

欠擬合和過擬合

過擬合(Overfitting)和欠擬合(Underfitting)是機器學習中兩種常見的模型性能問題,直接影響模型對新數據的預測能力。它們的本質是模型對訓練數據的 “學習程度” 與泛化能力之間的失衡,具體區別和應對方法如下:

一、欠擬合(Underfitting)

定義

模型無法充分捕捉訓練數據中的規律,導致在訓練集和測試集上的表現都很差(誤差較高)。形象地說,就是模型 “學得太淺”,對數據的復雜模式視而不見。

表現

  • 訓練集準確率低,測試集準確率也低(兩者誤差都大)。

  • 模型在訓練過程中收斂緩慢,甚至難以收斂。

常見原因

  1. 模型過于簡單:例如用線性模型(如線性回歸)去擬合非線性數據(如二次函數分布的數據)。

  2. 特征不足:輸入的特征數量太少或質量太低,無法描述數據的關鍵規律(如用 “身高” 單一特征預測 “體重”,忽略了 “年齡”“性別” 等重要因素)。

  3. 訓練時間不足:模型尚未充分學習到數據模式就停止訓練(如神經網絡迭代次數太少)。

解決方法

  • 增加模型復雜度:例如將線性模型替換為非線性模型(如決策樹、多項式回歸、神經網絡)。

  • 豐富特征工程:增加更多相關特征,或對現有特征進行組合、轉換(如多項式特征、特征交叉)。

  • 延長訓練時間:增加迭代次數,讓模型有更多機會學習數據規律。

二、過擬合(Overfitting)

定義

模型過度學習訓練數據中的細節,甚至包括噪聲,導致在訓練集上表現極好,但對新數據(測試集)的泛化能力很差。形象地說,就是模型 “學得太死”,把偶然現象當成了普遍規律。

表現

  • 訓練集準確率極高(誤差極小),但測試集準確率驟降(誤差顯著增大)。

  • 模型在訓練過程中,訓練誤差持續下降,但測試誤差先降后升。

常見原因

  1. 模型過于復雜:例如用高階多項式擬合簡單線性數據,或神經網絡層數 / 參數過多。

  2. 訓練數據不足或有噪聲:數據量太少時,模型容易記住每個樣本的細節;數據中存在異常值或錯誤標簽(噪聲)時,模型會 “記住” 這些噪聲。

  3. 訓練過度:模型在訓練集上迭代次數過多,以至于擬合了無關的細節。

解決方法

  • 簡化模型:減少模型參數(如減小神經網絡層數、限制決策樹深度),或選擇更簡單的模型(如用線性回歸替代復雜的集成模型)。

  • 增加訓練數據:更多的數據能讓模型更難記住細節,被迫學習普遍規律(如數據增強技術,通過旋轉、裁剪等方式擴充圖像數據)。

  • 正則化(Regularization):通過懲罰模型的復雜度來限制過擬合,常見方法包括:

    • L1 正則化(Lasso 回歸):對參數絕對值施加懲罰,可能使部分參數為 0(特征選擇)。

    • L2 正則化(Ridge 回歸):對參數平方施加懲罰,使參數值趨向于 0(權重衰減)。

    • Dropout(適用于神經網絡):訓練時隨機丟棄部分神經元,防止模型過度依賴特定神經元。

  • 早停(Early Stopping):在訓練過程中監控測試誤差,當測試誤差不再下降時提前停止訓練,避免過度擬合。

  • 交叉驗證:通過將數據分為多組訓練集和驗證集,選擇在驗證集上表現最佳的模型,減少對單一訓練集的依賴。

三、過擬合與欠擬合的對比

維度欠擬合過擬合
模型與數據的關系模型太簡單,無法擬合數據規律模型太復雜,過度擬合數據細節(含噪聲)
訓練集性能差(誤差高)好(誤差低)
測試集性能差(誤差高)差(誤差高)
核心問題學習不足(欠學習)學習過度(過學習)
解決思路增強模型能力(增加復雜度、特征)限制模型能力(簡化模型、正則化)

總結

過擬合和欠擬合的本質是模型復雜度與數據規律的不匹配。理想的模型應處于 “擬合適中” 的狀態:既能捕捉訓練數據的核心規律,又不過度關注細節,從而在新數據上表現穩定。在實際建模中,通常通過調整模型復雜度、優化數據質量、使用正則化等方法來平衡兩者,追求更強的泛化能力。

數據分離

數據分離是指將原始數據集劃分為不同的子集,以實現模型的訓練、驗證和測試,其核心目的是確保模型能夠在未見過的數據上評估泛化能力,避免因過度依賴訓練數據而導致的過擬合。

1. 常見的數據集劃分方式

  • 訓練集(Training Set) 用于模型的訓練過程,模型通過學習該數據集的特征與標簽之間的關系,調整自身參數(如決策樹的分裂閾值、神經網絡的權重)。 占比通常為 60%~80%。

  • 驗證集(Validation Set) 用于模型訓練過程中的參數調優(如選擇正則化系數、調整樹的深度)和超參數優化,幫助判斷模型是否過擬合或欠擬合,并選擇最優模型。 占比通常為 10%~20%。 注:在交叉驗證中,驗證集的角色由訓練集的子集交替承擔,無需單獨劃分。

  • 測試集(Test Set) 用于最終評估模型的泛化能力,模擬模型在真實場景中的表現。測試集在模型訓練和調優階段需嚴格 “隱藏”,避免因人為調整模型適配測試集而導致評估結果失真。 占比通常為 10%~20%。

2. 劃分原則

  • 隨機性:劃分需隨機進行,避免因數據順序(如時間序列中的趨勢)導致子集分布不一致。

  • 分布一致性:各子集的特征分布和標簽分布應與原始數據集保持一致(如分類任務中,各子集的類別比例需匹配)。

  • 獨立性:測試集需與訓練集、驗證集完全獨立,確保評估結果真實反映泛化能力。

3. 常見工具

在 Python 中,可通過sklearn.model_selection.train_test_split實現快速劃分,例如:

from sklearn.model_selection import train_test_split
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)  # 先分訓練集(70%)和臨時集(30%)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)  # 臨時集再分為驗證集(15%)和測試集(15%)

數據分離通過劃分訓練集、驗證集、測試集,確保模型訓練和評估的客觀性,是構建可靠模型的基礎。

混淆矩陣

混淆矩陣是用于評估分類模型性能的可視化工具,通過展示模型對不同類別的預測結果與真實標簽的匹配情況,直觀反映模型的錯誤類型(如將 A 類誤判為 B 類的頻率)。它適用于二分類和多分類任務,以下以二分類為例說明:

1. 二分類混淆矩陣的基本結構

假設分類任務為 “判斷樣本是否為正例(Positive)”,混淆矩陣為 2×2 矩陣:

預測為正例(Predicted Positive)預測為負例(Predicted Negative)
真實正例(Actual Positive)TP(True Positive,真正例)FN(False Negative,假負例)
真實負例(Actual Negative)FP(False Positive,假正例)TN(True Negative,真負例)
  • TP:模型正確預測為正例的樣本(如將 “癌癥患者” 正確預測為 “患病”)。

  • TN:模型正確預測為負例的樣本(如將 “健康人” 正確預測為 “健康”)。

  • FP:模型錯誤地將負例預測為正例(如 “健康人” 被誤診為 “患病”,又稱 “第一類錯誤”)。

  • FN:模型錯誤地將正例預測為負例(如 “癌癥患者” 被漏診為 “健康”,又稱 “第二類錯誤”)。

2. 基于混淆矩陣的評估指標

混淆矩陣可衍生出多個關鍵指標,用于量化模型性能:

指標計算公式含義
準確率(Accuracy)(TP + TN) / (TP + TN + FP + FN)模型整體預測正確的比例(適用于平衡數據集)。
精確率(Precision)TP / (TP + FP)預測為正例的樣本中,真正為正例的比例(如 “被診斷為患病者中,實際患病的比例”)。
召回率(Recall)/ 靈敏度TP / (TP + FN)真實正例中,被模型正確預測的比例(如 “所有患者中,被成功診斷的比例”)。
特異度(Specificity)TN / (TN + FP)真實負例中,被模型正確預測的比例(如 “所有健康人中,被正確排除的比例”)。
F1 分數(F1-Score)2×(Precision×Recall)/(Precision+Recall)精確率和召回率的調和平均,平衡兩者的沖突(適用于不平衡數據集)。

3. 多分類混淆矩陣

對于多分類任務(如識別手寫數字 0-9),混淆矩陣為 N×N 矩陣(N 為類別數),其中第 i 行第 j 列的數值表示 “真實類別為 i 但被預測為 j” 的樣本數。通過分析對角線(正確預測)和非對角線(錯誤預測)的數值,可定位模型對哪些類別容易混淆(如將 “8” 誤判為 “3”)。

4. 應用場景

  • 診斷模型錯誤類型:例如在醫療診斷中,FN(漏診)可能比 FP(誤診)后果更嚴重,需優先提高召回率。

  • 指導模型優化:若某一類別的錯誤率極高,可針對性增加該類別的訓練樣本或調整模型參數。

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

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

相關文章

Vue 整合 Vue Flow:從零構建交互式流程圖

目錄引言目的適用場景環境準備基礎組件 (index.vue)自定義組件 (矩形、菱形等)RectangleNode.vue (矩形節點)&#xff1a;DiamondNode.vue (菱形節點)&#xff1a;ImageNode(自定義圖片節點):操作實現 (#操作實現) 拖拽節點 (#拖拽節點) 連線 (多連接點) 刪除節點 …

C# WPF - Prism 學習篇:搭建項目(一)

一、前期準備開發工具&#xff1a;Visual Studio 2022二、創建項目1、創建WPF 應用“WpfApp.StudyDemo”&#xff1a;2、項目結構如下&#xff1a; 三、安裝 Prism1、選中項目“WpfApp.PrismDemo”&#xff0c;在右鍵菜單中選擇“管理 NuGet 程序包(N)...”。2、在搜索框中輸入…

單片機 基于rt-thread 系統 使用 CCM內存

一、開發環境 開發板&#xff1a;野火stm32f407 系統&#xff1a;rt-thread V4.1.1 二、鏈接腳本配置 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ****************************…

【UnityAssetBundle】AB包卸載資源

AB包的卸載高效穩定游戲開發的強制要求&#xff0c;它解決了資源管理中的內存泄漏問題&#xff0c;為動態的內容加載、熱更新、大型世界的構建提供了內存保障&#xff0c;最終提升了游戲性能、穩定性和用戶體驗。卸載資源方式一&#xff08;推薦使用&#xff09;&#xff1a;卸…

【萬字長文】深度學習2 yolov5修改為自己的數據集

數據預處理 使用labelme可以直接導出適用于yolo模型的txt文本數據&#xff0c;也可以直接導出默認的json數據結構&#xff0c;后面我會提供代碼進行轉換。自行進行標注&#xff0c;圖片與標注一一對應&#xff0c;更多要求不贅述。因為我做最簡單的檢索模型&#xff0c;不做切…

ubuntu18編譯RealSense SDK 2.0

參考文章&#xff1a;https://dev.intelrealsense.com/docs/compiling-librealsense-for-linux-ubuntu-guide1、安裝依賴 sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade sudo apt-get install libssl-dev libusb-1.0-0-dev libud…

算法學習筆記:9.Kruskal 算法——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

在圖論的眾多算法中&#xff0c;Kruskal 算法以其簡潔高效的特性&#xff0c;成為求解最小生成樹&#xff08;Minimum Spanning Tree&#xff0c;MST&#xff09;的經典方法。無論是在通信網絡的優化設計、電路布線的成本控制&#xff0c;還是在計算機考研 408 的備考過程中&am…

Vue+Openlayers加載OSM、加載天地圖

文章目錄1. 介紹2. 加載底圖2.1 加載默認OSM地圖2.2 加載天地圖1. 介紹 Openlayers官網&#xff1a;https://openlayers.org/ 安裝依賴&#xff1a;npm i ol 2. 加載底圖 參考博客&#xff1a; vueopenlayers環境配置&#xff1a;https://blog.csdn.net/cuclife/article/det…

Python處理電子表格文件庫之pyexcel使用詳解

概要 pyexcel是一個功能強大的Python第三方庫,專門用于處理各種格式的電子表格文件。核心價值在于提供了統一的接口來讀取、寫入和操作Excel、CSV、ODS等多種電子表格格式,極大簡化了數據處理工作流程。與傳統的單一格式處理庫不同,pyexcel采用了插件化架構,使開發者能夠通…

【網絡安全】惡意 Python 包“psslib”仿冒 passlib,可導致 Windows 系統關閉

文章目錄惡意 Python 包“psslib”仿冒 passlib如何避免psslib的威脅惡意 Python 包“psslib”仿冒 passlib Socket 的威脅研究團隊發現了一個名為 psslib 的惡意 Python 包&#xff0c;旨在以提供密碼安全功能為幌子突然關閉 Windows 系統。 該軟件包由威脅行為者使用別名 u…

ai之對接電信ds后端服務,通過nginx代理轉發https為http,對外請求,保持到達第三方后請求頭不變

前置環境&#xff1a; 在微信小程序中嵌入H5頁面&#xff08;智能客服&#xff09;&#xff0c;需要讓h5頁面在https的域名服務器上。即通過 nginx 部署成web服務&#xff0c;還得配置域名和端口443訪問。電信的第三方deepseek服務 &#xff0c;只接收http請求&#xff0c;暫未…

第十四節:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入門 - Flask 后端 生產部署講解

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入…

Unity開發如何解決iOS閃退問題

一、iOS閃退常見原因及排查方法1. 內存問題&#xff08;最常見原因&#xff09; 癥狀表現&#xff1a; 設備發熱后閃退 加載大型場景時崩潰 控制臺出現EXC_RESOURCE RESOURCE_TYPE_MEMORY日志 解決方案&#xff1a; // 內存監控代碼 void Update() { Debug.Log($"內存使用…

【機器學習筆記 Ⅲ】5 強化學習

強化學習&#xff08;Reinforcement Learning, RL&#xff09; 強化學習是機器學習的一個分支&#xff0c;其核心思想是讓智能體&#xff08;Agent&#xff09;通過與環境&#xff08;Environment&#xff09;的交互學習最優策略&#xff08;Policy&#xff09;&#xff0c;以最…

pytorch深度學習-卷積神經網絡CNN-MNIST-gpu加速

一、為什么需要 CNN&#xff1f;從圖像識別的 “麻煩” 說起假設你想讓電腦識別一張圖片里有沒有貓。 如果用傳統神經網絡&#xff1a;一張 100100 的彩色圖片&#xff0c;有 100100330000 個像素點&#xff0c;每個像素點都是一個輸入神經元。傳統網絡需要每個輸入神經元和隱藏…

【阿里巴巴JAVA開發手冊】IDE的text file encoding設置為UTF-8; IDE中文件的換行符使用Unix格式,不要使用Windows格式。

問題&#xff1a;當使用 IDEA SSH 遠程開發時&#xff0c;SFTP 同步的 Windows 本地編輯的 config/plugin_config 文件文本內容中 “換行符”與 Unix、Linux 的文件文本內容換行符字符集不一致&#xff0c;導致 docker 容器中自定義 /opt/seatunnel/bin/install_plugin 在執行以…

自動駕駛ROS2應用技術詳解

自動駕駛ROS2應用技術詳解 目錄 自動駕駛ROS2節點工作流程自動駕駛感知融合技術詳解多傳感器數據同步技術詳解ROS2多節點協作與自動駕駛系統最小節點集 1. 自動駕駛ROS2節點工作流程 1.1 感知輸出Topic的后續處理 在自動駕駛系統中&#xff0c;感知節點輸出的各種Topic會被…

Redis底層實現原理之訂閱發布機制

文章目錄1. 通知類型2. 實現原理2.1 Pub/Sub2.1.1 基礎知識點2.1.2 頻道和訂閱者的存儲通知原理2.1.3 鍵空間通知2.1.4 客戶端消費2.1.5 缺陷2.2 Redis Stream2.2.1 基礎知識點2.2.2 基礎數據結構2.2.3 消費者組管理2.2.4 消息和消費者持久化2.2.5 消息生產和消費2.2.6 消費者拉…

【MATLAB代碼】AOA與TDOA混合定位例程,自適應基站數量,二維,可調節錨點數量。訂閱專欄后,可直接查看matlab源代碼

本文給出一個matlab代碼,用于在二維平面上,使用AOA的角度測量和TDOA的到達時間差的測量,來達到對未知點的精確定位。最后輸出定位示意圖、真實點坐標、僅AOA定位坐標與誤差、僅TDOA定位的坐標與誤差、AOA+TDOA混合定位的坐標與誤差。訂閱專欄后可直接查看源代碼,粘貼到MATL…

Node.js 所有主要版本的發布時間、穩定版本(Stable)和長期支持版本(LTS) 的整理

以下是 Node.js 所有主要版本的發布時間、穩定版本&#xff08;Stable&#xff09;和長期支持版本&#xff08;LTS&#xff09; 的整理&#xff0c;涵蓋從早期版本到當前最新版本的信息。 &#x1f4c5; Node.js 版本發布規律 每 6 個月發布一個新主版本&#xff08;偶數月&am…