我不清楚应该在什么时候对我的数据进行缩放处理,以及如何进行缩放处理。另外,这种处理方式对于监督学习和非监督学习是否相同,对于回归、分类和神经网络是否也相同?
第一种方式:
df = pd.read_csv("mydata.csv")features = df.iloc[:,:-1]results = df.iloc[:,-1]scaler = StandardScaler()features = scaler.fit_transform(features)x_train, x_test, y_train, y_test = train_test_split(features, results, test_size=0.3, random_state=0)
第二种方式:
df = pd.read_csv("mydata.csv")features = df.iloc[:,:-1]results = df.iloc[:,-1]scaler = StandardScaler()x_train, x_test, y_train, y_test = train_test_split(features, results, test_size=0.3, random_state=0)x_train = scaler.fit_transform(x_train)x_test = scaler.fit_transform(x_test)
第三种方式:
df = pd.read_csv("mydata.csv")features = df.iloc[:,:-1]results = df.iloc[:,-1]scaler = StandardScaler()x_train, x_test, y_train, y_test = train_test_split(features, results, test_size=0.3, random_state=0)x_train = scaler.fit_transform(x_train)x_test = scaler.transform(x_test)
或者还有第四种方法吗?
此外,我有一些样本想用来进行预测,这些样本不在df
中,对于这些数据我应该怎么处理,是应该做:
samples = scaler.fit_transform(samples)
还是:
samples = scaler.transform(samples)
回答:
- 将数据分割成训练集和测试集。
- 使用训练数据集的均值和标准差对训练数据进行归一化处理。
- 使用
AGAIN
训练数据集的均值和标准差对测试数据进行归一化处理。
在现实世界中,你无法知道测试集的分布情况。所以你需要根据训练集的分布来进行处理。