gpt4 book ai didi

python - Sklearn - 适合、缩放和变换

转载 作者:行者123 更新时间:2023-12-02 18:35:06 28 4
gpt4 key购买 nike

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() 的用途或多种用途,以及缩放和转换数据的区别吗?

最佳答案

fit() 函数提供了一个在所有 scikit-learn 对象之间共享的通用接口(interface)。

此函数将 X ( 和有时 y 数组作为参数来计算对象的统计信息。例如,在 MinMaxScaler 转换器上调用 fit将计算其统计数据(data_min_data_max_data_range_...

因此,我们应该将 fit() 函数视为一种计算对象必要统计信息的方法。

这个公共(public)接口(interface)非常有用,因为它允许使用 Pipeline 将转换器和估算器组合在一起。这允许一次性计算和预测所有步骤,如下所示:

from sklearn.pipeline import make_pipeline
from sklearn.datasets import make_classification

from sklearn.preprocessing import MinMaxScaler
from sklearn.neighbors import NearestNeighbors


X, y = make_classification(n_samples=1000)
model = make_pipeline(MinMaxScaler(), NearestNeighbors())
model.fit(X, y)

这也提供了将整个模型序列化为一个对象的可能性。

如果没有这个组合模块,我可以同意你的看法,使用独立的转换器和估算器并不是很实际。

关于python - Sklearn - 适合、缩放和变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68896760/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com