【问题标题】:What is the steps of classification of imbalanced dataset?不平衡数据集的分类步骤是什么?
【发布时间】:2019-09-02 20:28:57
【问题描述】:

我需要熟悉我所面临问题的任何人的帮助。

我想使用 SVM、随机森林和深度神经网络 (DNN) 对两个不同的数据集进行分类。我的一个数据集是平衡的,另一个数据是高度不平衡的。下面是我的数据集的图像,它的分类不平衡。

我想比较用于这两种数据的所有机器学习的分类结果。哪个数据集产生更好的分类结果。对于平衡数据集,我没有问题导致正常处理它的方式,但对于不平衡我有点困惑。

我的问题是我对使用不平衡数据进行分类的步骤感到困惑。据我所知,要处理不平衡的数据,我们应该进行抽样。

我必须先分类并获得结果,还是应该先进行过采样并分类并获得结果?使用不平衡数据集进行分类的正确步骤是什么?我希望任何人都可以帮助我,因为我还是这个领域的新手。

import numpy as np
import pandas as pd 
import seaborn as sns   
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report


data=pd.read_csv("ImbalancedData.csv")


y = data.Class
x = data.drop('Class,axis=1)


x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3)

【问题讨论】:

  • datascience.stackexchange.com 会是一个更好的网站,我想他们可能已经有关于如何处理不平衡数据进行分类的问题和答案
  • 您的 1 个班级有多少样本?这种巨大的类不平衡在异常检测中很常见,它有一些处理它的技术。就像将其制定为一类问题(仅训练模型 0 类),然后在两者上进行验证/测试
  • @jonnor 对于第 0 类有 126,348 个样本,第 1 类是 1,840 个样本。

标签: python machine-learning classification


【解决方案1】:

就像在 cmets 中所说,我也认为这个问题并不适合 SO。但是,仍然可以帮助您,您有几个选择: 1)您可以处理数据的不平衡 - 对多数类进行欠采样,对少数类进行上采样等。您可以检查 SMOTE。

2) 对于您的训练和测试拆分,重要的是要保持训练和测试之间的分布相同,以便获得反映真实数据的良好结果。 Scikit-learn 有 StrattifySplit,可以让你做到这一点,而不是常规的 train_test_split。

3) 您可以使用他已知的特定模型来很好地处理不平衡数据,并像解决异常检测问题一样解决它。查看隔离森林、局部异常因子、自动编码器(无监督)等,它们可以为您提供更好的结果。请记住,还有许多其他参数和超参数需要调整。

【讨论】:

    猜你喜欢
    • 2020-08-30
    • 2015-01-28
    • 2019-11-05
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    相关资源
    最近更新 更多