【逻辑回归算法对乳腺癌进行诊断】

本文介绍了使用UCI乳腺癌数据集,通过特征工程预处理后,构建逻辑回归模型进行恶性与良性肿瘤预测的过程,包括数据加载、特征划分、标准化、模型训练、性能评估(精确率、召回率、F1-score和AUC)以及ROC曲线可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集介绍

我们将使用一个来自UCI机器学习库的乳腺癌数据集。这个数据集包含了乳腺癌肿瘤的一些特征信息,以及对肿瘤的诊断结果。数据集的特征包括肿瘤的尺寸、质地、周长等等。我们的目标是根据这些特征来预测肿瘤是良性还是恶性。

首先,我们需要加载所需的库和数据集:

import pandas as pd
import matplotlib.pyplot as plt
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 classification_report, roc_curve, roc_auc_score

# 加载数据集
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data"
columns = [
    "ID number",
    "Diagnosis",
    "Mean Radius",
    "Mean Texture",
    "Mean Perimeter",
    "Mean Area",
    "Mean Smoothness",
    "Mean Compactness",
    "Mean Concavity",
    "Mean Concave Points",
    "Mean Symmetry",
    "Mean Fractal Dimension",
    "Radius SE",
    "Texture SE",
    "Perimeter SE",
    "Area SE",
    "Smoothness SE",
    "Compactness SE",
    "Concavity SE",
    "Concave Points SE",
    "Symmetry SE",
    "Fractal Dimension SE",
    "Worst Radius",
    "Worst Texture",
    "Worst Perimeter",
    "Worst Area",
    "Worst Smoothness",
    "Worst Compactness",
    "Worst Concavity",
    "Worst Concave Points",
    "Worst Symmetry",
    "Worst Fractal Dimension"
]

data = pd.read_csv(url, names=columns)

# 处理缺失值
data = data.replace(to_replace="?", value=np.nan)
data.dropna(inplace=True)

# 划分数据集
X = data.iloc[:, 2:]
y = data["Diagnosis"]
X_train, X_test, y_train, y_test = train_test_split(X, y)

# 标准化
std = StandardScaler()
X_train = std.fit_transform(X_train)
X_test = std.transform(X_test)

构建逻辑回归模型

现在,我们可以构建逻辑回归模型并对其进行训练:

# 逻辑回归
lr = LogisticRegression()
lr.fit(X_train, y_train)

模型评估与性能指标

接下来,我们可以使用训练好的模型对测试数据进行预测,并计算模型的性能指标:

# 模型评估
y_predict = lr.predict(X_test)
score = lr.score(X_test, y_test)

# 精确率、召回率、F1-score
report = classification_report(y_test, y_predict, labels=["M", "B"], target_names=["恶性", "良性"])

# ROC曲线
y_predict_proba = lr.predict_proba(X_test)
y_predict_proba = y_predict_proba[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, y_predict_proba, pos_label="M")

# AUC
auc = roc_auc_score(y_test, y_predict_proba)

结果可视化

最后,我们可以使用Matplotlib库绘制ROC曲线和展示模型的性能指标:

# 绘制ROC曲线
plt.plot(fpr, tpr)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()

# 输出性能指标
print("准确率:", score)
print("分类报告:\n", report)
print("AUC:", auc)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wdwc2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值