专栏首页python3《机器学习实战》书中python2.7与

《机器学习实战》书中python2.7与

《机器学习实战》书中使用的是python2.7,而对于现在新接触python的同学来说都是上手python3.6版本。

由于本渣渣也正在学习此书,将陆续列出遇到的不同于现实编码的困难与解决方法(如果能解决的话.......)。

1.import numpy时候,书中提倡from numpy import * 而我们在学习python3.6时常用import numpy as np,于是在调用tile、zeros等函数时,要改为np.tile(),np.zeros()。

2.输出的print后边要加上()

3.在使用pickle打开文件时,由于打开方式时二进制,要在‘w’后面或者‘r’后面加上‘b’,如‘wb’

    import pickle
    fw = open(filename,'wb')                   #pickle是二进制打开,加b
    pickle.dump(inputTree,fw)
    fw.close()

4.书中的获取字典dict的keys方法dict.keys()获得的字典集不是list形式不能直接使用'[ ]'取值

这是python2.7的取值方法,在3.6中应该改为如下:

str = list(dict.keys())[0]

先将dict.keys()转化为list形式

5.在第四章出现一个无法解决的问题:

tokenText = textParse(open('E:/BigData/machinelearninginaction/Ch04/email/spam/%d.txt' % i).read())

这个打开文件会出现解码错误的问题:'gbk' codec can't decode byte 0xff in position 199

然后我试着用‘utf-8’ 出现:'utf-8' codec can't decode byte 0xff in position 43

似乎是这些文件中有两种的编码的方式。于是我只提取前15个文件,不用修改就成功了。

试了很多方法,全部文件的读取还是没有成功。

如果同时解码多个编码方式还是没有解决。

6.在一个dataSet = range(50),中 del(dataSet[30])会出现错误

因为range返回的是range object 先将起转化为list

如:dataSet = list(range(50))

7.第九章中在加载数据时有这块代码:

for line in fr.readlines():
        curline = line.strip().split('\t')
        fltLine = map(float,curline)
        dataMat.append(fltLine)

这里会报错,提示map对象不能做mean处理,原因是python 2.7的map返回的是直接的结果,而python 3.6中返回的是map的对象:

<map object at 0x00000000021DA860> 

这里把这个对象转化为list即可,具体整个代码块改为:

for line in fr.readlines():
        curline = line.strip().split('\t')
        curline = list(map(float,curline))
        dataMat.append(curline)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python随机数产生

    random.random()用于生成一个0到1的随机浮点数: 0 <= n < 1.0

    py3study
  • python 数字

    range()函数 \>>> range(1,5) # 代表从1到5(不包含5) [1, 2, 3, 4] \>>> range(1,5,2) # 代表从1...

    py3study
  • Python 模块:random 随机数

    用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: b <= n <= a。如果 a <b, 则 a <...

    py3study
  • Python面试题目之打乱打乱有序列表

    Jetpropelledsnake21
  • FireHost发布2013年第二季度排名前四的攻击方法

    本周二,云托管公司FireHost公布了2013年第二季度排名前四的攻击方法,分别是跨站脚本攻击(XSS)、目录遍历、SQL注入、跨站请求伪造(CSRF)。 F...

    FB客服
  • 电子商务网站核心数据分析

    电子商务相对于传统零售业来说,最大的特点就是一切都可以通过数据化来监控和改进。通过数据可以看到用户从哪里来、如何组织产品可以实现很好的转化率、你投放广告的效率如...

    机器学习AI算法工程
  • 不止是NCBI的SRA可以下载测序数据

    最近要开一个肿瘤外显子实战线下课程,想到了以前看到的发在 Proc Natl Acad Sci U S A. 2015 Nov的文章Extremely high...

    生信技能树
  • 如何借助私域流量打破原有壁垒,构建智能营销新生态

    热词年年有,去年的热词“增长黑客”余热未散,新词迎面而来。“私域流量”一词成为2019风靡营销圈、运营圈乃至互联网圈的爆火黑话。微信指数显示,“私域”一词的搜索...

    数商云市场营销总监
  • FireHost发布2013年第二季度排名前四的攻击方法

    本周二,云托管公司FireHost公布了2013年第二季度排名前四的攻击方法,分别是跨站脚本攻击(XSS)、目录遍历、SQL注入、跨站请求伪造(CSRF)。 F...

    安恒信息
  • SparkSQL中产生笛卡尔积的几种典型场景以及处理策略

    【前言:如果你经常使用Spark SQL进行数据的处理分析,那么对笛卡尔积的危害性一定不陌生,比如大量占用集群资源导致其他任务无法正常执行,甚至导致节点宕机。那...

    大数据学习与分享

扫码关注云+社区

领取腾讯云代金券