(第二十五节课内容总结)
有序变量表示类别之间存在顺序关系,例如学历(小学、初中、高中),但它们之间不能直接进行数学计算。为了在模型中表示这些有序变量,我们可以使用编号(如1、2、3)来表示它们的顺序,以保留它们之间的关系。
在机器学习中,模型通常需要数字型数据作为输入。因此,非数字型数据需要转换为数字型。常见的转换方法包括:
One-Hot 编码:将类别变量转换为二进制向量,例如,A 类别可以表示为 [1, 0, 0],B 类别表示为 [0, 1, 0]。
序号编码:适用于类别之间有大小关系的情况,如成绩的高低。可以用数字1、2、3来表示“低、中、高”。这种编码保留了类别之间的大小关系。
目标标签编码:通常用于标签类特征,从0开始对类别进行连续编号,如1、2、3、4等。这种方法操作简单,但可能会引入不存在的顺序关系。
二值化编码:将连续型变量根据某个阈值转换为两类。例如,年龄大于30岁为一类,小于等于30岁为另一类。这种方法常用于逻辑回归等模型中,其核心思想是将数据离散化。
在处理数据时,我们通常需要根据数据的特点选择合适的编码方法,以确保模型能够正确理解和处理数据。
数据标准化:
preprocessing.scale()
:将数据的均值调整为0,方差调整为1,适用于大多数机器学习算法。最大最小值标准化:
preprocessing.MinMaxScaler()
:将数据缩放到指定的最小值和最大值之间,通常是[0, 1]。数据标准化(Z-score标准化):
preprocessing.StandardScaler()
:将数据的均值调整为0,标准差调整为1,适用于特征尺度相近的情况。绝对值最大标准化:
preprocessing.MaxAbsScaler()
:将每个特征除以其绝对值的最大值,使所有值落在[-1, 1]之间。带离群值数据集标准化:
preprocessing.RobustScaler()
:使用中位数和四分位距进行缩放,对离群点不敏感。分位数信息变换特征:
preprocessing.QuantileTransformer()
:将原始分布映射到均匀分布,基于分位数而非均值/方差。幂变换:
preprocessing.PowerTransformer()
:对数据进行幂变换,使数据更接近正态分布。正则化:
preprocessing.Normalizer()
:将数据的特征缩放到单位范数,每个样本的特征向量长度缩放到1。分类特征转换为分类数值:
preprocessing.OrdinalEncoder()
:将分类特征转换为有序数值。preprocessing.LabelEncoder()
:将分类标签转换为数值型编码,主要用于目标变量。多标签二值化:
preprocessing.MultiLabelBinarizer()
:将多个类别标签转换为二进制矩阵。独热编码:
preprocessing.OneHotEncoder()
:将每个类别变量转换为多个二进制特征列。将连续数据离散化:
preprocessing.KBinsDiscretizer()
:将连续数据转换为离散的bin。自定义特征处理函数:
preprocessing.FunctionTransformer()
:允许用户定义自己的特征处理函数。特征二值化:
preprocessing.Binarizer()
:将特征二值化,大于阈值的归为一类,小于等于阈值的归为另一类。创建多项式特征:
preprocessing.PolynomialFeatures()
:生成多项式特征,捕捉特征间的非线性关系。弥补缺失值:
preprocessing.Imputer()
:通过指定策略(如均值、中位数、众数或常数)填补缺失值。