Advertisement

乳腺癌数据集探索

阅读量:

乳腺癌数据集探索总结:
加载并查看数据:使用loadbreastcancer加载数据集,其中data为569x30的特征矩阵(样本数569个),target为长度为569的目标向量(值为0或1)。
合并特征与标签:通过numpy.c_将data与target合并成一个完整的数组,并生成包含所有字段的数据框。
拆分训练与测试集:使用traintestsplit将数据按7:3比例拆分为训练与测试集合,并设置随机种子以确保结果可重复。
分析分布:比较未加stratify时默认分配的结果与加stratify后的均匀分配情况。

  • 未加stratify时,默认分配可能不均衡。
  • 加stratify后,各类别在训练与测试集中保持原分布比例一致。
    该过程展示了如何高效地进行乳腺癌数据预处理及验证拆分效果的方法。

乳腺癌数据集探索

    1. 导入数据集
    1. 读取特征数据集data和目标值target,并分析其维度信息
    1. 将特征数据集与标签向量进行整合
    1. 创建包含特征的数据框结构
    1. 将数据划分为训练集与测试集两部分
    1. 分析训练数据在各类别中的均衡分布情况
    1. 检查训练集中各类别样本的比例是否均衡

一、加载数据集

复制代码
    from sklearn.datasets import load_breast_cancer
    breast_cancer = load_breast_cancer()

二、读取特征data和目标值target,并查看行数和列数

复制代码
    data = breast_cancer['data']
    target = breast_cancer['target']
    data.shape, target.shape

shape属性返回一个元组(569, 30),这表明该数据集共有569个样本点及各自具有的30个特征维度。其中标签数组的形状为一维向量(569,) ,仅包含单一分类标签,并分别对应于无乳腺癌和有乳腺癌两种类别。

三、合并data和target

基于numpy.c_方法,在沿列方向完成两个数组的合并操作。

复制代码
    import numpy as np
    all_datas = np.c_[data, target]
    all_datas.shape    # 返回值是(569, 31)

四、生成DataFrame

请说明如何使用pandas的DataFrame来创建一个包含data和target的数据框,并详细描述其columns参数应该如何设置才能使目标变量名为'target'。

复制代码
    import pandas as pd
    df = pd.DataFrame(
    data=all_datas,
    columns=list(breast_cancer['feature_names']) + ['target']
    )

将训练集与测试集划分为两部分进行处理

为随机数生成器设定一个种子的目的在于确保训练集与测试集的分割始终一致且可重复。如果不设定随机数生成器的种子,则每次运行的结果都将不一致。

复制代码
    X_train, X_test, y_train, y_test = train_test_split(data, target, random_state=20, test_size=0.3)

审视训练数据与测试样本的目标字段分布情况

复制代码
    for name, array in zip(['target', 'y_train', 'y_test'], [target, y_train, y_test]):
    print(name)
    print(pd.Series(array).value_counts(normalize=True))
    print()

结果如下:

在这里插入图片描述

七、测试训练集的均匀拆分

在使用train_test_split()函数拆分时,添加stratify参数即可:

复制代码
    X_train, X_test, y_train, y_test = train_test_split(data, target, random_state=20, test_size=0.3, stratify=target)
    for name, array in zip(['target', 'y_train', 'y_test'], [target, y_train, y_test]):
    print(name)
    print(pd.Series(array).value_counts(normalize=True))
    print()

呈现为图中所示结果后,则可观察到原始目标列target与训练集目标列y_train以及测试集目标列y_test中的乳腺癌0,1所占比例基本趋同于彼此。

全部评论 (0)

还没有任何评论哟~