多类分类问题中的不平衡 – 四个目标层次

我的数据存在不平衡,如下所示,每次尝试使用ADASYN时都会显示错误,是否需要为此提供任何参数?有时它会运行很长时间,但即使代码运行了40分钟后也没有响应。

                     counts  percentageEnquiry Assigned      91284   75.902382Test Drive Provided   25274   21.015258Test Drive Arranged    3434    2.855361Booked                  266    0.221178Test Ride Provided        7    0.005820

请建议我们如何使用Python代码来解决这个问题。根据他人的推荐,我听说过以下几种方法:

  1. 可以一次对两个层次进行采样,然后在此基础上进行迭代
  2. 对占75%的数据进行下采样可能会有帮助?
  3. 或者使用skmultilearn的任何解决方案?

代码:

def makeOverSamplesADASYN(X,y):    #X →独立变量在DataFrame中     #y →依赖变量在Pandas DataFrame格式中     from imblearn.over_sampling import ADASYN      sm = ADASYN(sampling_strategy='all', random_state=None, n_neighbors=5, n_jobs=1, ratio=None)         X_adassin, y_adassin = sm.fit_resample(X, y) makeOverSamplesADASYN(X,data_dummyvar['Sales Stage']) print(X_adassin.shape) print(y_adassin.shape)'''   

输出===> 这需要运行很长时间且之后没有结果,请建议


回答:

我使用下面的代码对顶部条目进行了一次下采样。

### " data_dummyvar " 是我的DataFrame,形状为 (120265, 894)df_majority=data_dummyvar[data_dummyvar['Sales Stage']=='Enquiry Assigned']df_majority.shapefrom sklearn.utils import resample# 下采样多数类df_majority_downsampled = resample(df_majority,replace=False,n_samples=25289,random_state=123)                                   #replace: 不替换抽样# n_samples: 匹配少数类#random_state: 可重现结果df_majority_downsampled.shapedf_minority=data_dummyvar[data_dummyvar['Sales Stage'] !='Enquiry Assigned']df_minority['Sales Stage'].value_counts()df_first_scaling = pd.concat([df_majority_downsampled,df_minority],ignore_index=True)g = df_first_scaling['Sales Stage']df = pd.concat([g.value_counts(),              g.value_counts(normalize=True).mul(100)],axis=1, keys=('counts','percentage'))print (df)

上述代码将给出如下结果:输出 ===>>

                        counts  percentageEnquiry Assigned      25289   46.598489Test Drive Provided   25281   46.583748Test Drive Arranged    3434    6.327621Booked                  266    0.490142

这里的’Enquiry Assigned’条目已被下采样。

现在我们需要对我们的数据”df_first_scaling”运行两次SMOTE/ADASYN类似的算法,因为我们还有以下三个条目

def makeOverSamplesADASYN(X,y):   #输入DataFrame   #X →独立变量在DataFrame中   #y →依赖变量在Pandas DataFrame格式中   from imblearn.over_sampling import ADASYN    sm = ADASYN(sampling_strategy='minority', random_state=None, n_neighbors=5, n_jobs=1, ratio=None)   global X_adassin_1   global y_adassin_1   X_adassin_1, y_adassin_1 = sm.fit_resample(X, y)makeOverSamplesADASYN(X,df_first_scaling['Sales Stage']) # 函数调用print(X_adassin_1.shape)print(y_adassin_1.shape)

这给出的输出形状为==>

(79334, 893)(79334,) 

在对更新后的数据集再次运行相同的代码后,我们可以得到形状为(101229, 893) & (101229,)的样本DataFrame

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注