📜  使用Scikit-learn进行癌细胞分类(1)

📅  最后修改于: 2023-12-03 14:49:51.463000             🧑  作者: Mango

使用Scikit-learn进行癌细胞分类

介绍

机器学习广泛应用于癌症研究,可以帮助诊断、分期、治疗方案选择等方面。Scikit-learn是一个强大的机器学习库,提供了许多算法和工具,可以用于分类、回归、聚类等任务。本文将介绍如何使用Scikit-learn对癌细胞数据进行分类。

准备数据

我们将使用UCI机器学习库中的Breast Cancer Wisconsin (Diagnostic)数据集,该数据集包含569个样本,每个样本有30个特征和一个二元分类标签(恶性或良性)。数据集可以从该网址下载:https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Diagnostic) 。我们可以先下载并把数据保存在当前工作目录中。

import pandas as pd

# 读取数据
data = pd.read_csv('wdbc.data', header=None)

# 获取特征和标签
X = data.loc[:, 2:].values
y = data.loc[:, 1].values

# 将标签转换为0-1编码
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
y = le.fit_transform(y)
数据预处理

接下来我们需要对数据进行预处理,包括数据集的划分和特征缩放。我们将数据集划分为训练集和测试集,其中训练集用于训练模型,测试集用于评估模型性能。我们使用Scikit-learn的train_test_split方法来划分数据集,并使用StandardScaler对特征进行缩放。

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1, stratify=y)

# 对特征进行缩放
sc = StandardScaler()
X_train_std = sc.fit_transform(X_train)
X_test_std = sc.transform(X_test)
选择模型

选择合适的模型是机器学习的关键之一。在分类任务中,我们可以选择逻辑回归、支持向量机、决策树、随机森林等算法。在这里我们选择支持向量机(SVM)作为分类器,因为SVM在处理高维、非线性数据时表现优秀。

from sklearn.svm import SVC

# 构造SVM模型
svm = SVC(kernel='rbf', random_state=1, gamma=0.1, C=1.0)

# 训练模型
svm.fit(X_train_std, y_train)
模型评估

模型评估是机器学习的另一个关键环节,它用来评估模型在测试集上的性能。常用的评估指标包括准确率、精确率、召回率、F1得分等。在这里我们将使用准确率作为评估指标。

from sklearn.metrics import accuracy_score

# 在测试集上评估模型
y_pred = svm.predict(X_test_std)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy: %.2f' % accuracy)

输出结果:Accuracy: 0.98

结论

本文介绍了如何使用Scikit-learn对癌细胞数据进行分类。我们首先准备了数据,然后对数据进行预处理,包括数据集划分和特征缩放。接着我们选择了支持向量机作为分类器,并训练了模型。最后,我们通过测试集评估了模型的性能,并得到了较高的准确率。Scikit-learn提供了许多机器学习工具,可以帮助我们更高效地研究癌症等疾病问题。