machine-learning - 如何在 Keras 中对系列数据进行分类?
问题描述
我的输入数据的结构是:
print(df.col)
0 [262, 330, 392, 522, 784, 0, 0]
1 [262, 290, 330, 392, 522, 784, 0]
2 [262, 330, 392, 522, 784, 0, 0]
3 [250, 262, 330, 392, 522, 784, 0]
4 [262, 290, 306, 330, 392, 784, 0]
.
.
.
我有可变大小的数据,所以我最后添加了一个 0 的填充来修复输入数据的形状。
输出列是:
print(df.predict)
array([[0., 0., 0., 1.],
[1., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.],
[0., 1., 0., 0.],...])
输出是一种热编码。
以下是我的模型:
model = Sequential()
model.add(Dense(7, activation='relu', input_dim = 7))
model.add(Dense(10, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(4))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X_train, y_train, epochs=500, batch_size=10, verbose=2)
在 2-3 个 epoch 之后,准确率和损失变得恒定。
Epoch 1/500
0s - loss: 5.8413 - acc: 0.1754
Epoch 2/500
0s - loss: 5.7398 - acc: 0.1754
Epoch 3/500
0s - loss: 5.7190 - acc: 0.1754
Epoch 4/500
0s - loss: 5.6885 - acc: 0.1754
Epoch 5/500
0s - loss: 5.6650 - acc: 0.1754
Epoch 6/500
0s - loss: 5.6403 - acc: 0.1754
Epoch 7/500
0s - loss: 5.6164 - acc: 0.2456
Epoch 8/500
0s - loss: 5.5900 - acc: 0.2456
Epoch 9/500
0s - loss: 5.5730 - acc: 0.2456
...
0s - loss: 5.3727 - acc: 0.1754
Epoch 499/500
0s - loss: 5.3727 - acc: 0.1754
Epoch 500/500
0s - loss: 5.3727 - acc: 0.1754
我有 72 个数据点和 4 个类(每个类大约 18 个样本)数据相当简单。为什么准确率这么低?
模型设计对了吗?我是 ML 和 Keras 的新手。任何帮助表示赞赏。
解决方案
model.add(layers.Dense(4, activation = 'softmax'))
在最后一层试试这个。
如果你有超过 2 个分类类,你最终需要一个 softmax 层。这是一个函数,输出 4 个不同类别的概率(全部加为 1),概率最高的将是您的类别。这样,您的网络将能够学习所有 4 个不同的类,而不仅仅是两个。
推荐阅读
- node.js - util.promisify node js的正确使用
- python - Python:一次多次 Ping URL 以进行测试
- python - 如何使用python解析xml后创建csv文件
- angular - 出现输入框,但点击后什么也没有
- javascript - 跨 Karma 单元测试和 Protractor 端到端测试共享的测试库
- excel - 条件格式 - if 和语句
- php - 我在这个文件中有 index.php 当我尝试用 css 设置样式时有 html 没有影响
- r - Rstudio 不会在断点处停止
- excel - 搜索 DAX 公式 - 相当于 Excel SUMIF
- jquery - jquery:在滚动时更改 css