Datawale笔记
Task1 深入浅出PyTorch
模型评价指标
-
混淆矩阵
-
二分类混淆矩阵元素:TP, FP, FN, TN
(1) TP : True Positive (2) FP : False Positive(实际为负类但被预测为正类) (3) FN : False Negative(实际为正类但被预测为负类) (4) TN : True Negattive(实际为负类且预测为负类)
-
混淆矩阵代码实现:
from sklearn.metrics import confusion_matrix def compute_confusion_matrix(labels,pred_labels_list,gt_labels_list): pred_labels_list = np.asarray(pred_labels_list) gt_labels_list = np.asarray(gt_labels_list) matrix = confusion_matrix(test_label_list, pred_label_list, labels=labels) return matrix
将预测标签和真值标签转换为 NumPy 数组。这样做是为了确保数据类型一致,并且可以利用 NumPy 的高效计算特性。
-
Overall Accuracy
-
def : 代表了所有预测正确的样本占所有预测样本总数的比例
-
代码实现:
def compute_oa(matrix): """ 计算总体准确率,OA=(TP+TN)/(TP+TN+FP+FN) :param matrix: :return: """ return np.trace(matrix) / np.sum(matrix)
-
Average accuracy
-
def : 每一类预测正确的样本和该类的总量之间的比值求平均值.
-
代码实现 : 使用numpy的diag将混淆矩阵的对角线元素取出,并且对于混淆矩阵进行列求和,用对角线元素除以求和后的结果,最后对结果计算求出平均值。
from sklearn.metrics import confusion_matrix def average_accuracy(labels, pred_labels_list, gt_labels_list): pred_labels_list = np.asarray(pred_labels_list) gt_labels_list = np.asarray(gt_labels_list) cm = confusion_matrix(gt_labels_list, pred_labels_list, labels=labels) class_accuracies = [] for i, label in enumerate(labels): true_positive = cm[i, i] false_negative = np.sum(cm[i, :]) - true_positive accuracy = true_positive / (true_positive + false_negative) class_accuracies.append(accuracy) avg_accuracy = np.mean(class_accuracies) return avg_accuracy
-
-
Kappa系数
-
计算方式 :
kappa = (P_o - P_e) / (1 - P_e)
-
评估标准 : 越接近1越优 , 负值则表示一致性比随机分类还差
-
期望一致性的计算方法 :
P_e = 0 for i in range(len(labels)): row_sum = np.sum(cm[i, :]) col_sum = np.sum(cm[:, i]) P_e += (row_sum * col_sum) / (N * N)
-
-
Recall召回率
-
def : 正样本并且也被正确识别为正样本的数量占样本中所有为正样本的比例
-
-
Precision
-
def : 全部预测为正的结果中,被预测正确的正样本所占的比例
-
-
F1
-
F1可以解释为召回率(Recall)和P(精确率)的加权平均
-
-
其他:
-
置信度 (划分的阈值)
-
IOU(通常人们将IOU >=0.7时判定为正样本,其余情况判定为负样本)
-
AP
-
mAP
-
Task2
baseline基本思路
-
数据集部分
-
Features
-
GT gt的数据类型整体值偏移,且分布不均,在数据处理时应根据此做出适当的数据清洗和调整 可做出如:归一化、标准化、对数变换等改进。给出的baseline中使用移动平均的方式来平滑数据。
-
-
模型部分 可以尝试使用LSTM等时间序列问题的经典模型来优化
-
损失函数、优化器等
-
模型加载及预测