使用Python實現(xiàn)數(shù)據(jù)重采樣的示例代碼
什么是數(shù)據(jù)重采樣
數(shù)據(jù)重采樣是一種用于調(diào)整數(shù)據(jù)集大小或分布的技術(shù)。它涉及通過增加或減少數(shù)據(jù)點的數(shù)量來修改現(xiàn)有數(shù)據(jù)集。數(shù)據(jù)重采樣主要用于解決類不平衡等問題,其中一個類的樣本明顯少于另一個類,或者為訓練機器學習模型準備數(shù)據(jù)。
以下是數(shù)據(jù)重采樣的一些方法:
類不平衡校正:它有助于糾正分類任務中的類不平衡問題。它確保每個類在數(shù)據(jù)集中有適當?shù)谋硎?,防止模型偏向多?shù)類。
模型訓練和驗證:重采樣技術(shù)可以幫助確保模型在具有均衡類分布的數(shù)據(jù)集上進行訓練和驗證。它導致更可靠和無偏見的模型評估。
增強泛化:它可以通過提供更多的學習示例來提高模型泛化到新的、看不見的數(shù)據(jù)的能力,特別是對于代表性不足的類。
數(shù)據(jù)重采樣技術(shù)
重采樣有兩種主要技術(shù):
- 過采樣
- 欠采樣
過采樣包括:
隨機過采樣:在該方法中,少數(shù)類的隨機實例被復制以匹配多數(shù)類中的實例的數(shù)量。雖然簡單,但它可能導致過擬合。
SMOTE(合成少數(shù)過采樣技術(shù)):SMOTE通過在現(xiàn)有實例之間插值來生成少數(shù)類的合成樣本。它創(chuàng)建新的數(shù)據(jù)點,這些數(shù)據(jù)點是特征空間中相鄰數(shù)據(jù)點的組合。
ADASYN(自適應合成采樣):ADASYN是SMOTE的擴展,專注于通過賦予它們更多權(quán)重來為難以學習的實例生成合成樣本。
欠采樣包括:
隨機欠采樣:從多數(shù)類中隨機刪除實例,以匹配少數(shù)類中的實例數(shù)。如果刪除的實例太多,可能會導致信息丟失。
簇質(zhì)心:該方法識別多數(shù)類中的聚類并將其替換為聚類的質(zhì)心,有效地減少了多數(shù)類中的實例數(shù)量。
使用Python進行數(shù)據(jù)重采樣
現(xiàn)在,讓我們看看如何通過實現(xiàn)數(shù)據(jù)重采樣技術(shù),使用Python對數(shù)據(jù)集進行重采樣。
首先創(chuàng)建一個不平衡的數(shù)據(jù)集,然后實現(xiàn)SMOTE來重新采樣數(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)建了一個帶有兩個類(0和1)的示例不平衡數(shù)據(jù)集。然后,我們應用來自不平衡學習庫的SMOTE為少數(shù)類生成合成樣本。sampling_strategy參數(shù)設(shè)置為auto,這確保創(chuàng)建的合成樣本數(shù)等于大多數(shù)類中的樣本數(shù),從而平衡類分布。
總結(jié)
因此,數(shù)據(jù)重采樣是一種用于調(diào)整數(shù)據(jù)集大小或分布的技術(shù)。它涉及通過增加或減少數(shù)據(jù)點的數(shù)量來修改現(xiàn)有數(shù)據(jù)集。重采樣主要用于解決類不平衡等問題,其中一個類的樣本明顯少于另一個類,或者為訓練機器學習模型準備數(shù)據(jù)集。
到此這篇關(guān)于使用Python實現(xiàn)數(shù)據(jù)重采樣的示例代碼的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)重采樣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中asyncio處理異步IO的實現(xiàn)示例
本文主要介紹python中asyncio處理異步IO的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-11-11
淺談keras中的keras.utils.to_categorical用法
這篇文章主要介紹了淺談keras中的keras.utils.to_categorical用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
PyG搭建GCN模型實現(xiàn)節(jié)點分類GCNConv參數(shù)詳解
這篇文章主要為大家介紹了PyG搭建GCN模型實現(xiàn)節(jié)點分類GCNConv參數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module 
這篇文章給大家介紹了Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module named ‘pymssql‘的解決方法,如果有遇到相同問題的朋友可以參考閱讀一下本文2023-10-10

