Seizure数据集上使用Keras的二进制分类

时间:2017-07-22 21:27:35

标签: python binary classification keras

首先,我使用了癫痫发作识别数据集 (来源:http://archive.ics.uci.edu/ml/datasets/Epileptic+Seizure+Recognition

嘿,我的模型适合数据集时遇到问题。

以下是我正在使用的代码:

import pandas
from keras.models import Sequential
from keras.layers import Dense
import numpy


def main():
    dataset = pandas.read_csv("data.csv")
    Y = dataset["y"]
    X = dataset.drop("y", axis=1).drop("Unnamed: 0", axis=1)
    Y = Y.values
    X = X.values

    model = Sequential()
    model.add(Dense(178, input_dim=178, activation='relu'))
    model.add(Dense(500, activation="relu"))
    model.add(Dense(1000, activation='relu'))
    model.add(Dense(500, activation='relu'))
    model.add(Dense(250, activation='relu'))
    model.add(Dense(100, activation='relu'))
    model.add(Dense(20, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))

    model.compile(loss="binary_crossentropy", optimizer="adam",   metrics=["accuracy"])

    model.fit(X, Y, epochs=1000, batch_size=300)

if __name__ == '__main__':
    main()

每个输出看起来都与此相同:

Epoch 330/500
11500/11500 [==============================] - 0s - loss: -31.8848 - acc: 0.2000

所以我的训练不正常。我究竟做错了什么?对我来说还有其他问题:

1)我需要添加多少个图层以及多少个单位?有经验法则吗?

2)我必须使用什么激活功能?

1 个答案:

答案 0 :(得分:0)

这不是二进制分类数据集。根据数据集页面,

  

y包含178维输入向量的类别。特别是在{1,2,3,4,5}

中的y

1)我需要添加多少个图层以及多少个单位?是否有经验法则?

这取决于。您必须调整两个数字以获得最佳性能。但是,对于具有大约10k实例的数据集,我猜测8个完全连接的层和1000个单元都太多了。

2)我必须使用什么激活功能?

ReLU通常是堆叠Dense图层的良好起点。