基于LIDC-IDRI肺结节肺癌数据集的人工智能深度学习分类良性和恶性肺癌(Python 全代码)全流程解析(三)

雷雷1123 2024-10-02 09:01:03 阅读 56

基于LIDC-IDRI肺结节肺癌数据集的人工智能深度学习分类良性和恶性肺癌(Python 全代码)全流程解析(三)

1 模型的读取和数据集的划分2 准确率,精确度(precision)、召回率(recall)、F1值(F1-score)评估3 ROC曲线评估4 决策收益分析曲线,混淆矩阵笑话一则开心一下喽

第一部分传送门

第二部分传送门

1 模型的读取和数据集的划分

在搭建深度学习模型并完成模型的训练后,开始进行模型的性能的评估。首先将处理好的数据读入,而后随机的按照7:3的比例随机的切分为训练集和测试集。本部分使用测试集进行模型的分类性能评估。

<code>#读取预处理数据

labels,data_x,data_y,data_z = load_data(label_path,data_path)

# 划分训练集和测试集

train_data_x, test_data_x, train_data_y, test_data_y, train_data_z, test_data_z, train_labels, test_labels = train_test_split(data_x, data_y, data_z, labels, test_size=0.3, random_state=42)

而后读取保存好的深度学习模型

model_file = os.path.join(result_path, 'model_44.h5')

H = load_model(model_file)

2 准确率,精确度(precision)、召回率(recall)、F1值(F1-score)评估

对测试集的真实标签(y_true)和模型预测得到的二元分类结果(y_pred)进行评估,通过输出分类报告(classification_report)来得到模型的性能指标。

#

predictions = H.predict([test_data_y, train_data_z, test_data_z])

# 将概率值转换为0和1

predictions_binary = np.argmax(predictions, axis=1)

##test

y_true = test_labels[:,1]

y_pred = predictions_binary

print(classification_report(y_true,y_pred))

训练的结果如下,精确度大概为0.78左右,然而模型存在一定程度的偏移,需要调参。

3 ROC曲线评估

要绘制ROC曲线,首先需要计算真正率(True Positive Rate,也称召回率)和假正率(False Positive Rate)。在代码中,可以通过使用模型的预测概率值和真实标签来计算这些指标。

<code>def evaluate_model(y_test, y_pred):

"""

评估分类器模型的性能,并打印相关指标。

Parameters:

- X_test: 测试集的特征矩阵

- y_test: 测试集的目标变量

"""

# 准确率

acc = accuracy_score(y_test, y_pred)

print(f'准确率:{ acc:.4f}')

# 分类报告

print('\n分类报告:')

report = classification_report(y_test, y_pred)

print(report)

# 混淆矩阵

print('混淆矩阵:')

cm = confusion_matrix(y_test, y_pred)

print(cm)

# ROC 曲线和 AUC

if len(set(y_test)) == 2: # 二分类才绘制 ROC 曲线和计算 AUC

auc = roc_auc_score(y_test,y_pred)

# 中文乱码和坐标轴负号的处理

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

plt.rcParams['axes.unicode_minus'] = False

# 绘制 ROC 曲线

fpr, tpr, _ = roc_curve(y_test,y_pred)

plt.figure(figsize=(8, 6))

plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'AUC = { auc:.4f}')code>

plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')code>

plt.xlabel('False Positive Rate')

plt.ylabel('True Positive Rate')

plt.title('ROC 曲线')

plt.legend(loc='lower right')code>

plt.show()

获得的ROC示意图曲线如图:

在这里插入图片描述

4 决策收益分析曲线,混淆矩阵

混淆矩阵(Confusion Matrix)是一种用于评估分类模型性能的表格,它将模型预测的结果与实际的类别标签进行比较,从而展现模型的分类准确性。混淆矩阵是一个二维矩阵,通常是一个正方形矩阵,其行代表了真实的类别,列代表了模型预测的类别。

<code>def plt_confusion_matrix(cm,save_path = False):

# 混淆矩阵

plt.figure(figsize=(8, 6))

sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', cbar=False,code>

xticklabels=['Predicted 0', 'Predicted 1'],

yticklabels=['Actual 0', 'Actual 1'])

plt.xlabel('Predicted Label')

plt.ylabel('True Label')

plt.title('Confusion Matrix')

# 保存图片

if save_path:

plt.savefig(save_path, dpi=800, bbox_inches='tight')code>

plt.show()

运行的结果示意图如图

在这里插入图片描述

如图

收益分析曲线(Profit Curve)是一种用于评估分类模型性能的可视化工具,它将模型的预测结果与实际的成本和收益联系起来,从而帮助决策者在不同阈值下进行决策。

收益分析曲线

笑话一则开心一下喽

什么是代沟?就是换上新衣服,在老妈面前走了一圈说:妈,有范吗?老妈看了我一眼说:有,在锅里,自己盛去。

深度学习,医学图像处理,机器学习,需要帮助的联系我(有偿哦)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。