0


【机器学习】在【Pycharm】中的实践教程:使用【逻辑回归模型】进行【乳腺癌检测】

专栏:机器学习笔记

pycharm专业版免费激活教程见资源,私信我给你发

python相关库的安装:pandas,numpy,matplotlib,statsmodels

总篇:学习路线

第一卷:线性回归模型

逻辑回归(Logistic Regression)是一种适用于二分类问题的机器学习方法。本文将围绕一个具体的乳腺癌检测案例,详细讲解如何在PyCharm中使用逻辑回归模型进行预测。我们将从数据准备、数据预处理、模型训练、模型评估和结果可视化几个方面进行详细说明,并通过完整的代码示例展示每个步骤。

案例背景

在本案例中,我们将使用经典的乳腺癌数据集(Breast Cancer Dataset)进行乳腺癌检测预测。该数据集包含569个样本,每个样本有30个特征,并标记为良性(0)或恶性(1)。我们的目标是使用这些特征训练一个逻辑回归模型,预测新的样本是良性还是恶性。

具体问题

我们需要解决以下几个具体问题:

  1. 如何加载并理解乳腺癌数据集。
  2. 如何对数据进行预处理以适合逻辑回归模型的训练。
  3. 如何训练逻辑回归模型并进行预测。
  4. 如何评估模型的性能。
  5. 如何对结果进行可视化以便于解释。

1. 环境准备

首先,确保你的开发环境中已经安装了必要的Python库:

  1. pip install numpy pandas scikit-learn matplotlib seaborn
小李的理解

安装库是机器学习的基础步骤。我们需要安装一些流行的Python库,如

  1. numpy

  1. pandas

  1. scikit-learn

  1. matplotlib

  1. seaborn

,这些库分别用于数值计算、数据处理、机器学习模型、绘图和数据可视化。

知识点
  1. 库的安装:使用pip install命令安装所需的Python库。
  2. 常用库:了解并熟悉常用的机器学习和数据处理库。

2. 数据准备

2.1 导入必要的库和数据集

我们使用

  1. scikit-learn

库中的乳腺癌数据集。

  1. import numpy as np
  2. import pandas as pd
  3. from sklearn.datasets import load_breast_cancer
  4. # 加载数据集
  5. data = load_breast_cancer()
  6. X = data.data
  7. y = data.target
小李的理解
  1. scikit-learn

提供了很多常用的数据集,

  1. load_breast_cancer()

是用来加载乳腺癌数据集的方法。

  1. X

是特征数据,

  1. y

是目标标签(0表示良性,1表示恶性)。

知识点
  1. 数据集加载:使用scikit-learn中的方法加载内置数据集。
  2. 特征与标签:特征数据用于模型训练,目标标签用于分类。

2.2 数据集基本信息

将数据转换为Pandas DataFrame格式以便查看和处理,并打印数据集的前几行进行初步了解。

  1. # 将数据转换为DataFrame格式
  2. df = pd.DataFrame(X, columns=data.feature_names)
  3. df['target'] = y
  4. # 查看数据集的基本信息
  5. print("数据集前五行:\n", df.head())
  6. print("\n数据集描述统计信息:\n", df.describe())
  7. print("\n数据集信息:")
  8. df.info()

运行结果

小李的理解

我们使用

  1. pandas

库将数据转换为DataFrame格式,这样可以方便地查看和处理数据。使用

  1. head()

查看数据的前几行,使用

  1. describe()

查看数据的描述统计信息,使用

  1. info()

查看数据的基本信息,包括每列的数据类型和非空值数量。

知识点
  1. DataFramepandas的核心数据结构,类似于电子表格,可以方便地操作和分析数据。
  2. 数据描述:通过head()describe()info()方法快速了解数据的基本情况。
注意事项
  1. 数据完整性:在加载数据时,确保数据没有缺失值。本数据集没有缺失值。
  2. 数据类型:特征值都是浮点型,而目标值是整数型。逻辑回归适用于这些数据类型。

3. 数据预处理

3.1 划分训练集和测试集

将数据集划分为训练集和测试集,以便后续模型的训练和评估。

  1. from sklearn.model_selection import train_test_split
  2. # 划分训练集和测试集
  3. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  4. # 打印训练集和测试集的大小
  5. print(f'训练集样本数: {X_train.shape[0]}')
  6. print(f'测试集样本数: {X_test.shape[0]}')

运行结果

小李的理解

我们将数据集分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的性能。

  1. train_test_split

函数将数据按70%训练集和30%测试集的比例进行划分,并使用

  1. random_state=42

保证每次运行结果一致。

知识点
  1. 数据划分:使用train_test_split函数将数据集分为训练集和测试集。
  2. 随机种子random_state参数保证结果的可重复性。
注意事项
  1. 随机种子random_state=42保证每次运行结果一致,方便调试和复现。
  2. 测试集比例:通常使用70%的数据进行训练,30%的数据进行测试,但具体比例可以根据实际情况调整。

3.2 数据标准化

由于不同特征的取值范围不同,需要对数据进行标准化处理,使每个特征的取值范围相同。

  1. from sklearn.preprocessing import StandardScaler
  2. # 数据标准化
  3. scaler = StandardScaler()
  4. X_train = scaler.fit_transform(X_train)
  5. X_test = scaler.transform(X_test)
  6. # 打印标准化后的部分数据
  7. print(f'标准化后的训练数据前五行:\n {X_train[:5]}')

运行结果

小李的理解

标准化是将每个特征缩放到均值为0、标准差为1的范围内,这样可以消除不同特征之间的量纲差异,使模型训练更加稳定。我们使用

  1. StandardScaler

进行标准化,只对训练数据拟合,然后对训练和测试数据进行转换。

知识点
  1. 标准化:使用StandardScaler将数据标准化,以消除特征之间的量纲差异。
  2. 数据泄漏:在标准化时,只对训练数据进行拟合,然后对训练和测试数据进行转换。
注意事项
  1. 标准化方法:我们使用StandardScaler将每个特征缩放到均值为0、标准差为1的范围内。
  2. 数据泄漏:在标准化时,我们仅对训练数据拟合(fit),然后对训练和测试数据进行转换(transform),以避免数据泄漏。

4. 模型训练

4.1 初始化和训练逻辑回归模型

使用

  1. scikit-learn

库中的逻辑回归模型对训练数据进行拟合。

  1. from sklearn.linear_model import LogisticRegression
  2. # 初始化逻辑回归模型
  3. model = LogisticRegression(max_iter=10000)
  4. # 训练模型
  5. model.fit(X_train, y_train)
  6. # 打印模型的训练结果
  7. print("逻辑回归模型训练完成")
运行结果
小李的理解

我们使用

  1. LogisticRegression

类来初始化逻辑回归模型,并设置最大迭代次数为10000,以确保模型能够收敛。然后,我们使用训练数据拟合模型。

知识点
  1. 逻辑回归模型LogisticRegression类用于初始化逻辑回归模型。
  2. 最大迭代次数max_iter参数用于设置模型的最大迭代次数,以确保模型能够收敛。
注意事项
  1. 最大迭代次数max_iter=10000确保模型能够收敛,即使数据集较大或特征较多。
  2. 默认参数:初学者可以先使用默认参数,之后可以尝试调整参数以优化模型性能。

5. 模型评估

5.1 预测结果

使用训练好的模型对测试集进行预测。

  1. # 预测
  2. y_pred = model.predict(X_test)
  3. # 打印预测结果的前十个
  4. print(f'预测结果前十个: {y_pred[:10]}')

运行结果

小李的理解

我们使用

  1. predict

方法对测试数据进行预测,得到每个样本的预测标签。然后,我们打印预测结果的前十个样本。

知识点
  1. 模型预测:使用predict方法对测试数据进行预测。
  2. 预测标签predict方法返回每个样本的预测标签。
注意事项
  1. 预测输出predict方法输出每个样本的预测标签。
  2. 预测概率:可以使用predict_proba方法获取每个样本属于每个类别的概率。

5.2 计算准确率

计算模型在测试集上的准确率。

  1. from sklearn.metrics import accuracy_score
  2. # 计算准确率
  3. accuracy = accuracy_score(y_test, y_pred)
  4. print(f'Accuracy: {accuracy}')

运行结果

小李的理解

准确率是模型正确预测的样本数占总样本数的比例,是评估模型性能的一个重要指标。

知识点
  1. 准确率:使用accuracy_score函数计算模型的准确率。
  2. 模型评估:准确率是评估模型性能的一个重要指标。
注意事项
  1. 准确率定义:准确率是正确预测的样本数占总样本数的比例。
  2. 适用场景:对于类别不平衡的问题,仅使用准确率可能会导致误导,应结合其他指标。

5.3 混淆矩阵

生成并打印混淆矩阵,混淆矩阵可以直观地显示模型的分类性能。

  1. from sklearn.metrics import confusion_matrix
  2. # 混淆矩阵
  3. conf_matrix = confusion_matrix(y_test, y_pred)
  4. print('Confusion Matrix:')
  5. print(conf_matrix)

运行结果

小李的理解

混淆矩阵是一个矩阵,用来评价分类模型的性能。矩阵的每一行表示实际类别,每一列表示预测类别。

知识点
  1. 混淆矩阵:使用confusion_matrix函数生成混淆矩阵。
  2. 矩阵解读:混淆矩阵的每一行表示实际类别,每一列表示预测类别。
注意事项
  1. 混淆矩阵解读: - 左上(TP):正确预测为正类的数量- 右上(FP):错误预测为正类的数量- 左下(FN):错误预测为负类的数量- 右下(TN):正确预测为负类的数量
  2. 评估模型:通过混淆矩阵可以计算精确度、召回率等指标。

5.4 分类报告

生成并打印分类报告,报告包括精确度、召回率和F1分数等指标。

  1. from sklearn.metrics import classification_report
  2. # 分类报告
  3. class_report = classification_report(y_test, y_pred)
  4. print('Classification Report:')
  5. print(class_report)

运行结果

小李的理解

分类报告提供了每个类别的精确度、召回率和F1分数,以及整体的宏平均(macro avg)和加权平均(weighted avg)指标。这些指标可以帮助我们更全面地评估模型的性能。

知识点
  1. 分类报告:使用classification_report函数生成分类报告。
  2. 评估指标:分类报告包括精确度、召回率和F1分数等指标。
注意事项
  1. 精确度(Precision):预测为正类的样本中实际为正类的比例。
  2. 召回率(Recall):实际为正类的样本中被正确预测为正类的比例。
  3. F1分数(F1-score):精确度和召回率的调和平均数,综合考虑模型的准确性和召回能力。

6. 结果可视化

6.1 绘制混淆矩阵

使用Seaborn库对混淆矩阵进行可视化。

  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 绘制混淆矩阵
  4. plt.figure(figsize=(10, 7))
  5. sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
  6. plt.title('Confusion Matrix')
  7. plt.xlabel('Predicted')
  8. plt.ylabel('Actual')
  9. plt.show()

可视化结果

小李的理解

通过绘制混淆矩阵,我们可以直观地看到模型的分类效果。

  1. seaborn

库提供了简洁的绘图方法,使得可视化更加美观和易于理解。

知识点
  1. 数据可视化:使用seaborn库进行数据可视化。
  2. 混淆矩阵图:通过绘制混淆矩阵图,可以直观地展示模型的分类效果。
注意事项
  1. 图像解释:混淆矩阵图表提供了直观的分类性能展示。
  2. 颜色选择:可以根据需要调整颜色映射,以便于区分不同类别。

完整代码

  1. import numpy as np
  2. import pandas as pd
  3. from sklearn.datasets import load_breast_cancer
  4. from sklearn.model_selection import train_test_split
  5. from sklearn.preprocessing import StandardScaler
  6. from sklearn.linear_model import LogisticRegression
  7. from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
  8. import matplotlib.pyplot as plt
  9. import seaborn as sns
  10. # 1. 加载数据集
  11. data = load_breast_cancer()
  12. X = data.data
  13. y = data.target
  14. # 2. 数据准备
  15. df = pd.DataFrame(X, columns=data.feature_names)
  16. df['target'] = y
  17. # 查看数据集的基本信息
  18. print("数据集前五行:\n", df.head())
  19. print("\n数据集描述统计信息:\n", df.describe())
  20. print("\n数据集信息:")
  21. df.info()
  22. # 3. 数据预处理
  23. # 划分训练集和测试集
  24. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  25. # 打印训练集和测试集的大小
  26. print(f'训练集样本数: {X_train.shape[0]}')
  27. print(f'测试集样本数: {X_test.shape[0]}')
  28. # 数据标准化
  29. scaler = StandardScaler()
  30. X_train = scaler.fit_transform(X_train)
  31. X_test = scaler.transform(X_test)
  32. # 打印标准化后的部分数据
  33. print(f'标准化后的训练数据前五行:\n {X_train[:5]}')
  34. # 4. 模型训练
  35. # 初始化逻辑回归模型
  36. model = LogisticRegression(max_iter=10000)
  37. # 训练模型
  38. model.fit(X_train, y_train)
  39. # 打印模型的训练结果
  40. print("逻辑回归模型训练完成")
  41. # 5. 模型评估
  42. # 预测
  43. y_pred = model.predict(X_test)
  44. # 打印预测结果的前十个
  45. print(f'预测结果前十个: {y_pred[:10]}')
  46. # 计算准确率
  47. accuracy = accuracy_score(y_test, y_pred)
  48. print(f'Accuracy: {accuracy}')
  49. # 混淆矩阵
  50. conf_matrix = confusion_matrix(y_test, y_pred)
  51. print('Confusion Matrix:')
  52. print(conf_matrix)
  53. # 分类报告
  54. class_report = classification_report(y_test, y_pred)
  55. print('Classification Report:')
  56. print(class_report)
  57. # 6. 结果可视化
  58. # 绘制混淆矩阵
  59. plt.figure(figsize=(10, 7))
  60. sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
  61. plt.title('Confusion Matrix')
  62. plt.xlabel('Predicted')
  63. plt.ylabel('Actual')
  64. plt.show()

结论

通过本文的讲解,在PyCharm中使用逻辑回归模型进行乳腺癌检测的预测。从数据准备、数据预处理、模型训练到结果评估与可视化,提供了详细的步骤和代码示例。通过这些步骤,你可以掌握如何应用逻辑回归模型进行疾病预测,并根据模型的评估结果优化和改进模型。


本文转载自: https://blog.csdn.net/2303_77720864/article/details/140111420
版权归原作者 小李很执着 所有, 如有侵权,请联系我们删除。

“【机器学习】在【Pycharm】中的实践教程:使用【逻辑回归模型】进行【乳腺癌检测】”的评论:

还没有评论