看到该问题的时候,尝试在网上寻找源码,这里就不贴出来了,见6-3 构建LM神经网络模型代码(python3.6下运行)_清泉石上流9300的博客-CSDN博客https://blog.csdn.net/sinat_17588957/article/details/89945560?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-89945560-blog-110827716.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-89945560-blog-110827716.pc_relevant_antiscanv2&utm_relevant_index=2但是运行的时候发现问题还是挺多的。
(1)python的版本
由于这里要使用神经网络,需要下载tensorflow库,而这个库是要64位的python版本才能下载的,于是迫不得已我把旧版本卸了,又重新安装了64位版本。
(2)pip install tensorflow下载太慢,老是出错
由于网速太慢,用pip install tensorflow老是下载出错,上网寻找了各种解决方法,发现一个非常好用的命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
不仅快,而且不会出错。
一切准备就绪后,开始运行代码,然后bug就不断出现了,如下:
(1)'DataFrame' object has no attribute 'as_matrix'
原因:as_matrix()方法被淘汰了
解决方法:修改为
data = data.iloc[:,:].values
(2)__init__() missing 1 required positional argument: 'units'
原因:Dense的参数出错
解决方法:修改为
net.add(Dense(10,input_dim=3))
第21行同理修改为
net.add(Dense(1,input_dim=10))
然后代码神经网络迭代开始运行
(3)'Sequential' object has no attribute 'predict_classes'
原因:'Sequential'没有'predict_classes'方法,但是有'predict'方法,于是修改为
pc = net.predict(train[:, :3]).reshape(len(train))
(4)Classification metrics can't handle a mix of binary and continuous targets
原因:train[:, 3]是int类型,而pc是表示概率的float类型,类型不同,所以会出错。
解决方法:将pc四舍五入后转换为int类型
在第44行前插入一句
pc=np.around(pc,0).astype(int)
最终,所有bug解决,代码成功编译运行,结果如下:
Predicted label为预测结果,True label为真实结果
这个图的意思是:
预测结果与真实结果都为0的有150个,都为1的有59个;
预测结果为1,真实结果为0的有12个;预测结果为0,真实结果为1的有11个.
则正确率为:(150+59)/(150+12+11+59)×100%=90.09%