我有以下数据集,我正在将其读入Pandas Dataframe :
age gender bmi smoker married region value
39 female 23.0 yes no us 136
28 male 22.0 no no us 143
23 male 34.0 no yes europe 153
17 male 29.0 no no asia 162
性别、吸烟者和地区是分类价值。所以我将它们转换(使用replace函数表示性别和吸烟者,使用一个hot编码表示区域。结果如下:
age sex bmi smoker married value r_asia r_europe r_us
39 1 23.0 1 0 136 0 0 1
28 0 22.0 0 0 143 0 0 1
23 0 34.0 0 1 153 0 1 0
17 0 29.0 0 0 162 1 0 0
然后我将其分为功能和目标
y = dataset['value'].values
X = dataset.drop('value',axis=1).values
接下来,我将分为训练和测试集:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
作为下一步,我想正常化。通常我会这样做:
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
然而,这也使分类值正常化。我只想规范化非分类值(在本例中,唯一的非分类值是“bmi”)。
如何仅规范化“bmi”列并将这些规范化值插入X_train和X_test?
1条答案
按热度按时间rslzwgfq1#
train_test_split返回NumPy数组的列表(X_train是其中之一),而不是 Dataframe ,因此
X_train["bmi"]
引发异常。StandardScaler也一样。因此,有一种方法可以做到这一点: