gpt4 book ai didi

python-3.x - 二进制分类 predict() 方法 : sklearn vs keras

转载 作者:行者123 更新时间:2023-12-05 09:17:17 24 4
gpt4 key购买 nike

我尝试将我的 sklearn 代码迁移到 keras 上的一个基本的二进制分类 示例。我对返回不同于 sklearnkeras predict() 方法有疑问。

sklearn

print("X_test:")
print(X_test)
y_pred = model.predict(X_test)
print("y_pred:")
print(y_pred)

XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=3, min_child_weight=1, missing=None, n_estimators=100, nthread=-1, objective='binary:logistic', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1)

--- 预测 Sklearn ---

X_test: [[ 1. 90. 62. ..., 27.2 0.58 24. ] [ 7. 181. 84. ..., 35.9 0.586 51. ] [ 13.
152. 90. ..., 26.8 0.731 43. ] ..., [ 4. 118. 70. ..., 44.5 0.904 26. ] [ 7. 152. 88. ..., 50. 0.337 36. ] [ 7. 168. 88. ..., 38.2 0.787 40. ]]

y_pred: [ 0. 1. 1. 0. 1. 1. 0. 0. 1. 0. 1. 0. 1. 1. 0. 0. 0. 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 1. 0. ... 0. 0. 1. 0. 1. 0. 0. 1. 0. 1. 0. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. 0. 0. 1. 0. 1. 1. 1. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 1. 1. 0. 0. 1. 0. 1. 0. 0. 0. 0. 1. 1. 1.]

predict() 返回的数据类型:X_test 维度的二进制向量(OK)。

凯拉斯

score = aTSSeqModel.evaluate(X_test, Y_test2, batch_size=32)

Score: [1.4839521383676004, 0.6338582667778796]

这 2 个值代表什么?

print("--- Predict Keras ---")
print("X_test:")
print(X_test)
Y_pred2 = aTSSeqModel.predict(X_test, batch_size=32)
print("Y_pred:")
print(Y_pred2)

keras.models.Sequential object at 0x7fae3a60b438

---预测Keras---

X_test: [[ 1. 90. 62. ..., 27.2 0.58 24. ] [ 7. 181. 84. ..., 35.9 0.586 51. ] [ 13.
152. 90. ..., 26.8 0.731 43. ] ..., [ 4. 118. 70. ..., 44.5 0.904 26. ] [ 7. 152. 88. ..., 50. 0.337 36. ] [ 7. 168. 88. ..., 38.2 0.787 40. ]]

Y_pred: [[ 9.07712865e-21] [ 0.00000000e+00] [ 1.27839347e-25] [ 2.38120656e-22] [ 5.51314650e-20] [ 1.99869346e-22] [ 1.54212393e-19]...

keras 模型中使用 predict() 是正确的方法吗?

我希望像 sklean 那样得到一个二进制向量,它是应用于 X_test 数据集的预测结果。什么代表该 2D 向量及其值?

感谢您的回答。

最佳答案

What those 2 values represent ?

假设您编译模型时将 metrics 标志设置为

model.compile(optimizer='...', loss='...', metrics=['acc'])

然后调用 model.evaluate(X, Y) 将返回一个数组,其中第一个值是 model.predict(X)Y,第二个值是相同数据上的准确率。
它也扩展到其他指标。

Is it the correct way to use predict() with keras model?

是的。
Scikit-learn 的 predict() 返回形状为 (n_samples, ) 的数组,而 Keras 返回形状为 (n_samples, 1) 的数组.这两个数组对于您的目的是等价的,但是来自 Keras 的数组更通用一些,因为它更容易扩展到多维输出情况。要将 Keras 输出转换为 Sklearn 的输出,只需调用 y_pred.reshape(-1)
至于为什么 Scikit-learn 的值会自动四舍五入,我不知道,但这可能与 Sklearn 使用的内部数据类型有关。如果您愿意,可以像这样舍入 Keras 的值:

y_pred[y_pred <= 0.5] = 0.
y_pred[y_pred > 0.5] = 1.

干杯

关于python-3.x - 二进制分类 predict() 方法 : sklearn vs keras,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619132/

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