我想使用CalibratedClassifierCV来预测SGDClassifier的概率。我用3种不同的方式编写代码。
data_train是我完整的训练数据 让data_train拆分为d_train + data_cv(用于验证)
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
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
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传递给了校准的分类器,因此我认为这将包含不平衡的数据,请理解我的意见。是错误的。
请详细说明这三种情况。