一些分类算法缺乏输出结果为概率的能力,比如rf
这个时候使用calibratedclassifiercv,它使用2种方法将分类结果转化为概率
第一种:platte的归类方法
第二种:isotonic回归
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.calibration import CalibratedClassifierCV,calibration_curve
hypothesis = RandomForestClassifier(n_estimators=100,random_state=101)
calibration = CalibratedClassifierCV(hypothesis,method='sigmoid',cv=5)
# sigmoid代表platt方法
covertype_X = covertype_dataset.data[:15000,:]
covertype_y = covertype_dataset.target[:15000]
covertype_test_X = covertype_dataset.data[15000:25000,:]
covertype_test_y = covertype_dataset.target[15000:25000]
hypothesis.fit(covertype_X,covertype_y)
calibration.fit(covertype_X,covertype_y)
prob_raw = hypothesis.predict_proba(covertype_test_X) # 原始的随机森林概率
prob_cal = calibration.predict_proba(covertype_test_X) # 概率校正