python3学习《机器学习实战》书中的报错及解决办法(更新中)

《机器学习实战》是一本很不错的书,其采用的是py2的语法格式,在用最新的python3.6编写代码的过程中,书中有一些代码因为格式不对就会报错,本人记录了学习过程中遇到的BUG,综合了网上的解决办法,现整理如下,供后来者参考

第二章 KNN

BUG1.程序清单2 - 2 将文本记录到转换NumPy的解析程序
报错:

ValueError: invalid literal for int() with base 10: 'largeDoses'

错误定位:

def file2matrix(filename): ...>>> reload(kNN)
>>> datingDataMat,datingLabels = kNN.file2matrix('datingTestSet.txt')

原因及解决办法:
file2matrix并没有错误,错误的是传入的filename出错了,更准确的说是要用**‘datingTestSet2.txt’**,这两个文件的区别在于第四列类别的表示方法不同,如第一个文件中的“很喜欢”表示为“largeDoses”(也就是上面报错的那一个),它不能被处理为int型,而第二个文件就直接用1,2,3来代表didntLike,smallDoses,largeDoses。所以第二章所有的程序要改用目录下的’datingTestSet2.txt’。

BUG2.程序清单2 - 5 约会网站预测函数
报错:

NameError: name 'raw_input' is not defined

错误定位:

percentTats = float(raw_input(\"percentage of time spent playing video game? " ))

原因及解决办法:
python3将raw_input和input进行了整合,只有input,所以将raw_input()改为input()即可

第三章 决策树

发现一个排版问题,见红框处:

BUG1.程序清单3 - 8 使用决策树的分类函数:
报错:

TypeError: 'dict_keys' object does not support indexing

错误定位:

firstStr = inputTree.keys()[0]

原因及解决办法:
这是因为python3改变了dict.keys,返回的是dict_keys对象,支持iterable 但不支持indexable,我们可以将其明确的转化成list,如下

firstStr = list(inputTree.keys())[0]

注:本章中3.2小节的程序treePlotter.py也会多处出现此问题,按此方法解决。

BUG2.程序清单3 - 9 使用pickle模块存储决策树
报错:

TypeError: write() argument must be str, not bytes

错误定位:

def storeTree(inputTree,filename):import picklefw = open(filename,'w')pickle.dump(inputTree,fw)    # 此句报错fw.close()

原因及解决办法:
pickle模块默认二进制格式保存,所以修改一下open函数就可以了

fw = open(filename,'wb')    # 二进制方式

注:文件保存成功后,二进制部分会显示为乱码,可不用管它,pickle模块能识别。

BUG3.程序清单3 - 9 使用pickle模块存储决策树
报错:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 0: illegal multibyte sequence

错误定位:

def grabTree(filename):import picklefr = open(filename)return pickle.load(fr)    # 此句报错

原因及解决办法:
也是BUG2中的同样原因,修改open函数如下即可正常读取。

fr = open(filename,'rb')  # 二进制方式

【ML/DL】python3学习《机器学习实战》书中的报错及解决办法相关推荐

  1. Robot Framework学习笔记5-导入Selenium2Library库报错的解决办法

    我们在创建第一个自动化脚本的时候,要导入Selenium2Library库,然后会出现红色的字体: 红色代表错误,没有该库,意思就是安装的时候没有安装成功.接着用命令安装一下这个库,结果出现如下的图: ...

  2. GitLabCICD实战----在.gitlab-ci.yml文件的步骤中使用git clone 另一个代码仓报错的解决办法

    更多信息请关注 个人网站 一.背景 在有些时候,比如在一个项目中,产品的代码是java代码仓,自动化测试脚本是python语言,单独存放的代码仓,在使用GitlabCICD构建流水线的时候有这样一种场 ...

  3. java开发报错怎么处理_Java开发中常见报错及解决办法

    前言: 在项目开发中,往往会遇到很多错误,有些是代码有误,而有些则是其他原因.接下来一起看看常见的报错及解决办法(小白整理,大牛勿喷). 一.找不到Xxx.Xxx.entity.Xxx.java 最近 ...

  4. python中unexpected indent报错的解决办法

    python中unexpected indent报错的解决办法 在我们初步学习pyton的时候,由于对python语言的学习掌握不充分,则会导致所编写的代码,运行时候报错.比如,容易报错的unexpe ...

  5. ibatis mysql 同时删多个表报错_MySQL中Multiple primary key defined报错的解决办法

    MySQL中Multiple primary key defined报错的解决办法 创建主键可以有两种方式: create table 表名( 字段名 类型, 字段名 类型, -- primary k ...

  6. python解码中文文本报错的解决办法

    python解码中文文本报错的解决办法 1.报错内容 UnicodeDecodeError: 'gbk' codec can't decode bytes in position 50-51:ille ...

  7. DBeaver中一些报错的解决

    DBeaver中一些报错的解决 1.连接mysql时Public Key Retrieval is not allowed错误 2.java连接mysql出现The server time zone ...

  8. python3中urlopen_详解python3urllib中urlopen报错的解决方法

    这篇文章主要介绍了关于解决http://www.gxlcms.com/wiki/1514.html" target="_blank">python3 urllib中 ...

  9. python3中urlopen_详解python3 urllib中urlopen报错的解决方法

    这篇文章主要介绍了关于解决python3 urllib中urlopen报错问题的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧. 前言 最近更新了Python ...

最新文章

  1. python dataframe显示网格_python dataframe 输出结果整行显示的方法
  2. Hadoop HDFS copyMergeFromLocal
  3. SQL Server 学习系列之五
  4. Dapper官方教程翻译8:Dapper方法之QueryMultiple(转)
  5. 手机开启apache_微信否认“年终奖人均280万”;MySQL 8.0.14 稳定版发布;支付宝集五福昨开启,一天29万人集齐......
  6. 问题 I: 成对最小公倍数(数学)
  7. CodeForces - 1200E Compress Words(字符串哈希)
  8. wdatepicker时间段控制
  9. 将字符串中连续的多个空格替换成一个空格
  10. 广度搜索 -- 9.2 Word Ladder -- 求具体的路径 -- 图解
  11. Oracle的CLOB大数据字段类型(转)
  12. 返回结果乱码_峰哥说技术系列-7 Spring Boot返回JSON
  13. 计算机自我检测方法,电脑问题的自我检测方法有哪些?
  14. 一元函数,多元函数,可微的含义 多元函数微分的几何意义 多元函数偏导 那么为什么有微分和可导 能不能固定两个或者多个条件,多偏微分,哈哈
  15. shell小脚本--网速监控
  16. 肖特基二极管在防止电源反接的作用
  17. 五、神奇的自然常数e之“自然”魅力
  18. OC循环渐进:文件管理--计算文件大小的五种方式
  19. the installation cannot continue as the installer file may be damaged. Download the installer file
  20. 忙里偷闲【mark】

热门文章

  1. IEEE专访李开复:人类已打开潘多拉盒子,封堵AI变革只会徒劳
  2. [年终总结]愿你永远清澈明朗,眼里有光
  3. 《如何让你爱的人爱上你》分享
  4. <Zhuuu_ZZ>HIVE(终)总结大全:是兄弟就来三连我
  5. java角谷_java实现递归设计——数鸭子和角谷定理
  6. 6GK5116-0BA00-2AB2的技术参数说明
  7. 条码打印出现乱码的解决方案
  8. 传感网应用开发(环境部署)
  9. 行程码是怎么知道你去过哪些地方的呢?
  10. PID控制及整定算法