暂无AI摘要
乳腺癌数据集逻辑回归实现
实验概述
本实验旨在使用逻辑回归模型对乳腺癌数据集进行分类,并评估模型的性能。乳腺癌是一种常见的恶性肿瘤,准确的分类对于早期诊断和治疗至关重要。在本实验中,我们将使用乳腺癌数据集作为样本集,其中包含了临床特征(如肿瘤大小、细胞形态学特征等)以及相应的分类标签。
实验中的主要步骤包括数据集的预处理、逻辑回归模型的训练和评估,以及结果的可视化分析。首先,我们将加载乳腺癌数据集,并将数据集划分为训练集和测试集。然后,对数据集进行特征缩放,以确保特征具有相似的尺度。接下来,我们将创建一个逻辑回归模型,并使用训练集数据和标签进行模型训练。训练完成后,我们将使用测试集数据进行预测,并计算模型的准确率、混淆矩阵和分类报告等性能指标。
为了更直观地理解模型的分类效果,我们将通过散点图可视化测试集数据的分类结果,不同类别的样本使用不同颜色进行标记。此外,我们还将绘制混淆矩阵的热力图,以直观展示模型在各个类别上的分类结果。通过对结果的讨论和解释,我们将对模型的性能进行评估,并探讨特征重要性,以了解哪些特征可能对乳腺癌分类起到关键作用。
实验环境
windows11、Python3.9、jupyter notebook
方法概述
A. 数据集预处理
- 数据集加载和划分:使用
load_breast_cancer()
函数加载乳腺癌数据集,并将数据集划分为训练集和测试集,其中测试集占比为20%。 - 特征和标签获取:从数据集中提取特征和标签,将特征赋值给
X
,将标签赋值给y
。 - 特征缩放:使用
StandardScaler
对特征进行缩放,以保证特征具有相似的尺度。
B. 逻辑回归模型
- 模型原理简介:逻辑回归是一种广义线性模型,用于解决二分类问题。它基于线性回归模型,并使用逻辑函数(如sigmoid函数)将输出映射到[0, 1]之间的概率。
- 模型训练过程:创建一个
LogisticRegression
对象,并使用训练集数据和标签进行模型训练。 - 预测和评估:使用训练好的模型对测试集数据进行预测,并使用
accuracy_score
、confusion_matrix
和classification_report
等指标评估模型的性能。
实验代码
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt
def breast_cancer_classification():
# 加载乳腺癌数据集
data = load_breast_cancer()
# 获取特征和标签
X = data.data
y = data.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=23)
# 特征缩放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 创建逻辑回归模型
log_reg = LogisticRegression(random_state=42)
# 训练模型
log_reg.fit(X_train, y_train)
# 预测
y_pred = log_reg.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
report = classification_report(y_test, y_pred)
print("Accuracy:", accuracy)
print("\nConfusion Matrix:\n", conf_matrix)
print("\nClassification Report:", report)
# 可视化分类结果
fig, ax = plt.subplots()
ax.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, cmap='coolwarm')
ax.set_title("Breast Cancer Classification Results")
ax.set_xlabel("Feature 1")
ax.set_ylabel("Feature 2")
plt.show(block=False)
# 可视化性能指标
fig, ax = plt.subplots()
im = ax.imshow(conf_matrix, cmap='Blues')
ax.set_xticks(np.arange(2))
ax.set_yticks(np.arange(2))
ax.set_xticklabels(["Negative", "Positive"])
ax.set_yticklabels(["Negative", "Positive"])
plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")
for i in range(2):
for j in range(2):
text = ax.text(j, i, conf_matrix[i, j], ha="center", va="center",
color="white" if conf_matrix[i, j] > (conf_matrix.max() / 2) else "black")
ax.set_title("Confusion Matrix")
fig.tight_layout()
plt.show()
if __name__ == '__main__':
breast_cancer_classification()
实验结果
A. 模型性能评估
- 准确率:计算模型在测试集上的准确率,衡量模型分类的准确程度。
- 混淆矩阵:绘制混淆矩阵,展示模型在各个类别上的分类结果。
- 分类报告:输出模型的分类报告,包括精确度、召回率、F1值等指标,提供了对模型性能更详细的评估。
B. 可视化分析
- 分类结果散点图:绘制散点图展示模型对测试集数据的分类结果,不同类别的样本使用不同颜色进行标记。
- 混淆矩阵热力图:绘制混淆矩阵的热力图,使用颜色表示不同分类结果的数量,并在每个格子中显示对应的数值。
本文来自投稿,不代表本站立场,如若转载,请注明出处: