python - 如何在面板数据上使用 LSTM?
问题描述
我有几年来许多人的健康声明面板数据。每行包含提出某种医疗索赔的个人的记录,以及有关个人/索赔的一些信息,例如年龄和诊断。我的数据的一个小样本如下所示:
+----+----------+---------------------+-------------------+-------+-----+
| ID | Date | Diag1 | Diag2 | Diag3 | Age |
+----+----------+---------------------+-------------------+-------+-----+
| A | 12/1/19 | obesity | hi blood pressure | | 59 |
| A | 12/14/20 | high blood pressure | | | 59 |
| A | 2/1/21 | High blood pressure | | | 59 |
| B | 5/1/19 | arm pain | broken wrist | | 34 |
| B | 5/6/19 | arm pain | broken wrist | | 34 |
| C | 6/6/19 | headaches | trouble sleeping | | 41 |
| C | 6/9/19 | headaches | trouble sleeping | | 41 |
| C | 7/1/20 | trouble sleeping | | | 41 |
+----+----------+---------------------+-------------------+-------+-----+
鉴于当前日期,我正在尝试使用 LSTM 来预测个人(由 ID 标记)是否可能会在不久的将来(比如 3 个月)发生另一次诊断。因此,例如,如果今天是 2021 年 2 月末,那么我有兴趣找到从现在到 2021 年 5 月末之间可能至少进行一次访问的人。
但是,我不知道 LSTM 是否可以根据每个主题进行调整。我见过 LSTM 用于预测股票价格,但这些示例只有一只股票要检查,而我有多个 ID。Keras Sequential LSTM 会自动处理这种类型的面板数据吗?我认为我不应该删除 ID 列,因为我正在寻找的输出应该或多或少地给我一个概率,即具有医疗索赔历史的特定人将在不久的将来访问。
解决方案
是的,LSTM 应该可以工作。但是 keras 不会自动处理你的数据。您需要将数据转换为诊断列表:
input = [
[[1, 2], [2, 0], [2, 0]],
[[3, 4], [3, 4]],
[[5, 6], [5, 6],[6, 0]]
]
# I used only two features (two diagnosises) for simplicity.
# You should add other features: [12/1/19, 1, 2, 0, 59]
# shift input to the left to get labels so that the next features are predicted on the every step
labels = [
[[2, 0], [2, 0], [0, 0]],
[[3, 4], [0, 0]],
[[5, 6],[6, 0], [0, 0]]
]
推荐阅读
- networking - 在浏览器或 wget 命令中访问 gitlab 服务器 url 时出现错误 ERR_EMPTY_RESPONSE
- javascript - 过滤来自登录请求的响应以删除标头和配置数据
- sql-server - 在 Visual Studio 的数据源中键入地址
- javascript - 重新运行 const 声明的函数的最佳方法是什么?
- wordpress - 无法为 Wordpress 设置联系表格 7 的样式
- r - R中表格值之间的3D插值
- react-native - 如何修复“RealmObject 不能作为函数调用”realm-js 错误?
- javascript - Javascript 错误:.split 不是函数
- database - 更新单个模式的序列不起作用(Postgres 12)
- html - Django HTML在提交时将POST数据作为PK值发送到url