【发布时间】:2021-08-28 10:34:12
【问题描述】:
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()的用途或多种用途,以及缩放和转换数据的区别吗?
【问题讨论】:
标签: python scikit-learn