分类
监督学习(supervised learning样本有label):最终是为了拟合一个函数
无监督学习(unsupervised learning)(样本无label)
模型评估方法(待补充)
混淆矩阵(coonfusion matrix)适用于多分类
:由混淆矩阵可以衍生出四个关键指标:
准确率ACC(混淆矩阵中正对角线/总量),精确率Precision(TP/竖线总和),召回率:Recall(TP/横线总和) ,F1分数:F1-Scores(精确率召回率相乘/相加)
- TP(True Positive) :真实患病且被正确预测为患病的数量(8人)
- FP(False Positive) :真实健康但被错误预测为患病的数量(4人)
- TN(True Negative) :真实健康且被正确预测为健康的数量(86人)
- FN(False Negative) :真实患病但被错误预测为健康的数量(2人)
- 准确率(Accuracy)
模型预测正确的比例
📌(TP+TN)/Total = (8+86)/100 = 94% - 精确率(Precision)
预测为阳性时正确的概率
📌TP/(TP+FP) = 8/(8+4) = 66.7% - 召回率(Recall)
真实阳性中被正确找出的比例
📌TP/(TP+FN) = 8/(8+2) = 80% - F1分数(F1-Score)
精确率和召回率的调和平均
📌2*(Precision*Recall)/(Precision+Recall) = 72.7%
```
y_true=test_labels.cpu().numpy()
y_pred = preds.cpu().numpy()
# 计算混淆矩阵
cm=confusion_matrix(y_true, y_pred)
plt.figure(figsize=(8,6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=['Normal', 'Fault'],
yticklabels=['Normal', 'Fault'])
plt.xlabel('Predicted',fontsize=16)
plt.ylabel('Actual',fontsize=16)
plt.title('Confusion Matrix',fontsize=16)
plt.show()
# 方法1:
print("\nSklearn计算结果:")
print(f"Accuracy: {accuracy_score(y_true, y_pred):.4f}")
print(f"Precision: {precision_score(y_true, y_pred):.4f}")
print(f"Recall: {recall_score(y_true, y_pred):.4f}")
print(f"F1 Score: {f1_score(y_true, y_pred):.4f}")
# 方法2
print("\n分类报告:")
print(classification_report(y_true, y_pred,
target_names=['Normal', 'Fault'],
digits=4))
```
均方误差
常见模型
线性模型
逻辑回归
传统神经网络
单层神经网络(向量×权重再通过输出函数)感知机
前馈神经网络(输入层+多层隐层+输出层)多层感知机
梯度下降
BP算法(起源自误差)
求导之后往梯度负方向走总归是好的