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

被折叠的 条评论
为什么被折叠?



