日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

如何用 Python 處理不平衡數(shù)據(jù)集

瀏覽:203日期:2022-06-30 14:28:23
1. 什么是數(shù)據(jù)不平衡

所謂的數(shù)據(jù)不平衡(imbalanced data)是指數(shù)據(jù)集中各個類別的數(shù)量分布不均衡;不平衡數(shù)據(jù)在現(xiàn)實任務(wù)中十分的常見。如

信用卡欺詐數(shù)據(jù):99%都是正常的數(shù)據(jù), 1%是欺詐數(shù)據(jù) 貸款逾期數(shù)據(jù)

不平衡數(shù)據(jù)一般是由于數(shù)據(jù)產(chǎn)生的原因?qū)е碌模悇e少的樣本通常是發(fā)生的頻率低,需要很長的周期進行采集。

在機器學習任務(wù)(如分類問題)中,不平衡數(shù)據(jù)會導(dǎo)致訓練的模型預(yù)測的結(jié)果會偏向于樣本數(shù)量多的類別,這個時候除了要選擇合適的評估指標外,想要提升模型的性能,就要對數(shù)據(jù)和模型做一些預(yù)處理。

處理數(shù)據(jù)不平衡的主要方法:

欠采樣 過采樣 綜合采樣 模型集成

調(diào)整類別權(quán)重或者樣本權(quán)重

2. 數(shù)據(jù)不平衡處理方法

imbalanced-learn庫提供了許多不平衡數(shù)據(jù)處理的方法,本文的例子都以imbalanced-learn庫來實現(xiàn)。

pip install -U imbalanced-learn

https://github.com/scikit-learn-contrib/imbalanced-learn

本文例子的數(shù)據(jù)來自進行中的比賽山東省第二屆數(shù)據(jù)應(yīng)用創(chuàng)新創(chuàng)業(yè)大賽-日照分賽場-公積金貸款逾期預(yù)測

先來看下數(shù)據(jù)

import pandas as pdtrain_data = ’./data/train.csv’test_data = ’./data/test.csv’train_df = pd.read_csv(train_data)test_df = pd.read_csv(test_data)print(train_df.groupby([’label’]).size())# label為是否違約, 1為違約, 0為非違約# label# 0 37243# 1 2757

如何用 Python 處理不平衡數(shù)據(jù)集

2.1 欠采樣

所謂欠采樣,就是將數(shù)量多類別(記為majority)的樣本進行抽樣,使之數(shù)量與數(shù)量少的類別(minority)的數(shù)量相當,以此達到數(shù)量的平衡。

如何用 Python 處理不平衡數(shù)據(jù)集

由于欠采樣是丟失了一部分數(shù)據(jù),不可避免的使得數(shù)量多類別樣本的分布發(fā)生了變化(方差變大)。好的欠采樣策略應(yīng)該盡可能保持原有數(shù)據(jù)分布。

欠采樣是刪除majority的樣本,那哪些樣本可以刪除呢?

一種是overlapping的數(shù)據(jù),就是多余的數(shù)據(jù) 一種是干擾的數(shù)據(jù),干擾minority的分布

基于此,有兩種思路來欠采樣

邊界相鄰匹配,考慮在近鄰空間內(nèi)刪除majority樣本,方法如TomekLinks, NearMiss

下面這張圖,展示6NN(6個最近鄰居)

如何用 Python 處理不平衡數(shù)據(jù)集

這里重點講下TomekLinks, TomekLinks方法簡單的說:對每一個minority樣本找1NN(最近的鄰居),如果最近的鄰居是majority, 就形成一個tome-links,該方法人為這個majority是干擾的,將它刪除。

如何用 Python 處理不平衡數(shù)據(jù)集

from imblearn.under_sampling import TomekLinksX_train = train_df.drop([’id’, ’type’], axis=1)y = train_df[’label’]tl = TomekLinks()X_us, y_us = tl.fit_sample(X_train, y)print(X_us.groupby([’label’]).size())# label# 0 36069# 1 2757

從上可知, 有1174個tomek-link被刪除,好像刪除還不夠多,可以測試下是否對分類結(jié)果有幫助。需要注意的因為需要計算最近鄰,所以樣本屬性必須數(shù)值屬性,或者可以轉(zhuǎn)化為數(shù)值屬性。

聚類

這類方法通過多個聚類,把原始樣本劃分成多個聚類簇,然后用每個聚類簇的中心來代替這個聚類簇的特性,完成采樣的目的。可知,這種采樣的樣本不是來自原始樣本集,而是聚類生成的。

from imblearn.under_sampling import ClusterCentroids cc = ClusterCentroids(random_state=42)X_res, y_res = cc.fit_resample(X_train, y)X_res.groupby([’label’]).size()# label# 0 2757# 1 2757

im-balance提供的欠采樣的方法如下:

Random majority under-sampling with replacement Extraction of majority-minority Tomek links Under-sampling with Cluster Centroids NearMiss-(1 & 2 & 3) Condensed Nearest Neighbour One-Sided Selection Neighboorhood Cleaning Rule Edited Nearest Neighbours Instance Hardness Threshold Repeated Edited Nearest Neighbours AllKNN 2.2 過采樣

所謂過采樣,就是將數(shù)量少的類別(minority)的樣本進行copy,使之數(shù)量與數(shù)量多的類別(majortity)的數(shù)量相當,以此達到數(shù)量的平衡。由于復(fù)制了多份minoruty樣本,過采樣會改變minority方差。

如何用 Python 處理不平衡數(shù)據(jù)集

過采樣一種簡單的方式是隨機copy minority的樣本;另外一種是根據(jù)現(xiàn)有樣本生成人造樣本。這里介紹人造樣本的經(jīng)典算法SMOTE(Synthetic Minority Over-sampling Technique)。

SMOTE基于minority樣本相似的特征空間構(gòu)造新的人工樣本。步驟如下:

選擇一個minority樣本,計算其KNN鄰居 在K個鄰居中,隨機選擇一個近鄰 修改某一個特征,偏移一定的大小:偏移的大小為該minority樣本與該近鄰差距乘以一個小的隨機比率(0, 1), 就此生成新樣本

如何用 Python 處理不平衡數(shù)據(jù)集

from imblearn.over_sampling import SMOTEsmote = SMOTE(k_neighbors=5, random_state=42)X_res, y_res = smote.fit_resample(X_train, y)X_res.groupby([’label’]).size()# label# 0 37243# 1 37243

對于SMOTE方法,對每一個minority都會構(gòu)造新樣本。但是并不總是這樣的,考慮下面A,B,C三個點。從數(shù)據(jù)分布來看,C點很可能是一個異常點(Noise),B點是正常分布的點(SAFE),而A點分布在邊界位置(DANGER);

直觀上,對于C點我們不應(yīng)該去構(gòu)造新樣本,對B點,構(gòu)造新樣本不會豐富minority類別的分布。只有A點,如果構(gòu)造新樣本能夠使得A點從(DANGER)到(SAFE),加強minority類別的分類邊界。這個就是Borderline-SMOTE

如何用 Python 處理不平衡數(shù)據(jù)集

from imblearn.over_sampling import BorderlineSMOTEbsmote = BorderlineSMOTE(k_neighbors=5, random_state=42)X_res, y_res = bsmote.fit_resample(X_train, y)X_res.groupby([’label’]).size()# label# 0 37243# 1 37243

ADASYN方法從保持樣本分布的角度來確定生成數(shù)據(jù),生成數(shù)據(jù)的方式和SMOTE是一樣的,不同在于每個minortiy樣本生成樣本的數(shù)量不同。

先確定要生成樣本的數(shù)量 beta為[0, 1]

如何用 Python 處理不平衡數(shù)據(jù)集

對每個每個minortiy樣本,確定有它生成樣本的比例。先找出K最近鄰,計算K最近鄰中屬于majority的樣本比例(即分子),Z是歸一化因子,保證所有的minortiry的比例和為1,可以認為是所有分子的和。

如何用 Python 處理不平衡數(shù)據(jù)集

計算每個minortiy生成新樣本的數(shù)量

如何用 Python 處理不平衡數(shù)據(jù)集

按照SMOTE方式生成樣本

from imblearn.over_sampling import ADASYN adasyn = ADASYN(n_neighbors=5, random_state=42)X_res, y_res = adasyn.fit_resample(X_train, y)X_res.groupby([’label’]).size()# label# 0 37243# 1 36690

im-balance提供的過采樣的方法如下(包括SMOTE算法的變種):

Random minority over-sampling with replacement SMOTE - Synthetic Minority Over-sampling Technique SMOTENC - SMOTE for Nominal Continuous bSMOTE(1 & 2) - Borderline SMOTE of types 1 and 2 SVM SMOTE - Support Vectors SMOTE ADASYN - Adaptive synthetic sampling approach for imbalanced learning KMeans-SMOTE ROSE - Random OverSampling Examples 2.3 綜合采樣

過采樣是針對minority樣本,欠采樣是針對majority樣本;而綜合采樣是既對minority樣本,又對majority樣本,同時進行操作的方法。主要有SMOTE+Tomek-links和SMOTE+Edited Nearest Neighbours。

綜合采樣的方法,是先進行過采樣,在進行欠采樣。

from imblearn.combine import SMOTETomeksmote_tomek = SMOTETomek(random_state=0)X_res, y_res = smote_tomek.fit_sample(X_train, y)X_res.groupby([’label’]).size()# label# 0 36260# 1 362602.4 模型集成

這里的模型集成主要體現(xiàn)在數(shù)據(jù)上,即用眾多平衡的數(shù)據(jù)集(majortiry的樣本進行欠采樣加上minority樣本)訓練多個模型,然后進行集成。imblearn.ensemble提供幾種常見的模型集成算法,如BalancedRandomForestClassifier

from imblearn.ensemble import BalancedRandomForestClassifierfrom sklearn.datasets import make_classificationX, y = make_classification(n_samples=1000, n_classes=3, n_informative=4, weights=[0.2, 0.3, 0.5], random_state=0)clf = BalancedRandomForestClassifier(max_depth=2, random_state=0)clf.fit(X, y) print(clf.feature_importances_) print(clf.predict([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]))

im-balance提供的模型集成的方法如下

Easy Ensemble classifier Balanced Random Forest Balanced Bagging RUSBoost2.5 調(diào)整類別權(quán)重或者樣本權(quán)重

對于很多用梯度下降方法來學習(使得某個損失Loss最小)的機器學習的方法,可以通過調(diào)整類別權(quán)重或樣本權(quán)重的方式,來一定程度上平衡不平衡數(shù)據(jù)。如gbdt模型lightgbm 中 class_weight

import lightgbm as lgbclf = lgb.LGBMRegressor(num_leaves=31, min_child_samples= np.random.randint(20,25),max_depth=25,learning_rate=0.1, class_weight={0:1, 1:10},n_estimators=500, n_jobs=30)3. 總結(jié)

本文分享了常見的幾種處理不平衡數(shù)據(jù)集的方法,并且提供imbalanced-learn的簡單例子。總結(jié)如下:

欠采樣: 減少majoritry樣本 過采樣:增加minority樣本 綜合采樣:先過采樣,在欠采樣 模型集成:制造平衡數(shù)據(jù)(majoritry樣本欠采樣+minority樣本),多次不同的欠采樣,訓練不同的模型,然后融合 不管是欠采樣和過采樣,都一定程度的改變了原始數(shù)據(jù)的分布,可能造成模型過擬合。需要去嘗試哪種方法,符合實際的數(shù)據(jù)分布。當然不一定有效果,去勇敢嘗試吧 just do it! 4. 參考資料 Learning from Imbalanced Data Two Modifications of CNN(Tomek links,CNN乍一看還以為卷積神經(jīng)網(wǎng)絡(luò),其實是condensed nearest-neighbor) imbalanced-learn API:https://imbalanced-learn.org/stable/

以上就是如何用 Python 處理不平衡數(shù)據(jù)集的詳細內(nèi)容,更多關(guān)于Python 處理不平衡數(shù)據(jù)集的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品一级| 亚洲电影有码| 国产一区日韩欧美| 欧洲亚洲一区二区三区| 精品国产一区二| 精品一区av| 超级白嫩亚洲国产第一| 久久uomeier| 99在线|亚洲一区二区| 免费日韩av| 欧美日韩精品一本二本三本| 亚洲精品午夜av福利久久蜜桃| 国产一区二区高清| 国产日韩欧美三级| 极品av在线| 久久国产99| 国产一卡不卡| 神马午夜在线视频| 国产婷婷精品| 国产探花一区| 99久久精品网| 日韩精品欧美大片| 久久精品色播| 日韩在线播放一区二区| 国产精品中文字幕制服诱惑| 国产一区一一区高清不卡| 美女亚洲一区| 美女在线视频一区| 91久久久精品国产| 国产福利亚洲| 亚洲一区二区小说| 水蜜桃精品av一区二区| 亚洲久久在线| 激情久久中文字幕| 欧美精品97| 久久亚洲风情| 99久久久国产精品美女| 久久中文在线| 日本久久一区| 国产视频一区三区| 精品一区二区三区亚洲| 国产亚洲欧洲| 激情黄产视频在线免费观看| 欧美性www| 亚洲狼人精品一区二区三区| 欧美手机在线| 日韩免费看片| 精品一区二区男人吃奶| 国产一区二区亚洲| 午夜在线视频一区二区区别| 成人一区不卡| 欧美激情在线精品一区二区三区| 石原莉奈在线亚洲二区| 国精品一区二区| 欧美日韩精品免费观看视欧美高清免费大片| 蜜臀av一区二区在线免费观看| 色在线中文字幕| 国产资源在线观看入口av| 欧美韩一区二区| 韩国一区二区三区视频| 麻豆精品av| 亚洲+小说+欧美+激情+另类| 蜜桃久久精品一区二区| 国产精品巨作av| 国产欧美一区二区色老头| 亚洲美女91| 日韩视频在线一区二区三区| 一本一道久久a久久精品蜜桃| 国产精品视频3p| 国产伦一区二区三区| 欧美日韩一二三四| 成人国产精品久久| 日韩理论视频| 亚洲精品一区二区妖精| 免费一级片91| 97se亚洲| 国产精品久久久久久久免费观看| 久草免费在线视频| 亚洲精品中文字幕乱码| 亚洲精品日本| 国产精品1区在线| 色综合www| 免费看黄色91| 久久精品国产久精国产| 蜜臀国产一区| 毛片在线网站| 黄色日韩在线| 91嫩草精品| 神马日本精品| 日本欧美一区| 欧美日韩尤物久久| 日韩欧美2区| 欧美日韩一二三四| 日本三级亚洲精品| 日韩在线二区| 青草久久视频| 亚洲激情中文| 老牛国内精品亚洲成av人片| 日本高清不卡一区二区三区视频| 视频在线观看一区| 精品国产欧美| 亚洲有吗中文字幕| 激情视频网站在线播放色| 蜜桃视频免费观看一区| 欧美成人精品三级网站| 国产剧情一区二区在线观看| 亚洲欧洲日本mm| 国产aⅴ精品一区二区三区久久| 欧美综合国产| 亚洲91久久| 国产aⅴ精品一区二区四区| 日韩手机在线| 亚洲综合五月| 另类国产ts人妖高潮视频| 欧美日韩精品免费观看视完整| 久久国际精品| 日韩专区欧美专区| 日韩成人高清| 国产999精品在线观看| 久久精品97| 国产精品一区二区美女视频免费看| 亚洲欧美日本视频在线观看| 成人羞羞视频在线看网址| 欧美在线影院| 免费国产自久久久久三四区久久| 国产91在线播放精品| 精品中文在线| 美女国产一区二区三区| 国产精品一卡| 国产极品久久久久久久久波多结野| 日韩精品一级二级| 在线精品亚洲| 91精品视频一区二区| 国产精品一区二区中文字幕| 国产精品任我爽爆在线播放| 国产精品白丝久久av网站| 国产成人久久精品麻豆二区 | 久久中文字幕导航| 欧美aa在线视频| 欧美激情三区| 日韩午夜av在线| 国产精品嫩模av在线| 99国产精品99久久久久久粉嫩| 国产精品午夜一区二区三区| 日本不卡一区二区三区| 国产精品av一区二区| 久久精选视频| 国产中文在线播放| 久久网站免费观看| 婷婷六月综合| 蜜臀va亚洲va欧美va天堂| 婷婷综合成人| 久久久久九九精品影院| 久久网站免费观看| 中文字幕av一区二区三区四区| 国产精品porn| 国产精品videossex久久发布 | 亚洲免费专区| 高清av一区| 亚洲免费影视| 福利一区二区免费视频 | 日韩国产欧美一区二区三区| 日本а中文在线天堂| 亚洲人成网77777色在线播放 | 精品资源在线| 另类激情亚洲| 日韩一区亚洲二区| 国产精选久久| 亚洲天堂免费| 欧美成人国产| 久久超级碰碰| 热久久免费视频| 亚洲午夜黄色| 老司机精品视频网| 日韩免费精品| 99综合视频| 六月婷婷综合| 久久国产66| 久久久水蜜桃av免费网站| 国产欧美日韩一区二区三区在线| 99久久久久| 九色porny丨国产首页在线| 日韩激情av在线| 激情综合网五月| 91av亚洲| 国产精品porn| 中文亚洲欧美| 日韩中文字幕高清在线观看| 亚洲精品日本| 中文字幕亚洲精品乱码| 99re国产精品| 国产精品久久久久久久免费观看 | 老牛国内精品亚洲成av人片| 日本99精品| 久久国产人妖系列| 麻豆国产欧美一区二区三区| 色婷婷成人网| 欧美日韩在线精品一区二区三区激情综合| 妖精视频成人观看www| 国产国产精品|