写作目的
环境:jupyter notebook,python 3.6.3 ,scikit-learn 0.22.2.post1
大致经过是这样的,先通过生信分析找到差异基因,然后再使用python的sk-learn模型训练随机森林时,发现即便设置了随机种子,但每次对训练测试集的预测性能都不一样,而且最为诡异的是当我重启内核再运行时,这个结果才会改变,如果我不重启内核,而是将脚本逐句运行时,这个分类器的预测性能则不会改变
尝试
1.分割出错模块
第一部分为差异基因部分,第二部分为模型部分
1.1 差异基因部分
经过多次尝试,发现差异基因都是稳定的,但莫名的排列顺序不一样,但一般特征的输入顺序不影响结果(至少我看到的部分文章说不影响),所以我觉得问题应该出在模型部分,是不是有哪部分的随机种子我漏掉了,但是转念一想。如果漏掉了随机种子,那每次运行结果肯定会不一样的呀???但我的感觉还是让我偏重于找模型出错的部分
1.2 模型部分
去掉随机种子,发现不重启内核,预测性能都改变了,这让我感觉应该不是随机种子的问题。新开了一个脚本,就不用差异基因的预测模型,发现,我去,贼稳定,一毛一样的脚本只是去掉了差异基因部分,结果我又重新回去找第一部分
最后结果
锁定在差异基因的部分,唯一区别就在排序问题了,然后我就去用降序固定下来,结果发现模型稳定下来了。我的天,打死我都不会想到原来问题出在特征的顺序问题上。这个花了我整整一天呀,天,以后得注意模型的特征输入了,特此开帖记录。新手不喜勿喷,刚学python的入门小菜鸟。不过我还是很好奇,为啥相同的数据,相同的代码,虽然输出结果是一样的,但顺序会不一样。
人生苦短,我学python。用习惯了R语言还真是不熟悉python,虽说R语言我也是菜鸡。