我正在使用Pandas 0.24.2
为机器学习准备一些数据。要设置数据,我使用了StandardScaler()
中的scikit-learn
对功能进行了规范化。但是,我收到关于
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
奇怪的是,我已经在数据帧上使用了.iloc[]
方法。这是下面的代码本身。请注意,x_train, x_test
是数据帧。
dat = pd.read_csv('/path/data.csv')
x_train, x_test = train_test_split(dat,
test_size=0.2,
random_state=42)
scaler = StandardScaler()
x_train.iloc[:, :-1] = scaler.fit_transform(x_train.iloc[:, :-1])
x_test.iloc[:, :-1] = scaler.transform(x_test.iloc[:, :-1])
x_mean = scaler.mean_
x_std = scaler.scale_
有人能弄清楚实际问题是什么吗?我避免重新缩放数据框中的最后一列,因为它是标签列。