Tagged: ROC曲线

2,834  0

[TF.5]分类与评估

本文参考《Google机器学习速成课程》分类 评估方式 准确率|识别率 错误率|误分类率 当使用分类不平衡的数据集时,准确率并不能反映全面情况 精确率|精度 真正例率|敏感度|召回率 真负例率|特效性 精确率和召回率往往此消彼长 分类操作工程化 # 线性多分类器 linear_classifier = tf.estimator.LinearClassifier( feature_columns=construct_feature_columns(training_examples), optimizer=my_optimizer ) # 获取实值预测概率 training_probabilities = linear_classifier.predict(input_fn=predict_training_input_fn) training_probabilities = np.array([item[‘probabilities’] for item in training_probabilities]) #获得一个多维数组[[0.813 0.184][0.821 0.179]…[0.557 0.443]] # 使用Sklearn 的 log_loss 函数可基于这些概率计算对数损失函数 training_log_loss = metrics.log_loss(training_targets, training_probabilities) #LinearClassifier.evaluate 可计算准确率和 AUC 等实用指标 predict_validation_input_fn = lambda: my_input_fn(validation_examples, validation_targets["median_house_value_is_high"], num_epochs=1, shuffle=False) evaluation_metrics = linear_classifier.evaluate(input_fn=predict_validation_input_fn) print "AUC on the validation set: %0.2f" % evaluation_metrics[‘auc’] print "Accuracy on the validation set: %0.2f" % evaluation_metrics[‘accuracy’] ROC曲线 在逻辑回归里,我们会设一个阈值,大于这个值的为正类,小于这个值为负类。如果我们减小这个阀值,那么更多的样本会被识别为正类。这会提高正类的识别率,但同时也会使得更多的负类被错误识别为正类。为了形象化这一变化,引入ROC(Receiver Operating Characteristic)ROC曲线有个很好的特性,当测试集中的正负样本的分布变化的时候(类不平衡现象),ROC曲线能够保持不变,因此更适合用于评价一个分类器好坏AUC(Area Under Curve)被定义为ROC曲线下的面积,AUC值越大的分类器,正确率越高 # 绘制 ROC 曲线 # 使用类别概率(例如由 LinearClassifier.predict 和 validation_probabilities = linear_classifier.predict(input_fn=predict_validation_input_fn) #只要预测为正的那一列 validation_probabilities = np.array([item[‘probabilities’][3] for item in validation_probabilities])...