Python 如何确定我的数据集是否平衡?

Python 如何确定我的数据集是否平衡?,python,pandas,dataframe,Python,Pandas,Dataframe,我创建了贷款风险预测python机器学习模型,用于预测借款人是否能够支付银行贷款。我的模型工作得非常好,有78%的准确率。然而,我的教授告诉我,首先我必须检查我的数据集是否平衡(如果不平衡,则从IMBRearn库应用SMOTE)。主要问题是我不知道如何检查是否平衡。如果有人知道如何检查,请告诉我 数据集链接:- (我用来创建模型的这个数据集)简单地说,您需要检查目标变量中存在的类是否不平衡 例如: 如果您检查DEATH_EVENT=1和DEATH_EVENT=0之间的比率,它是2:1,这意味着

我创建了贷款风险预测python机器学习模型,用于预测借款人是否能够支付银行贷款。我的模型工作得非常好,有78%的准确率。然而,我的教授告诉我,首先我必须检查我的数据集是否平衡(如果不平衡,则从IMBRearn库应用SMOTE)。主要问题是我不知道如何检查是否平衡。如果有人知道如何检查,请告诉我

数据集链接:-
(我用来创建模型的这个数据集)

简单地说,您需要检查目标变量中存在的类是否不平衡

例如:

如果您检查DEATH_EVENT=1和DEATH_EVENT=0之间的比率,它是2:1,这意味着我们的数据集是不平衡的

为了平衡,我们可以对数据进行过采样或欠采样。 在这种情况下,欠采样将删除100行,其中DEATH_事件=0,比率为1:1,但在此过程中会丢失大量数据

另一方面,SMOTE可以帮助我们为少数类生成行。 可以使用以下代码执行此操作:

from imblearn.over_sampling import SMOTE
smote = SMOTE()
X, y = smote.fit_resample(X, y)

df = pd.concat([pd.DataFrame(X), pd.DataFrame(y)], axis=1)

现在谈到模型的“高”准确度,因为大多数数据属于大多数类0,所以仅预测所有行的0应该会给我一个高准确度,因此您应该检查其他性能指标,如召回率、精确度和f1分数。

检查目标变量中的类是否有50:50的比率。这里有一个关于如何平衡数据的内核示例:兄弟,你能告诉我,如果数据集不平衡,我必须在哪个阶段平衡数据集吗。我的意思是,我应该在“数据切片”操作之后或之前平衡数据。您可以在列车测试拆分之前执行此操作。