scikit-learn 数据预处理方法详解

一、train_test_split():对数据集(Dataset)进行分割

在实际应用中,通常需要将数据集分割成训练集和测试集。

1、语法如下

from sklearn.model_selection import train_test_split

train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)

2、参数与返回值详解

类别名称说明与常见用法
** 核心参数***arrays必需。要划分的数据序列,如特征数组 X 和标签数组 y。允许的输入包括列表、numpy数组、DataFrame等,但所有数组的第一维(样本数)长度必须相同。
test_size测试集大小。浮点数 (如 0.2) 表示比例,整数 表示绝对样本数。默认值为 None,此时若未设置 train_size,则使用 0.25
train_size训练集大小。规定同 test_size。通常只需设置一个,另一个会自动计算。
random_state随机种子(整数)。固定此值可确保每次划分结果一致,便于复现实验。为 None 时每次划分结果不同。
shuffle是否在划分前打乱数据。默认为 True。如果设置为 False,则按数据原始顺序划分,且 stratify 必须为 None
stratify分层抽样的依据。设置为标签数组 y 可以保持训练集和测试集中各类别的比例与原数据集一致。对于处理类别不均衡的数据集非常有用。
** 返回值**X_train, X_test, y_train, y_test函数返回一个包含四个元素的元组,依次是:训练集特征测试集特征训练集标签测试集标签。返回数据的类型与输入类型一致。

3、实例

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  • 以上代码调用 train_test_split 函数,并将结果赋值给四个变量:X_train、X_test、y_train 和 y_test。
  • X 和 y 是传入 train_test_split 函数的参数,它们分别代表特征数据集和目标变量(标签)。通常 X 是一个二维数组,y 是一个一维数组。
  • test_size=0.3 参数指定了测试集的大小应该是原始数据集的 30%。这意味着 70% 的数据将被用作训练集,剩下的 30% 将被用作测试集。
  • random_state=42 参数是一个随机数种子,用于确保每次分割数据集时都能得到相同的结果。这在实验和模型验证中非常有用,因为它确保了结果的可重复性。
from sklearn.model_selection import train_test_split
# 选择特征、自变量和目标变量 2分
selected_features = ['cylinders', 'displacement', 'horsepower', 'weight',
       'acceleration', 'model year', 'origin']
X = data[selected_features]
y = data['mpg']

# 划分数据集为训练集和测试集(训练集占8成) 1分
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.2,random_state=42)


# 将特征和目标变量合并到一个数据框中
cleaned_data = X.copy()
cleaned_data['mpg'] = y

# 保存清洗和处理后的数据(不存储额外的索引号) 1分
cleaned_data.to_csv('2.1.1_cleaned_data.csv', index=False)

二、数据标准化(Standardization)(z-score)

数据标准化(Standardization)的定义详见数据标准化定义

1、语法定义

其中StandardScaler是一个类,

from sklearn.preprocessing import StandardScaler

StandardScaler(*, copy=True, with_mean=True, with_std=True)

2、参数详解

参数名类型默认值说明
copybooleanTrueTrue 时会创建数据的副本进行处理,不改变原始数据;为 False 则尝试就地修改,但不保证总能成功(例如当输入数据不是NumPy数组或CSR矩阵时,仍可能返回副本)。
with_meanbooleanTrueTrue 时,在缩放前会先减去均值(中心化),使数据均值为0。处理稀疏矩阵(如CSR、CSC)时必须设为 False,否则会抛出异常,因为中心化会破坏其稀疏结构 。
with_stdbooleanTrueTrue 时,在缩放时会除以标准差(缩放),使数据标准差为1 。

3、方法详解

StandardScaler 的主要方法构成了典型的工作流程:拟合(计算统计量)-> 转换 -> (可选)逆转换。

其中X代表特征矩阵,是一个二维数组

方法主要参数返回值与作用常用场景
fit(X, y=None)X: 训练数据返回 self(StandardScaler对象本身)。核心作用是计算并保存训练数据 X 每个特征的均值(mean_)、方差(var_)和标准差(scale_)。初始化,从训练数据学习标准化参数。
transform(X)X: 待转换的数据(类数组)返回与 X 形状相同的NumPy数组或稀疏矩阵。核心作用是利用 fit 阶段学到的 mean_scale_,对输入数据 X 进行标准化转换:(X - mean_) / scale_对训练集、测试集或新数据进行标准化。关键:对测试集应使用从训练集学到的相同scaler进行 transform,而非重新 fit
fit_transform(X, y=None)X: 训练数据返回转换后的数据。核心作用相当于先调用 fit(X),再调用 transform(X)。这是一个便捷的方法 。一步完成对训练数据的拟合和转换。
inverse_transform(X)X: 已被标准化过的数据返回与输入 X 形状相同的数组。核心作用是执行标准化的逆过程,将数据尽可能还原到原始尺度:X * scale_ + mean_将标准化后的预测结果或数据还原回原始尺度,便于解释 。
partial_fit(X, y=None)X: 一批数据返回 self核心作用是在线计算均值和标准差,适用于数据量过大无法一次性载入内存时进行增量学习 。大型数据集的批量标准化。

其中在调用 fit 方法后,原对象会包含以下计算出的属性 :

属性名说明
mean_形状为 (n_features,) 的数组,保存训练数据中每个特征的均值。如果 with_mean=False,则该属性为 None
var_形状为 (n_features,) 的数组,保存训练数据中每个特征的方差 。
scale_形状为 (n_features,) 的数组,保存训练数据中每个特征的标准差(即 scale_ = np.sqrt(var_))。
n_samples_seen_整数或数组,表示拟合过程中处理的样本数量。当数据完整时为一个整数;如果使用了 partial_fit 方法进行增量学习,它可能是一个数组 。

注意 transform(X)与 fit方法有严格的先后顺序:​必须先调用 fit方法,然后才能调用 transform方法。

三、数据归一化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值