机器学习性能评价指标1.1 随机生成样本集 我们创建测试数据,测试数据一共1000条记录,每条记录100个特征,内容随机生成,代码如下: x, y = datasets.make_classification(n_samples=1000, n_features=100, n_redundant=0, random_state = 1)1.2 随机划分训练集和测试集把数据集随机划分成训练集和测试集,其中测试集占20%: train_X, test_X, train_y, test_y = train_test_split(x, y, test_size=0.2, random_state=66)1.3 训练和预测使用KNN算法进行训练和预测:
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(train_X, train_Y)
pred_Y = knn.predict(test_X)
1.4 混淆矩阵混淆矩阵(Confusion Matrix)是将分类问题按照真实情况与判别情况两个维度进行归类的一个矩阵,例如: 代码实现如下:
print "confusion_matrix:"
print metrics.confusion_matrix(test_Y, pred_Y)
1.5 准确率与召回率召回率=TP/(TP+FN) 准确率=TP/(TP+FP) scikt-learn代码如下:
print "recall_score:"
print metrics.recall_score(test_Y, pred_Y)
print "precision_score:"
print metrics.precision_score(test_Y, pred_Y)
1.6 正确度与F1-Score正确度(Accuracy)是对检测结果一个均衡的评价,表现的是全体预测正确占全部样本的比例。 F1-Score也是对准确率和召回率的一个均衡评价,国内外不少数据挖掘比赛都是重点关注F1-Score的值。 F1-Score = 2TP/(2TP+FP+FN) scikit-learn代码如下:
print "accuracy_score:"
print metrics.accuracy_score(test_Y, pred_Y)
print "f1_score:"
print metrics.f1_score(test_Y, pred_Y)
1.7 ROC与AUC ROC(Receiver Operating Characteristic Curve,受试者工作特征曲线)是指以真阳性率为纵坐标,假阳性率为横坐标绘制的曲线,是反映灵敏性和特效性连续变量的综合指标。一般认为ROC越光滑说明分 类算法过拟合的概率越低,越接近左上角说明分类性能越好。 AUC(Area Under the Receiver Operating Characteristic Curve)就是量化衡量ROC分类性能的指标,如图3-2所示,AUC的物理含义是ROC曲线的面 积,AUC越大越好。 例如: scikit-learn绘制ROC曲线的方法如下:
f_pos, t_pos, thresh = metrics.roc_curve(test_Y, pred_Y)
auc_area = metrics.auc(f_pos, t_pos)
plt.plot(f_pos, t_pos, 'darkorange', lw=2, label='AUC = %.2f' % auc_area)
plt.legend(loc='lower right')
plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
plt.title('ROC')plt.ylabel('True Pos Rate')
plt.xlabel('False Pos Rate') plt.show()
在Scikit-Learn中,可以如下获得AUC值: print "AUC:" print metrics.roc_auc_score(test_Y, pred_Y) 另外,在广告点击率任务中,经常使用logloss损失率作为是否准确的衡量指标,直接计算预测值与标记值的损失之和并计算log函数。同时参考AUC。
|