使用Python實(shí)現(xiàn)數(shù)據(jù)重采樣的示例代碼
什么是數(shù)據(jù)重采樣
數(shù)據(jù)重采樣是一種用于調(diào)整數(shù)據(jù)集大小或分布的技術(shù)。它涉及通過(guò)增加或減少數(shù)據(jù)點(diǎn)的數(shù)量來(lái)修改現(xiàn)有數(shù)據(jù)集。數(shù)據(jù)重采樣主要用于解決類不平衡等問(wèn)題,其中一個(gè)類的樣本明顯少于另一個(gè)類,或者為訓(xùn)練機(jī)器學(xué)習(xí)模型準(zhǔn)備數(shù)據(jù)。
以下是數(shù)據(jù)重采樣的一些方法:
類不平衡校正:它有助于糾正分類任務(wù)中的類不平衡問(wèn)題。它確保每個(gè)類在數(shù)據(jù)集中有適當(dāng)?shù)谋硎?,防止模型偏向多?shù)類。
模型訓(xùn)練和驗(yàn)證:重采樣技術(shù)可以幫助確保模型在具有均衡類分布的數(shù)據(jù)集上進(jìn)行訓(xùn)練和驗(yàn)證。它導(dǎo)致更可靠和無(wú)偏見(jiàn)的模型評(píng)估。
增強(qiáng)泛化:它可以通過(guò)提供更多的學(xué)習(xí)示例來(lái)提高模型泛化到新的、看不見(jiàn)的數(shù)據(jù)的能力,特別是對(duì)于代表性不足的類。
數(shù)據(jù)重采樣技術(shù)
重采樣有兩種主要技術(shù):
- 過(guò)采樣
- 欠采樣
過(guò)采樣包括:
隨機(jī)過(guò)采樣:在該方法中,少數(shù)類的隨機(jī)實(shí)例被復(fù)制以匹配多數(shù)類中的實(shí)例的數(shù)量。雖然簡(jiǎn)單,但它可能導(dǎo)致過(guò)擬合。
SMOTE(合成少數(shù)過(guò)采樣技術(shù)):SMOTE通過(guò)在現(xiàn)有實(shí)例之間插值來(lái)生成少數(shù)類的合成樣本。它創(chuàng)建新的數(shù)據(jù)點(diǎn),這些數(shù)據(jù)點(diǎn)是特征空間中相鄰數(shù)據(jù)點(diǎn)的組合。
ADASYN(自適應(yīng)合成采樣):ADASYN是SMOTE的擴(kuò)展,專注于通過(guò)賦予它們更多權(quán)重來(lái)為難以學(xué)習(xí)的實(shí)例生成合成樣本。
欠采樣包括:
隨機(jī)欠采樣:從多數(shù)類中隨機(jī)刪除實(shí)例,以匹配少數(shù)類中的實(shí)例數(shù)。如果刪除的實(shí)例太多,可能會(huì)導(dǎo)致信息丟失。
簇質(zhì)心:該方法識(shí)別多數(shù)類中的聚類并將其替換為聚類的質(zhì)心,有效地減少了多數(shù)類中的實(shí)例數(shù)量。
使用Python進(jìn)行數(shù)據(jù)重采樣
現(xiàn)在,讓我們看看如何通過(guò)實(shí)現(xiàn)數(shù)據(jù)重采樣技術(shù),使用Python對(duì)數(shù)據(jù)集進(jìn)行重采樣。
首先創(chuàng)建一個(gè)不平衡的數(shù)據(jù)集,然后實(shí)現(xiàn)SMOTE來(lái)重新采樣數(shù)據(jù),將其轉(zhuǎn)換為平衡的數(shù)據(jù)集。
import numpy as np
import pandas as pd
# Install imbalanced-learn using: pip install imbalanced-learn
from imblearn.over_sampling import SMOTE
# Create a sample imbalanced dataset with two classes (0 and 1)
np.random.seed(42)
X = np.random.rand(100, 2)
y = np.array([0] * 90 + [1] * 10)
# Apply SMOTE to generate synthetic samples for the minority class
smote = SMOTE(sampling_strategy='auto')
X_resampled, y_resampled = smote.fit_resample(X, y)
# Print the class distribution after SMOTE
print("Class Distribution after SMOTE:")
print(pd.Series(y_resampled).value_counts())
輸出
Class Distribution after SMOTE:
0 90
1 90
dtype: int64
在這段代碼中,我們創(chuàng)建了一個(gè)帶有兩個(gè)類(0和1)的示例不平衡數(shù)據(jù)集。然后,我們應(yīng)用來(lái)自不平衡學(xué)習(xí)庫(kù)的SMOTE為少數(shù)類生成合成樣本。sampling_strategy參數(shù)設(shè)置為auto,這確保創(chuàng)建的合成樣本數(shù)等于大多數(shù)類中的樣本數(shù),從而平衡類分布。
總結(jié)
因此,數(shù)據(jù)重采樣是一種用于調(diào)整數(shù)據(jù)集大小或分布的技術(shù)。它涉及通過(guò)增加或減少數(shù)據(jù)點(diǎn)的數(shù)量來(lái)修改現(xiàn)有數(shù)據(jù)集。重采樣主要用于解決類不平衡等問(wèn)題,其中一個(gè)類的樣本明顯少于另一個(gè)類,或者為訓(xùn)練機(jī)器學(xué)習(xí)模型準(zhǔn)備數(shù)據(jù)集。
到此這篇關(guān)于使用Python實(shí)現(xiàn)數(shù)據(jù)重采樣的示例代碼的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)重采樣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中asyncio處理異步IO的實(shí)現(xiàn)示例
本文主要介紹python中asyncio處理異步IO的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-11-11
pytorch自動(dòng)求梯度autograd的實(shí)現(xiàn)
autograd是一個(gè)自動(dòng)微分引擎,它可以自動(dòng)計(jì)算張量的梯度,本文主要介紹了pytorch自動(dòng)求梯度autograd的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2025-04-04
淺談keras中的keras.utils.to_categorical用法
這篇文章主要介紹了淺談keras中的keras.utils.to_categorical用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
解決每次打開(kāi)pycharm直接進(jìn)入項(xiàng)目的問(wèn)題
今天小編就為大家分享一篇解決每次打開(kāi)pycharm直接進(jìn)入項(xiàng)目的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python實(shí)現(xiàn)水仙花數(shù)實(shí)例講解
這篇文章主要介紹了python實(shí)現(xiàn)水仙花數(shù)實(shí)例講解,有正在學(xué)習(xí)python的同學(xué)可以跟著小編一起來(lái)學(xué)習(xí)下水仙花數(shù)怎么用python計(jì)算吧2021-03-03
PyG搭建GCN模型實(shí)現(xiàn)節(jié)點(diǎn)分類GCNConv參數(shù)詳解
這篇文章主要為大家介紹了PyG搭建GCN模型實(shí)現(xiàn)節(jié)點(diǎn)分類GCNConv參數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
pip 安裝庫(kù)比較慢的解決方法(國(guó)內(nèi)鏡像)
對(duì)于Python開(kāi)發(fā)用戶來(lái)講,PIP安裝軟件包是家常便飯。但國(guó)外的源下載速度實(shí)在太慢,浪費(fèi)時(shí)間。而且經(jīng)常出現(xiàn)下載后安裝出錯(cuò)問(wèn)題,所以把PIP安裝源替換成國(guó)內(nèi)鏡像,可以大幅提升下載速度,還可以提高安裝成功率2019-10-10
Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module 
這篇文章給大家介紹了Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pymssql‘的解決方法,如果有遇到相同問(wèn)題的朋友可以參考閱讀一下本文2023-10-10

