特征工程
最后更新于
这有帮助吗?
在机器学习实验中,通常假设因变量和自变量之间的关系是线性的;然而,并非总是如此。有时因变量和自变量之间的关系更为复杂。创建新的多项式特征有时可能有助于捕捉这种关系,否则这种关系可能被忽视。
polynomial_features: bool, 默认值 = False 当设置为 True 时,将根据数据集中数值特征内的所有多项式组合,按照 polynomial_degree
参数中定义的次数创建新特征。
polynomial_degree: int, 默认值 = 2 多项式特征的次数。例如,如果输入样本是二维的,形式为 [a, b],则次数为 2 的多项式特征是:[1, a, b, a^2, ab, b^2]。
当数据集包含某种程度上相互关联的特征时,例如:在固定时间间隔记录的特征,那么可以使用 group_features
参数从现有特征创建一组此类特征的新的统计特征,例如 均值、中位数、方差和标准差。
group_features: list 或 list of list, 默认值 = None 当数据集包含具有相关特性的特征时,可以使用 group_features 参数进行统计特征提取。例如,如果数据集包含相互关联的数值特征(例如 'Col1'、'Col2'、'Col3'),可以在 group_features
下传递一个包含列名称的列表,以提取均值、中位数、众数和标准差等统计信息。
group_names: list, 默认值 = None 传递 group_features 时,可以将组名称作为一个包含字符串的列表传递给 group_names
参数。group_names
列表的长度必须等于 group_features
的长度。如果长度不匹配或未传递名称,则新特征将按顺序命名,例如 group_1、group_2 等。
bin_numeric_features: list, 默认值 = None 当传入数值特征列表时,它们使用 K-Means 转换为分类特征,其中每个 bin 中的值具有相同的最接近的 1D K-Means 聚类中心。聚类数量根据 'sturges' 方法确定。这种方法仅对高斯数据最优,并且对于大型非高斯数据集会低估 bin 的数量。
有时数据集可能包含具有非常多级别(即高基数特征)的分类特征(或多个分类特征)。如果此类特征被编码为数值,则结果矩阵将是稀疏矩阵。这不仅会由于特征数量急剧增加从而导致数据集大小增加而使实验变慢,还会引入噪声。可以通过合并高基数特征中的罕见级别来避免稀疏矩阵。这可以在 PyCaret 中使用 rare_to_value
参数实现。
rare_to_value: float 或 None, 默认值=None
分类列中类别出现的最小分数。如果某个类别的频率低于 rare_to_value * len(X)
,则将其替换为 rare_value
中的字符串。使用此参数在编码列之前对罕见类别进行分组。如果为 None,则忽略此步骤。
rare_value: str, 默认值="rare"
用于替换罕见类别的值。当 rare_to_value
为 None 时忽略。
特征分箱是一种使用预定义数量的箱将连续变量转换为分类值的方法。 当连续特征具有太多唯一值或少数超出预期范围的极端值时,这种方法很有效。这些极端值会影响训练好的模型,从而影响模型的预测准确性。在 PyCaret 中,可以使用 bin_numeric_features
参数将连续数值特征分箱到区间中。PyCaret 使用“sturges”规则确定 bin 的数量,并使用 K-Means 聚类将连续数值特征转换为分类特征。