标签:tle data sub red 分类 param ssi add yar
非均衡分类问题:
1、样本正反例数量差距大;
2、不同类别的分类代价不相等。
除了分类错误率,还有以下分类性能度量指标:正确率、召回率和ROC曲线
正确率:预测为正例的样本中真正正例的比例。
召回率:预测为正例的真实正例占所有真实正例的比例。
正确率和召回率很难同时达到很高。
ROC曲线:横轴为伪正例的比例(假阳率),纵轴为真正例的比例(真阳率)。
def plotROC(predStrengths,classLabels):
import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]
plt.rcParams[‘axes.unicode_minus‘] = False
cur = (1.0, 1.0)
ySum = 0.0 # variable to calculate AUC
numPosClas = sum(array(classLabels) == 1.0)
yStep = 1 / float(numPosClas)
xStep = 1 / float(len(classLabels) - numPosClas)
sortedIndicies = predStrengths.argsort()
fig = plt.figure()
fig.clf()
ax = plt.subplot(111)
# print(type(sortedIndicies))
# print(sortedIndicies.tolist())
for index in sortedIndicies.tolist()[0]:
if classLabels[index] == 1.0:
delX = 0
delY = yStep
else:
delX = xStep
delY = 0
ySum += cur[1]
ax.plot([cur[0], cur[0] - delX], [cur[1], cur[1] - delY], c=‘y‘)
cur = (cur[0] - delX, cur[1] - delY)
ax.plot([0, 1], [0, 1], ‘r--‘)
plt.xlabel(‘假阳率‘)
plt.ylabel(‘真阳率‘)
plt.title(‘AdaBoost马疝病检测系统的ROC曲线‘)
ax.axis([0, 1, 0, 1])
plt.show()
print("the Area Under the Curve is: ", ySum * xStep)
测试输出:
if __name__==‘__main__‘:
dataArr,labelArr=loadDataSet(‘horseColicTraining2.txt‘)
classifyArray,aggClassEst=adaBoostTrainDS(dataArr,labelArr,10)
plotROC(aggClassEst.T,labelArr)

the Area Under the Curve is: 0.8582969635063604
标签:tle data sub red 分类 param ssi add yar
原文地址:https://www.cnblogs.com/zhhy236400/p/9926162.html