不平衡数据集的分类步骤是什么?

时间:2019-04-12 06:07:18

标签: python machine-learning classification

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

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

Image of imbalanced class dataset

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

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

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

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)

1 个答案:

答案 0 :(得分:1)

像在评论中说的那样,我也认为这个问题并非真的适合SO。但是,仍然可以帮助您,您可以选择以下几种方法: 1)您可以照顾到数据的不平衡-对多数类进行欠采样,对少数类进行上采样等。您可以检查SMOTE。

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

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