本项目将数据预处理,设计DNN模型,利用反向传播(BP)算法构建具有很多隐层的机器学习模型,用预处理的大量训练数据来学习模型特征,从而保证预测的准确性达到要求。
我们将药物Irinotecan的未知数据(其在317个细胞系下的反应数据已知,187个未知)作为预测目标,将其他药物的相应的317个数据看做输入,187个数据作为目标输出,来训练神经网络。
用python首先导入数据,用pandas库函数导入csv数据,然后转化为numpy矩阵,大小为[504,23](从0开始),将数据分为训练集和测试集,317组为训练集,187组为测试集。每组数据有23个属性,训练集中的标签就是药物Irinotecan对该组细胞的药性,测试集中标签未知,为要预测的值。将训练集分为训练集和验证集,因为数据集较小,用k折交叉验证法验证神经网络的精度(使用mse损失函数,监控指标mae平均绝对误差),网络包含两个隐藏层,每层64个隐藏单元,最后一层只有一个单元(没有激活,标量回归)。选取的折数为4,每折训练500次。最终输出预测值,即药物在187个细胞里的反应,另外输出平均绝对误差(为预测值与目标值的差距)。
在Python实现的基础上,利用Matlab再次实验。
Matlab实现过程:构建了三层神经网络,每层20个神经元,选择了19个样本来训练神经网络;选择了2个验证样例用来衡量网络泛化,并在泛化不再改善时停止训练;选择了2样本用于测试,测试集对神经网络的训练没有影响,因此可以在训练完成后独立地测量网络性能。