匹配变量#

class feature_engine.preprocessing.MatchVariables(fill_value=nan, missing_values='raise', match_dtypes=False, verbose=True)[源代码][源代码]#

MatchVariables() 确保在训练集中观察到的相同变量也存在于测试集中。如果待转换的数据集中包含训练集中未出现的变量,这些变量将被丢弃。如果待转换的数据集缺少训练集中存在的变量,这些变量将被添加到数据框中,其值由用户确定(默认为 np.nan)。

train = pd.DataFrame({
    "Name": ["tom", "nick", "krish", "jack"],
    "City": ["London", "Manchester", "Liverpool", "Bristol"],
    "Age": [20, 21, 19, 18],
    "Marks": [0.9, 0.8, 0.7, 0.6],
})

test = pd.DataFrame({
    "Name": ["tom", "sam", "nick"],
    "Age": [20, 22, 23],
    "Marks": [0.9, 0.7, 0.6],
    "Hobbies": ["tennis", "rugby", "football"]
})

match_columns = MatchVariables()

match_columns.fit(train)

df_transformed = match_columns.transform(test)

请注意,在返回的数据框中,变量“Hobbies”被移除,而变量“City”被添加并填充了np.nan:

df_transformed

    Name    City  Age  Marks
0    tom  np.nan   20    0.9
1    sam  np.nan   22    0.7
2   nick  np.nan   23    0.6

转换后的数据集中变量的顺序也进行了调整,以匹配训练集中观察到的顺序。

更多详情请参阅 用户指南

参数
fill_value: 整数, 浮点数或字符串. 默认=np.nan

将添加到转换后数据集的变量的值。

missing_values: string, default=’raise’

指示是否应忽略缺失值或引发错误。如果为 ‘raise’,当数据集包含缺失值时,转换器将返回错误。如果为 ‘ignore’,在学习参数或执行转换时将忽略缺失数据。

match_dtypes: bool, 默认=False

指示是否应将训练集中观察到的数据类型应用于测试集中的变量。

verbose: bool, default=True

如果为真,转换器将打印出添加和/或从数据集中移除的变量名称。

属性
feature_names_in_:

训练集中存在的变量,按照拟合期间观察到的顺序排列。

n_features_in_:

在拟合中使用的训练集中的特征数量。

dtype_dict_

如果 match_dtypes 设置为 True,那么此属性将存在,并且它将包含一个变量及其相应 dtypes 的字典。

示例

>>> import pandas as pd
>>> from feature_engine.preprocessing import MatchVariables
>>> X_train = pd.DataFrame(dict(x1 = ["a","b","c"], x2 = [4,5,6]))
>>> X_test = pd.DataFrame(dict(x1 = ["c","b","a","d"],
>>>                             x2 = [5,6,4,7],
>>>                             x3 = [1,1,1,1]))
>>> mv = MatchVariables(missing_values="ignore")
>>> mv.fit(X_train)
>>> mv.transform(X_train)
x1  x2
0  a   4
1  b   5
2  c   6
>>> mv.transform(X_test)
The following variables are dropped from the DataFrame: ['x3']
  x1  x2
0  c   5
1  b   6
2  a   4
3  d   7
>>> import pandas as pd
>>> from feature_engine.preprocessing import MatchVariables
>>> X_train = pd.DataFrame(dict(x1 = ["a","b","c"],
>>>                             x2 = [4,5,6], x3 = [1,1,1]))
>>> X_test = pd.DataFrame(dict(x1 = ["c","b","a","d"], x2 = [5,6,4,7]))
>>> mv = MatchVariables(missing_values="ignore")
>>> mv.fit(X_train)
>>> mv.transform(X_train)
  x1  x2  x3
0  a   4   1
1  b   5   1
2  c   6   1
>>> mv.transform(X_test)
The following variables are added to the DataFrame: ['x3']
  x1  x2  x3
0  c   5 NaN
1  b   6 NaN
2  a   4 NaN
3  d   7 NaN

方法

拟合:

识别训练集中的变量名称。

fit_transform:

适应数据。然后进行转换。

get_feature_names_out:

获取转换后的输出特征名称。

get_params:

获取此估计器的参数。

设置参数:

设置此估计器的参数。

变换:

添加或删除变量以匹配训练集中观察到的变量。

fit(X, y=None)[源代码][源代码]#

学习并存储训练数据集中变量的名称。

参数
X: pandas 数据框,形状为 = [样本数, 特征数]

输入的数据框。

y: None

y 对于这个转换器不是必需的。你可以传递 y 或 None。

fit_transform(X, y=None, **fit_params)[源代码]#

拟合数据,然后进行转换。

使用可选参数 fit_params 将转换器拟合到 Xy,并返回 X 的转换版本。

参数
X形状为 (n_samples, n_features) 的类数组对象

输入样本。

y类似数组的形状 (n_samples,) 或 (n_samples, n_outputs), 默认=None

目标值(无监督变换时为None)。

**拟合参数dict

附加的拟合参数。

返回
X_newndarray 数组,形状为 (n_samples, n_features_new)

转换后的数组。

get_feature_names_out(input_features=None)[源代码]#

获取转换后的输出特征名称。换句话说,返回转换后的数据框的变量名称。

参数
输入特征数组或列表,默认=None

此参数仅为了与 Scikit-learn 管道兼容而存在。

  • 如果 None,则使用 feature_names_in_ 作为特征名称。

  • 如果是一个数组或列表,那么 input_features 必须与 feature_names_in_ 匹配。

返回
feature_names_out: 列表

转换后的特征名称。

rtype

List[Union[str, int]] ..

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

返回
路由MetadataRequest

一个封装了路由信息的 MetadataRequest

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数
深度bool, 默认=True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回
参数dict

参数名称映射到它们的值。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,因此可以更新嵌套对象的每个组件。

参数
**参数dict

估计器参数。

返回
self估计器实例

估计器实例。

transform(X)[源代码][源代码]#

删除在训练集中未见过的变量,并添加在训练集中存在但在数据中不存在的变量。换句话说,它返回一个列匹配的数据框。

参数
X: pandas 数据框,形状为 = [样本数, 特征数]

要转换的数据。

返回
X_new: Pandas 数据框, 形状 = [n_samples, n_features]

包含与训练集中观察到的变量匹配的数据框。

rtype

DataFrame ..