Python 如何构造布尔结果的机器学习模型?

Python 如何构造布尔结果的机器学习模型?,python,machine-learning,keras,scikit-learn,Python,Machine Learning,Keras,Scikit Learn,我对Python和机器学习相当陌生。我试图为下面的问题提出一些模型:我有一堆x-y关系形式的数据,这些数据描述了一个正的和同一类型的数据描述了一个负的 由于数据是不统一的,有时我有2000行描述一个正的,有时只有200行,我试着在一个图形中绘制它,并在一些Conv2D、MaxPooling、flatte和Dense层中运行它们 现在这很好,精度指标在95%到100%之间,但我的问题是该模型如何重新计算浮点值而不是真或假,我无法真正辨别我的模型的真实精度有多高。我如何从那里开始 另外,我可以使用哪

我对Python和机器学习相当陌生。我试图为下面的问题提出一些模型:我有一堆x-y关系形式的数据,这些数据描述了一个正的和同一类型的数据描述了一个负的

由于数据是不统一的,有时我有2000行描述一个正的,有时只有200行,我试着在一个图形中绘制它,并在一些Conv2D、MaxPooling、flatte和Dense层中运行它们

现在这很好,精度指标在95%到100%之间,但我的问题是该模型如何重新计算浮点值而不是真或假,我无法真正辨别我的模型的真实精度有多高。我如何从那里开始

另外,我可以使用哪些超参数来获取布尔返回?什么类型的模型适合这个问题?谢谢你抽出时间

编辑: 我的模型使用以下代码:

model=Sequential()
添加(Conv2D(512,内核大小=(5,5),activation=“relu”,padding=“same”,input\u shape=(400800,1)))
模型。添加(辍学(0.3))
model.add(MaxPooling2D())
添加(Conv2D(256,内核大小=(5,5),activation=“relu”,padding=“same”))
model.add(MaxPooling2D())
添加(Conv2D(128,内核大小=(5,5),activation=“relu”,padding=“same”))
模型。添加(辍学(0.3))
model.add(MaxPooling2D())
model.add(展平())
model.add(密集(256,activation=“relu”))
模型。添加(辍学(0.3))
model.add(密集(1,activation=“sigmoid”))
model.compile(优化器=Adam(学习率=0.0001),loss=“二进制交叉熵”,metrics=[“准确度”])

输出是一个介于0和1之间的数字。我想知道如何构建一个具有布尔输出的神经网络,或者通过其他方式,我可以对测试数据获得适当的精度。

您的输出包含一个sigmoid函数,这意味着正如您所说,您的网络在区间[0,1]中输出一个值。您可以将此输出视为概率分布。因此,如果输出<0.5,则为0/假;如果输出大于0.5,则为1/真。

很难确定您的问题是因为您没有显示代码。但基于您的架构(层),我认为您错过了最后一层,即激活层(即ReLU或sigmoid函数)。您提出了错误的问题,您已经有了一个可以工作的模型,您应该要求了解它是如何工作的,以及如何将输出转换为二进制决策,这里已经有很多问题了。我可以这样做,而在手动进行验证的同时,我一直在这样做,但这样操作数字似乎并不正确。谢谢你的评论。这就是方法。没有其他方法可以做到这一点。您有一个二进制分类任务,并使用二进制交叉熵损失。这个损失计算的正是我提到的概率分布。你的模型学习了一个概率分布,从这个分布中,你得到了最终的标签。这里没有操纵。如果我能正确理解你的话,这已经是事实了。谢谢你。你有没有建议我可以用什么其他类型的模型来解决这个问题?我想从几个方面来回答这个问题。我的意思是,你当然可以尝试不同类型的基于CNN的网络。你指的是完全不同于CNN或其他CNN网络的东西吗?完全不同的东西,比如RNN。或者其他可以学习y-x关系的神经网络。我对各种各样的算法都有点迷茫。