【问题标题】:How to keras deep-learning classify with csv data?如何使用 csv 数据进行 keras 深度学习分类?
【发布时间】:2018-10-19 06:06:02
【问题描述】:

我有根据特定条件分为两类的数据。 (例如) 条件1&条件2&条件3 = 1)

我尝试制作一个模型,用下面的代码对其进行分类。

dataset_csv = np.loadtxt('dataset.csv', delimiter=',')   

x_train=dataset_csv[:round(len(dataset)*0.9),0:3]
y_train=dataset_csv[:round(len(dataset)*0.9),3]
x_test=dataset_csv[round(len(dataset)*0.9):,0:3]
y_test=dataset_csv[round(len(dataset)*0.9):,3]


model =Sequential()
model.add(Dense(12, input_dim=3, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.fit(x_train,y_train,epochs = 10, batch_size =24)

scores = model.evaluate(x_test,y_test)

但是,预测的结果如下。

array([[9.414976e-08]], dtype=float32)

我以为我设置的y值被识别为一个类。

但事实并非如此。

有没有办法将 y 设置为类值,如果我设置条件则返回一个类值?

【问题讨论】:

    标签: deep-learning keras classification


    【解决方案1】:

    首先,您使用二元分类。因为你使用一个输出神经元。 model.predict 将为您提供样本属于信号的可能性。

    您可以简单地定义一个阈值来确定预测是否对应于信号预测(大多数情况下为 0.5)。像这样的:

    predict_output = np.array([0.52396882, 0.20368976, 0.06553409, 0.52519849, 0.20538633])
    predicted_classes = (predict_output > 0.5).astype(int)
    
    predicted_classes: array([1, 0, 0, 1, 0])
    

    这里的 predict_output 是 model.predict 的输出示例,如果您使用 5 个样本调用它。然后 predict_classes 应该是您想要的结果。

    【讨论】:

    • 我想知道 是 0.5).astype(int)'> 的平均结果?
    • 是的,这就是结果。我澄清了答案。
    • 感谢您的关注。它帮助了我。
    猜你喜欢
    • 2017-05-20
    • 2019-09-13
    • 1970-01-01
    • 2018-07-20
    • 2018-10-25
    • 2017-06-11
    • 2020-12-01
    • 2021-04-13
    • 2016-09-02
    相关资源
    最近更新 更多