首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TensorFlow规范化与Scikit-学习规范化

TensorFlow规范化与Scikit-学习规范化
EN

Stack Overflow用户
提问于 2022-09-01 17:13:31
回答 1查看 67关注 0票数 2

我一直在学习一门机器学习课程,在回归课的最后一个额外的循环作业是

波士顿定价数据集 TensorFlow tf.keras.datasets导入并对其建模。

在课程中,我了解到规范化数据集对训练模型是有益的,所以我想在波士顿数据集上试一试。指导员给出的关于规范化的示例使用了sklearn库,但是在我的搜索过程中,我发现TensorFlow还有一个规范化实用程序tf.keras.utils.normalize

TensorFlow解决方案要简单得多,这让我们怀疑为什么讲师没有在sklearn方法上使用该方法。这就引出了我的问题:

当我应该选择一种规范化方法而不是另一种方法时,是否有特定的原因/用例,还是仅仅是一个偏好的问题?

我在代码中使用的TensorFlow规范化:

代码语言:javascript
复制
X_train_normalized = tf.keras.utils.normalize(X_train)
X_test_normalized = tf.keras.utils.normalize(X_test)

正如课程中所演示的那样,sklearn正常化:

代码语言:javascript
复制
# Create column transformer (this will help us normalize/preprocess our data)
ct = make_column_transformer(
    (MinMaxScaler(), ["age", "bmi", "children"]), # get all values between 0 and 1
    (OneHotEncoder(handle_unknown="ignore"), ["sex", "smoker", "region"])
)

# Create X & y
X = insurance.drop("charges", axis=1)
y = insurance["charges"]

# Build our train and test sets (use random state to ensure same split as before)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Fit column transformer on the training data only (doing so on test data would result in data leakage)
ct.fit(X_train)

# Transform training and test data with normalization (MinMaxScalar) and one hot encoding (OneHotEncoder)
X_train_normal = ct.transform(X_train)
X_test_normal = ct.transform(X_test)
EN

回答 1

Stack Overflow用户

发布于 2022-09-01 18:51:46

注意,甚至您也可以在训练模型之前定义规范化层并对训练数据进行调整,然后在模型结构中使用计算的均值、方差来实现该层。

代码语言:javascript
复制
norm_layer = tf.keras.layers.Normalization(axis=-1)
norm_layer.adapt(X_train)

因此,我认为这将取决于您正在处理的案例,特别是当您的数据集只需要规范化时。正如你所知道的,神经网络和线性模型一样,在规范化数据集上有最好的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73573226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档