将CalibratedClassifierCV与平衡和不平衡数据一起使用

时间:2019-10-20 17:12:29

标签: machine-learning

我想使用CalibratedClassifierCV来预测SGDClassifier的概率。我用3种不同的方式编写代码。

data_train是我完整的训练数据 让data_train拆分为d_train + data_cv(用于验证)

  1. 数据已传递,模型未受训练:

model_new=linear_model.SGDClassifier(loss='hinge',class_weight='balanced',alpha=0.0001,penalty='l2') clf_new=CalibratedClassifierCV(model_new,method='isotonic',cv=5) clf_new.fit(data_train,output_train) - complete training data

  1. 数据已经受过训练,cv ='prefit'

model_new=linear_model.SGDClassifier(loss='hinge',class_weight='balanced',alpha=0.0001,penalty='l2') model_new.fit(d_train,out_train) clf_new=CalibratedClassifierCV(model_new,method='isotonic',cv='prefit') clf_new.fit(data_cv,output_cv) - validation data

  1. 数据已接受训练,cv = 5

model_new=linear_model.SGDClassifier(loss='hinge',class_weight='balanced',alpha=0.0001,penalty='l2') model_new.fit(data_train,output_train) clf_new=CalibratedClassifierCV(model_new,method='isotonic',cv=5) clf_new.fit(data_train,output_train) - complete training data

我的疑问是: 在情况1中:校准模型(clf_new)装有data_train,并且在模型中使用cv = 5。因此,数据在内部分为d_train + d_cv(基于cv整数)。现在,当我们通过SGDClassifier模型(model_new)进行校准时,此SGDClassifier将仅在d_train以上采用并平衡数据,因为我已经使用class_weight ='balanced'然后训练了该数据?我相信step3是正确的,然后CalibratedClassifierCV使用d_cv(不平衡)来预测输出,然后我们可以获得概率。如果在这种平衡和不平衡的数据情况下我的理解是错误的,请纠正我。

在情况2中:使用平衡数据训练SGD分类器,然后使用cv = prefit进行校准,并使用不平衡的cv数据训练,

在第3种情况下:SGD分类器是使用class_weight ='balanced'的火车数据进行训练的,我没有再次将其拆分为cv,因此使用cv = 5进行了校准并在相同的火车数据上进行了训练

根据上面的代码,我的理解是在case2,case3中使用了校准不平衡数据。但是在case2中,我使用的是单独的简历数据,因此使用了不平衡的数据,而在case3中,我使用的是相同的训练数据,但将cv = 5传递给了校准的分类器,因此我认为这将包含不平衡的数据,请理解我的意见。是错误的。

请详细说明这三种情况。

0 个答案:

没有答案