我使用了来自sklearn.preprocessing的标准化模型。我在一个包含27个特征的数据集上拟合了标准化模型。是否有可能在测试数据集上使用相同的标准化模型,而这个测试数据集的特征少于27个?代码片段如下:
from sklearn.preprocessing import StandardScaler
sc=StandardScaler()
sc.fit_transform(x_train)
到目前为止一切正常。问题出现在我尝试转换测试数据集时。我知道为什么会发生这个问题。测试数据集只有24个特征。但是,是否有可能只转换这24个特征,并忽略那些不存在的列呢?
sc.transform(x_test)
提前感谢!!
回答:
如果想选择所有特征但不包括前3
个特征,可以使用DataFrame.iloc
:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
x_train.iloc[:, 3:] = sc.fit_transform(x_train.iloc[:, 3:])
print (x_train)
如果特征在列表中,可以使用subset
:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
features = ['col1','col2',..., 'col24']
x_train[features] = sc.fit_transform(x_train[features])
print (x_train)