我已经成功地建立了一个顺序模型来对我所拥有的一些基因组数据的不同器官进行分层,而且这种方法也非常好,而且精度很高。但是,这也是时间序列数据,我想了解数据中不同变量之间的关系,并且我想将这些数据合并起来,以了解随着时间推移哪些基因驱动了不同的关系。因此,我不确定这是否会成为分类或回归问题。该模型的代码如下:
生成多类分类的代码如下:
Normcountsonehot <- data.frame(to_categorical(Normcountsall$Age,
7), to_categorical(Normcountsall$Organ, 13),
to_categorical(Normcountsall$Sex, 4), Normcountsall[,1:5078])
结果矩阵是将时间点作为行,将基因作为列。基因包含我们要从中提取信息的值。
ind <- sample(2, nrow(Normcountsonehot), replace=TRUE, prob =
c(0.7,0.3))
training <- Normcountsonehot[ind==1, 25:5098] # includes all
independent variables
test <- Normcountsonehot[ind==2, 25:5098]
*scale test and training*
trainingtarget <- Normcountsonehot[ind==1, c(8:20)]
testtarget <- Normcountsonehot[ind==2, c(8:20)]
上面的代码仅将一键编码的数据拆分为器官变量(而不是其他任何变量(性别,年龄)
Sequential model is then:
model1 <- keras_model_sequential()
model1 %>%
layer_dense(units=5078, activation = 'relu', input_shape = 5074)
%>%
layer_dropout(0.4)%>%
layer_dense(units = 64, activation = "relu") %>%
layer_dropout(0.2) %>%
layer_dense(units=13, activation = "softmax")
model1 %>% keras::compile(loss='categorical_crossentropy',
optimizer='adam',
metrics='accuracy')
history1 <- model1%>%
fit(as.matrix(training1), # input, the first independent variables
as.matrix(trainingtarget), # input, Metadata
epoch=20,
batch=32,
validation_split = 0.2)
model1%>%
keras::evaluate(test1,as.matrix(testtarget))
混乱矩阵等...
这很好地对一个变量进行了分类
如果我现在添加以下代码行以包含年龄和性别等变量:
trainingtarget <- Normcountsonehot[ind==1, c(1:24)]
并将模型中的输入更改为:
model1 %>%
layer_dense(units=5078, activation = 'relu', input_shape = 7+13+4
5078) %>% ....
*last layer* layer_dense(units=7+13+4, activation = "softmax")
火车精度基本上下降到0,Val-acc始终是0。
虽然我试图理解这些不同变量之间的关系,然后找到驱动这些关系的权重,但我不确定这现在是否是分类问题(或者输入是完全错误的)。我应该删除softmax使其成为回归问题。如果是这样,我的最后一层单位号是什么?以及它将在以下方面进行培训:
再次,目标是了解所有变量之间的关系,并查看基因是否根据此变化。我没有提到的变量之一取决于器官的类型。因此,当算法专门考虑所有变量时,我想看看权重如何变化。即..某些基因可能会随着时间的流逝而下降,因为器官x,y和z具有由变量定义的某些属性,而这些基因在其他器官中可能完全不变,因为它们不具有这种属性。认识我感兴趣。任何有关如何编辑以上代码以解决此问题的帮助将不胜感激!!另请注意,我也将尝试不同的模型,但仅从顺序开始!
谢谢!