機器學習中采樣哪些事

在機器學習中采樣主要分為兩種,過采樣(Oversample)和欠采樣(Undersample)。過采樣就是通過增加少數類樣本的數量來平衡數據集。而欠采樣就是通過減少多數類樣本的數量來平衡數據集。

通常在進行采樣中以下是幾種常用的方法:

1. 隨機采樣

隨機采樣適用于過采樣和欠采樣。其操作方法就是隨機復制增加少數類樣本或者隨機增加刪除減少多數類樣本。

下面是一個代碼例子:

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.over_sampling import RandomOverSampler
from imblearn.under_sampling import RandomUnderSampler#創建一個不平衡的分類數據集
X, y = make_classification(n_classes=2, class_sep=2,weights=[0.1, 0.9], n_informative=3, n_redundant=1,flip_y=0,n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10)df = pd.DataFrame(X)
df['target'] = y
# 查看類別分布
print("Original dataset shape:", df['target'].value_counts())# 隨機過采樣
ros = RandomOverSampler(random_state=42)
X_resampled_ros, y_resampled_ros = ros.fit_resample(X, y)
df_ros = pd.DataFrame(X_resampled_ros)
df_ros['target'] = y_resampled_ros
# 查看過采樣后的類別分布
print("Resampled dataset shape (Oversampling):", df_ros['target'].value_counts())#隨機負采樣
rus = RandomUnderSampler(random_state=42)
X_resampled_rus, y_resampled_rus = rus.fit_resample(X, y)
df_rus = pd.DataFrame(X_resampled_rus)
df_rus['target'] = y_resampled_rus
print("Resampled dataset shape (Undersampling):", df_rus['target'].value_counts())

2.SMOTE

通過在少數類樣本之間插值生成合成樣本,通常用于過采樣。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.over_sampling import SMOTE# 省略df
#......
# 過采樣
smote = SMOTE(random_state=42)X_resampled_smote, y_resampled_smote = smote.fit_resample(X, y)
df_smote = pd.DataFrame(X_resampled_smote)
df_smote['target'] = y_resampled_smote
print("Resampled dataset shape (SMOTE):", df_smote['target'].value_counts())

3.Tomek Links

這種方法是通過刪除多數類中靠近少數類的邊界樣本來實現欠采樣。工作原理如下:

計算最近鄰:對于每個樣本,計算其最近鄰樣本。

識別 Tomek Links:如果一個多數類樣本的最近鄰是一個少數類樣本,那么這兩個樣本構成一個 Tomek Link。

移除多數類樣本:從數據集中移除那些構成 Tomek Link 的多數類樣本。

重復上述步驟:直到沒有更多的 Tomek Links?

Tomek Links通過移除邊界上的多數類樣本,可以減少多數類樣本的數量,同時盡量保留數據集的結構信息。適用于處理那些多數類樣本與少數類樣本緊密相連的情況。但是同時Tomek Links不能完全平衡數據集,因為移除的樣本數量有限。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.under_sampling import TomekLinks# 初始化 TomekLinks
tomek = TomekLinks()# 欠采樣
X_resampled_tomek, y_resampled_tomek = tomek.fit_resample(X, y)df_tomek = pd.DataFrame(X_resampled_tomek)
df_tomek['target'] = y_resampled_tomek
print("Resampled dataset shape (Tomek Links):", df_tomek['target'].value_counts())

4.NearMiss

NearMiss 是一種基于最近鄰的欠采樣方法,用于處理不平衡數據集。它的核心思想是通過移除多數類中與少數類樣本距離較近的樣本,或者移除多數類中距離最遠的樣本,從而減少多數類的樣本數量。NearMiss 提供了多種策略來選擇需要移除的樣本。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.under_sampling import NearMiss# df#NearMiss 提供了三種策略:
#版本 1:移除多數類中與少數類樣本距離最近的樣本。
#版本 2:移除多數類中與少數類樣本距離最遠的樣本。
#版本 3:移除多數類中距離最遠的樣本,但不考慮少數類樣本。# 初始化 NearMiss,選擇版本 1
nearmiss = NearMiss(version=1, random_state=42)X_resampled_nearmiss, y_resampled_nearmiss = nearmiss.fit_resample(X, y)df_nearmiss = pd.DataFrame(X_resampled_nearmiss)
df_nearmiss['target'] = y_resampled_nearmiss
print("Resampled dataset shape (NearMiss Version 1):", df_nearmiss['target'].value_counts())

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

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

相關文章

fastadmin 數據導出,設置excel行高和限制圖片大小

fastadmin默認導出圖片全部都再一塊,而且不在單元格里 話不多說,上代碼 修改文件的路徑: /public/assets/js/require-table.js exportOptions: {fileName: export_ Moment().format("YYYY-MM-DD"),preventInjection: false,mso…

鴻蒙OSUniApp開發的商品詳情展示頁面(鴻蒙系統適配版)#三方框架 #Uniapp

使用UniApp開發的商品詳情展示頁面(鴻蒙系統適配版) 前言 隨著移動電商的普及,一個體驗良好的商品詳情頁對于提高用戶轉化率至關重要。本文將分享我在使用UniApp開發商品詳情頁時的實踐經驗,并特別關注如何適配鴻蒙系統&#xf…

redis中key的過期和淘汰

一、過期(redis主動刪除) 設置了ttl過期時間的key,在ttl時間到的時候redis會刪除過期的key。但是redis是惰性過期。惰性過期:redis并不會立即刪除過期的key,而是會在獲取key的時候判斷key是否過期,如果發現…

Qwen3 - 0.6B與Bert文本分類實驗:深度見解與性能剖析

Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news數據集Zero-Shot的效果。新增Qwen3-0.6B線性層分類方法的效果。調整Bert訓練參數(epoch、eval_steps),以實現更細致的觀察,避免嚴重過擬合的情況。 TODO: 利用Qwen3-0.6…

HTML應用指南:利用POST請求獲取全國京東快遞服務網點位置信息

京東快遞作為中國領先的智能供應鏈與綜合物流服務提供商,自2007年成立以來,始終致力于通過技術創新與高效運營,為客戶提供安全、可靠、快速的物流解決方案。京東快遞依托京東集團的強大資源支持,憑借其自營倉儲、干線運輸、末端配送一體化的物流網絡,在激烈的市場競爭中脫…

js中eval的用法風險與替代方案全面解析

1. 前言 在 JavaScript 里,eval是一個既強大又充滿爭議的函數。它為開發者提供了一種動態執行字符串代碼的能力,在某些特定場景下能發揮出獨特的作用。然而,由于其特殊的運行機制,也帶來了諸多潛在的風險和問題。本文將深入探討e…

antd樹結構

一、場景實現 1、左側為查詢條件,查詢條件為樹和多選。點擊查詢條件在右上方顯示搜索條件的內容,右上方查詢條件 tag 刪除后,左側條件也對應刪除。 2、樹結構:默認第一層下所有節點都展開。 1、頁面效果圖 2、查詢效果圖 二、前端…

Jenkins 安裝與配置指南

Jenkins 安裝與配置指南(MD 示例) markdown Jenkins 安裝與配置指南 ## 一、環境準備 1. **系統要求** - 操作系統:Linux/macOS/Windows - Java 版本:JDK 8 或更高(建議 JDK 11)2. **安裝方式** - **L…

[Linux性能優化] 線程卡頓優化。Linux加入USB(HID)熱插拔線程占用CPU優化。Linux中CPU使用率過高優化

文章目錄 [Linux性能優化] 線程卡頓優化。0、省流版本一、問題定位:CPU 資源分析二、線程卡頓現場復現線程優化前圖片 三、線程卡頓優化方向1.如果是輪詢方式2.如果是事件驅動方式 四、修改方式線程優化后圖片 [Linux性能優化] 線程卡頓優化。 0、省流版本 如果采…

ip與mac-數據包傳輸過程學習

你管這破玩意叫網絡? 內容來源于飛天閃客,以前沒有學習過網絡的相關基礎知識,只會去瞎設置,現在終于是弄明白了。 多臺電腦之間想要通信,可以直接通過一條網線進行連接。但是隨著網線的增加,這個就會比較…

數值分析知識重構

數值分析知識重構 一 Question 請構造一下數值分析中的誤差概念以及每一個具體數值方法的誤差是如何估計的? 二 Question 已知 n 1 n1 n1個數據點 ( x i , y i ) , i 0 , 1 , ? , n (x_i,y_i),i0,1,\cdots,n (xi?,yi?),i0,1,?,n,請使用多種方法建立數據之間…

使用 Qt QGraphicsView/QGraphicsScene 繪制色輪

使用 Qt QGraphicsView/QGraphicsScene 繪制色輪 本文介紹如何在 Qt 中利用 QGraphicsView 和 QGraphicsScene 實現基礎圓形繪制,以及進階的色輪(Color Wheel)效果。 色輪是色彩選擇器的常見控件,廣泛應用于圖形設計、繪畫和 UI …

移除鏈表元素數據結構oj題(力扣題206)

目錄 題目描述: 題目解讀(分析) 解決代碼 題目描述: 給你一個鏈表的頭節點 head 和一個整數 val ,請你刪除鏈表中所有滿足 Node.val val 的節點,并返回 新的頭節點 。 題目解讀(分析&#…

GLPK(GNU線性規劃工具包)中建模語言MathProg的使用

GNU MathProg是一種用于描述線性數學規劃模型的建模語言。用GNU MathProg語言編寫的模型描述由一組語句和數據塊組成。 在MathProg中,模型以集合、參數、變量、約束和目標(sets, parameters, variables, constraints, objectives稱為模型對象)的形式進行描述。 在Ma…

《Python星球日記》 第77天:模型部署與總結

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 目錄 一、模型部署技術1. 模型文件導出不同模型格式對比2. 使用Flask構建RESTful API3. 使用FastAPI構建高性能API4. 部署優化與最佳實踐二、部署架構…

【JavaWeb】MySQL(準備篇)

1 MySQL安裝 1.1 解壓 下載完成后我們得到的是一個壓縮包(所有文件均在文末安裝包中),將其解壓,我們就可以得到MySQL 8.0.34 的軟件本體了(就是一個文件夾),我們可以把它放在你想安裝的位置 。 1.2 配置 1.2.1 配置…

國產數據庫工具突圍:SQLynx如何解決Navicat的三大痛點?深度體驗報告

引言:Navicat的"中國困境" 當開發者面對達夢數據庫的存儲過程調試,或是在人大金倉中處理復雜查詢時,Navicat突然變得力不從心——這不是個例。 真實痛點:某政務系統遷移至OceanBase后,開發團隊發現Navicat無…

ETL數據集成產品選型需要關注哪些方面?

ETL(Extract,Transform,Load)工具作為數據倉庫和數據分析流程中的關鍵環節,其選型對于企業的數據戰略實施有著深遠的影響。谷云科技在 ETL 領域耕耘多年,通過自身產品的實踐應用,對 ETL 產品選型…

數據結構實驗10.1:內部排序的基本運算

文章目錄 一,實驗目的二,實驗內容1. 數據生成與初始化2. 排序算法實現(1)直接插入排序(2)二分插入排序(3)希爾排序(4)冒泡排序(5)快速…

從秒開到絲滑體驗!WebAssembly助力ZKmall商城重構 B2B2C 商城性能基線

在 B2B2C 電商領域,用戶對頁面加載速度與交互流暢度的要求日益嚴苛。傳統 Web 技術在處理復雜業務邏輯、海量數據渲染時,常出現卡頓、延遲等問題,導致用戶流失。ZKmall 商城創新性地引入 WebAssembly(簡稱 Wasm)技術&a…