📅  最后修改于: 2023-12-03 15:40:40.693000             🧑  作者: Mango
本文将介绍如何使用 Python 中的 sklearn 库进行 Logistic 回归,以诊断 Kaggle 乳腺癌威斯康星州诊断数据集。我们将探索如何读取和理解数据,如何对数据进行预处理,以及如何训练和评估 Logistic 回归模型。
数据集来自 Kaggle,包含乳腺癌诊断的特征和分类标签。该数据集可以从以下链接中下载:
https://www.kaggle.com/uciml/breast-cancer-wisconsin-data
数据集包括 569 个样本和 30 个特征,特征包括半径、纹理、周长、面积、平滑度等等。
我们将使用以下库:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
pandas 是一个开源数据分析工具,可用于导入和处理数据。我们将使用它来读取 CSV 文件。
numpy 是一个用于科学计算的 Python 库。我们将使用它来进行数组操作。
scikit-learn 是一个 Python 库,可用于机器学习任务,包括分类、回归和聚类。我们将使用它来拟合 Logistic 回归模型。
使用 pandas 从 CSV 文件中读取数据:
data = pd.read_csv('data.csv')
由于我们比较关心的是良性和恶性两种分类,我们将把 'M'(恶性)替换为 1,'B'(良性)替换为 0。我们还需要删除 'id' 和 'Unnamed: 32' 这两个列。
data.drop(['id', 'Unnamed: 32'], axis=1, inplace=True)
data.diagnosis = data.diagnosis.map({'M':1, 'B':0})
接下来,我们需要将数据划分为训练集和测试集。我们可以使用 train_test_split 函数来随机划分数据集。
X_train, X_test, y_train, y_test = train_test_split(data.drop('diagnosis', axis=1),
data.diagnosis,
test_size=0.2,
random_state=42)
创建一个 Logistic Regression 模型,并将训练数据拟合到模型上。我们可以使用 score 函数来评估模型的准确性。如果评分较低,我们可能需要尝试调整模型参数来获得更好的准确性。
lr = LogisticRegression(random_state=42)
lr.fit(X_train, y_train)
print(lr.score(X_train, y_train))
我们将使用 accuracy_score 和 confusion_matrix 两个函数来评估模型。
accuracy_score 函数将真实值和预测值作为输入,并输出准确性。准确性的值在 0 到 1 之间,1 表示预测完全正确,0 表示预测完全错误。我们可以通过调整模型参数来提高准确性。
y_pred = lr.predict(X_test)
print(accuracy_score(y_test, y_pred))
confusion_matrix 函数将真实值和预测值作为输入,并输出一个 2x2 矩阵,表示四种不同的结果情况(真正、假正、真负、假负)。
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)
在本文中,我们学习了如何使用 Python 中的 scikit-learn 库来进行 Logistic 回归分类任务。我们先读取了数据集,然后进行了预处理,最后将数据集划分为训练集和测试集。我们训练了一个 Logistic Regression 模型,并使用 accuracy_score 和 confusion_matrix 函数来评估模型的性能。在实际应用中,我们可能需要尝试不同的模型和参数,并选择最佳的模型来进行预测。