基于有限特征的准确率预测

2024-04-25 14:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

一个基于是否以及以什么样的准确度/概率完成的练习问题,优步在订购后具有以下特点:

Available Drivers     int64
Placed Time           float64
Response Distance     float64
Car Type              int32
Day Of Week           int64
Response Delay        float64
Order Completion      int32 [target]

我的方法是克拉斯特遣部队以预测目标。下面是它的样子:

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(16, activation='relu', input_shape=input_shape),
    tf.keras.layers.Dense(16, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

adam_optimizer = tf.keras.optimizers.Adam(learning_rate=LEARNING_RATE)

binary_crossentropy_loss = tf.keras.losses.BinaryCrossentropy()

model.compile(optimizer=adam_optimizer,
              loss=binary_crossentropy_loss,
              metrics=['accuracy'])
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=ES_PATIENCE)

history = model.fit(train_dataset, validation_data=validation_dataset, epochs=EPOCHS, verbose=2,
                        callbacks=[early_stop])

我像这样规范化数据(注意,train\ u数据是一个数据帧):

    train_data = tf.keras.utils.normalize(train_data)

为了预测

predictions = model.predict_proba(prediction_dataset, batch_size=None)

培训结果:

loss: 0.3506 - accuracy: 0.8817 - val_loss: 0.3493 - val_accuracy: 0.8773

但这仍然给了我一个相应发生的低质量概率。这是错误的方法吗?你知道吗

对于这样的问题,你有什么建议?我是不是完全错了?对于这个解决方案,神经网络是个坏主意吗?谢谢!你知道吗


Tags: 数据datamodellayerstftrainvalactivation
2条回答

如果您正在进行分类,您可能需要研究集成方法(forest、boosts等)

如果你在计算概率,你可能想研究概率图形模型(贝叶斯网络等)

当你提出这个问题时,这是一个典型的机器学习分类问题。你知道吗

给定N个特征(自变量),你必须预测1(一)个因变量。你知道吗

你构建神经网络的方法很好。你知道吗

因为你有一个二进制分类的问题,乙状结肠激活是正确的。你知道吗

关于模型的复杂性(层的数量,每层神经元的数量),这在很大程度上取决于数据集。你知道吗

如果你有一个全面的数据集,有很多的特征和例子(一个例子是数据框中的一行X1,X2,X3。。。Y) ,其中X是特征,Y是因变量,模型的复杂度可能会有所不同。你知道吗

如果您的数据集很小,但有一些特性,建议使用小型模型。总是从一个小模型开始。你知道吗

如果遇到拟合不足的问题(训练集以及验证和测试集的准确性较差),可以逐渐增加模型的复杂性(添加更多层,每层添加更多神经元)。你知道吗

如果遇到过拟合问题,实施正则化技术可能会有所帮助(退出、L1/L2正则化、噪声添加、数据增强)。你知道吗

你需要考虑的是,如果你有一个小的数据集,那么一个经典的机器学习算法可能会优于深度学习模型。这是因为神经网络非常“饥渴”->;与机器学习模型相比,它们需要更多的数据才能正常工作。您可以选择支持向量机/核支持向量机/随机森林/XGBoost和其他类似的算法。你知道吗

编辑!你知道吗

是否以及以何种准确度/概率自动将问题分为两部分,而不仅仅是简单的分类。你知道吗

我个人会做的是:由于概率发生在0%到100%之间,如果你在X列中有概率作为一个特征(你没有),那么,根据你拥有的数据点(行)的数量,你可以做以下事情:我会给每个概率部分指定一个标签::1到(0%,25%),2到(25%,50%),3至(50%,75%),4至(75%,100%)。但这完全取决于先前的概率信息(如果将概率作为特征)。如果你推断得到标签3,你就会知道骑乘完成的概率。

否则,您不能将当前的问题同时定义为分类问题和概率问题。你知道吗

我希望我已经给你一个介绍性的见解。快乐的编码。你知道吗

相关问题 更多 >