匹配变量#
- 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
将转换器拟合到X
和y
,并返回X
的转换版本。- 参数
- X形状为 (n_samples, n_features) 的类数组对象
输入样本。
- y类似数组的形状 (n_samples,) 或 (n_samples, n_outputs), 默认=None
目标值(无监督变换时为None)。
- **拟合参数dict
附加的拟合参数。
- 返回
- X_newndarray 数组,形状为 (n_samples, n_features_new)
转换后的数组。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- 返回
- 路由MetadataRequest
一个封装了路由信息的
MetadataRequest
。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数
- 深度bool, 默认=True
如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。
- 返回
- 参数dict
参数名称映射到它们的值。