一些分類算法缺乏輸出結果爲概率的能力,比如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) # 概率校正