先上题:
应该是蓝桥杯某年java编程决赛的一道算法题,只要求写结果,所以很多时候就。。。。
可以用笔算算
可以用编程实现
闪现一个思路想用机器学习来做,首先猜想大概是过拟合,这里我们简单分析一下
这题的思路简单大概如此,可以找规律,很容易得到 :本层的煤球数=上一层煤球数+本层序号
虽然规律很容易,编程也很容易,但是这里假设我们不懂,也不会编程,我们就是傻傻的用人工智能取解决这个问题,找出每一层对应的煤球数,计算总和。
关键打算用机器学习处理
本来我的思路是手推前18层,然后找个回归算法,前14层训练,15 16 1718层预测。准确了也就可以达到不思考解决问题。
弄到这里一切都是好的16 层手推的是136,本来感觉这就是参数还没学习好的问题。然而下面就出事了
训练集的准确率基本是99% 但是预测后面的未知数聚集可以发现大部分预测结果保持不变。思考一下这里主要的原因是
1 学习训练参数的样本实在太少,14个数据想训练一个4层神经网络确实夸张了。
2 还有就是神经网络的层数和神经元太多。
于是老老实实手推1-100层煤球的个数。。。。。。。。。。开玩笑的
随缘的童鞋可以下去试试,这里我们用Python做,
不敢浪了。接下来就是1-80层做训练集,81-100层做测试,神经网络两层,每层100个神经元
最后提一下:因为模型训练的时候没有固定参数,做完了才想起来。后面无论怎么试不就是不完美了。所以训练的时候一定