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

标签 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)

最佳答案

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

2) 对于训练和测试拆分,保持训练和测试之间的分布相同非常重要,以便获得反射(reflect)真实数据的良好结果。 Scikit-learn 具有 StratifySplit,可以让您代替常规的 train_test_split 来执行此操作。

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

关于python - 不平衡数据集的分类步骤是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55645437/

相关文章:

python - 你能帮我在 pyBrain 中线性激活我的简单分类器神经网络吗?

python - 填充 DataFrame Pandas Python

python - 使用 tensorflow 层,模型未经过训练

python - 多项式长除法

R 机器学习服务器 - RevoScaleR 错误

scala - Spark 加载决策树数据 - 更改 LabelledPoint 中的标签

python - 使用 GDAL 和 Python 的最小距离算法

python - 使用正则表达式抓取每次出现的内容

python - 需要有关 RNN 模型格式化字符串的建议

r - 在 R 中使用 k-NN(类包)的最近邻索引