sklearn
中的fit()
方法在同一接口中似乎有不同的用途。当应用于训练集时,如下所示:
model.fit(X_train, y_train)
fit()
用于学习参数,并在测试集上使用predict(X_test)
。然而,有些情况下fit()
并不涉及“学习”,只是对数据进行一些归一化处理,例如:
min_max_scaler = preprocessing.MinMaxScaler()
min_max_scaler.fit(X_train)
这将简单地将特征值在0到1之间进行缩放,以避免某些具有较高差异性的特征对模型产生不成比例的影响。
更加令人费解的是,有时需要在已经进行了缩放(似乎已经进行了转换)的fit()
方法后跟随进一步的transform()
方法,然后再次使用fit()
方法来实际学习和构建模型,如下所示:
X_train2 = min_max_scaler.transform(X_train)
X_test2 = min_max_scaler.transform(X_test)
# the model being used
knn = KNeighborsClassifier(n_neighbors=3,metric="euclidean")
# learn parameters
knn.fit(X_train2, y_train)
# predict
y_pred = knn.predict(X_test2)
请问有人能够澄清fit()
的用法或多种用法,以及缩放和转换数据的区别吗?