数据处理与缺失值处理
-
缺失值标记与检测
- 使用
pandas
检测空值(NaN
),并通过NA_values
标记自定义空值(如N/A
)。 - 空值处理方式:删除(
dropna
)、填充(如均值、中位数、常数)、忽略。 - 示例:删除空值后仅保留无空值的行;填充空值为666或列均值。
- 使用
-
Scikit-learn 库的缺失值处理
- 使用
SimpleImputer
进行填充:- 默认均值填充,支持中位数、常数(如0)等。
- 流程:
fit
(计算填充值) →transform
(应用填充)。
- 数据形状调整:
reshape(-1, 1)
表示强制转换为单列,行数自动计算。
- 使用
数据标准化
-
最大最小值标准化(Min-Max Scaling)
- 公式:(X - \text{min}) / (\text{max} - \text{min}),默认缩放到 [0, 1]。
- 分列计算:每列独立求最小/最大值后标准化(非整体计算)。
- 扩展:通过线性变换(如
加1后乘5
)可调整到任意区间(如 [5, 10])。
-
Z值标准化(Standard Scaling)
- 公式:(X - \text{均值}) / \text{标准差},使数据服从标准正态分布(均值0,方差1)。
- 示例:调用
StandardScaler
的fit
(计算均值/方差)和transform
。
特征编码
-
分类变量处理
- 名义变量(独立无关联):One-Hot编码(如性别 →
[1,0]
/[0,1]
)。 - 有序变量(有顺序但不可计算):序号编码(如学历 →
1,2,3
)。 - 有矩变量(可计算):直接使用数值(如分数)。
- 名义变量(独立无关联):One-Hot编码(如性别 →
-
二值化(Binarization)
- 将连续值离散化:设定阈值(如30),大于阈值置1,否则置0。
- 应用示例:年龄列按阈值分类,输出转换后的二进制结果。
关键概念
fit
与transform
:fit
:计算所需参数(如均值、方差)。transform
:应用参数完成数据转换。
- 数据形状调整:
reshape(-1, 1)
表示“自动计算行数,保留1列”。 -
数据切分与处理
- 对数据进行行索引和列索引的切分(ILC 和 LC 的区别),保留所有行和第一列。
- 切分后调整数据形状为一列,实际未改变数据内容。
- 将切分结果赋值给变量
X
,用于后续的二值化操作。
-
二值化操作
- 对
X
进行二值化处理,阈值为 30:大于 30 的值设为 1,小于等于 30 的值设为 0。 - 使用
transform
方法完成整体操作,结果需通过切分后的X
替换原始数据才能显示。 - 若不替换,原始数据的结果不会更新。
- 对
-
输出与验证
- 输出前五行数据(实际截取前三行展示)。
- 直接输出
transformer
会显示二值化后的结果,但未明确具体格式。
总结:
原始数据先“洗”(缺失值处理)再“缩”(标准化/归一化)再“编”(特征编码),就能让机器学习模型吃得更香、跑得更快、结果更稳。