关闭

机器学习实战python环境搭建以及numpy和matplotlib安装遇到的各种问题(一)

标签: 机器学习实战pythonnumpymatplotlib
819人阅读 评论(0) 收藏 举报
分类:

第一次在大神云集的CSDN写博客,以前都是在新浪上随便写一写,当作平时的遇到的一些问题的总结。
自己从这里学到了很多知识,也解决了很多问题。
自学的时候会遇到很多问题,由于没有时间系统的学习知识,都是遇到什么问题就查什么,所以多去动手查资料还是很重要的。
学习的过程就是需要不断的去发现问题,解决问题。

再次声明自己也是新手,遇到的一些问题在大牛看来都不值一提,所以在网上也经常找不到解决的办法,其实这样也锻炼我们自己动手思考的能力,凡事都有好坏,我写这个大部分还是记录自己思考的进程,也请大家多指教。

废话不多说,开始切入正题。
python的开发环境搭建,网上已经有很多教程什么的了,而且基本上都是可行的。我个人还是推荐:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
廖雪峰的博客,环境搭建和一些基本知识都有。大概看一遍,了解一下,动手去做的时候,遗忘的再回去看。

下面我主要介绍下,我学习《机器学习实战》这本书遇到的一些问题和解决办法。
首先是安装numpy。
我的python版本是2.7.10一开始装的numpy版本是numpy—1.5,后来装matplotlib的时候提示版本太低,后来又陆续装了1.6,1.7,1.8,还好1.8可以正常使用了。
http://sourceforge.net/projects/numpy/files/NumPy/这里各个版本的都有。
下载的exe的直接运行就可以。安装numpy
直接下一步下一步完成就可以了,还可以通过pip install **.whl来安装,但是不知道为什么我安装别的都行就是安装不了numpy,现在不管它了,反正可以通过其他办法安装。
需要注意的是我的电脑是64位的但是安装numpy的时候是选择的32位的安装的。
哎 本人也是新手有好多不懂的,要是大神看到了也帮我回答下。
最后import numpy 没问题就行了!

装上numpy后,我也是迫不及待的想跑一下程序试试,就把程序清单2.0(其实没有2.0,它也算不得一个程序,因为在2.1之前,就称它为清单2.0吧)我遇到了第一的问题,直接导入(import kNN)提示找不到这个文件。原因是没有指明路径,python不知道你的这个文件在哪。
解决的办法有两个(就我目前知道的):一个是把kNN.py保存到python的安装目录下,这样的话可以直接运行。
第二个是实用sys命令添加一个目录。

>>> import sys
>>> sys.path.append('D:\Komodospace')
>>> import Text
Hello World

这样就可以在python自带的python GUI中导入模板了。


>>> import kNN
>>> group,labels = kNN.createDataSet()
>>> group
array([[ 1. ,  1.1],
       [ 1. ,  1. ],
       [ 0. ,  0. ],
       [ 0. ,  0.1]])
>>> labels
['A', 'A', 'B', 'B']

刚开始就会遇到很多问题,一些函数不知道是做什么的,最后发王道,尽管它是英文的。
python 2.7.10函数文档
想程序清单2.1中的shape,tile(在numpy文档里面),sorted函数等等。
numpy官方文档下载
程序2.1亲测可行!!

>>> import kNN
>>> group,labels = kNN.createDataSet()
>>> group
array([[ 1. ,  1.1],
       [ 1. ,  1. ],
       [ 0. ,  0. ],
       [ 0. ,  0.1]])
>>> labels
['A', 'A', 'B', 'B']
>>> kNN.classify0([0,0],group,labels,3)
'B'
>>> kNN.classify0([1,1],group,labels,3)
'A'

正如书中所说,这些代码只是测试用的,实际没有任何意义,不过自己测试成功还是很开心的。接下来的程序2.2就是需要导入数据,为接下来的kNN算法实战做准备了。
程序2.2有点小问题,就是numpy.zeros生成的数据不能接受字符串赋值,没有太好解决的办法,网上有位大牛做了简单的修改,我贴出来大家也指导我下,因为我不知道为什么。

def file2matrix(filename):
    fr = open(filename)
    numberOfLines = len(fr.readlines())         #get the number of lines in the file
    returnMat = zeros((numberOfLines,3))        #prepare matrix to return
    classLabelVector = []                       #prepare labels return   
    fr = open(filename)
    index = 0
    for line in fr.readlines():
        line = line.strip()
        listFromLine = line.split('\t')
        returnMat[index,:] = listFromLine[0:3]
        classLabelVector.append(int(listFromLine[-1]))
        index += 1
    return returnMat,classLabelVector

python的基本语法还是比较重要的,否则读起程序来还是很费劲的。
列表,元组的迭代,赋值以及别的一些特性,还有对字典的排序都需要自己提前学习下。
程序中用到的代码和数据,网上的大神也给了,我就分享下。
[《机器学习实战》源代码](http://pan.baidu.com/s/13G55O

>>> datingDataMat,datingLabels = kNN.file2matrix('datingTestSet2.txt')
>>> datingDataMat
array([[  4.09200000e+04,   8.32697600e+00,   9.53952000e-01],
       [  1.44880000e+04,   7.15346900e+00,   1.67390400e+00],
       [  2.60520000e+04,   1.44187100e+00,   8.05124000e-01],
       ..., 
       [  2.65750000e+04,   1.06501020e+01,   8.66627000e-01],
       [  4.81110000e+04,   9.13452800e+00,   7.28045000e-01],
       [  4.37570000e+04,   7.88260100e+00,   1.33244600e+00]])
>>> datingLabels[0:20]
[3, 2, 1, 1, 1, 1, 3, 3, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 2, 3]

程序2.2亲测可行
今天先写到这,欢迎大家指教,后续还会有自己对机器学习实战和python的学习总结。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11612次
    • 积分:397
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论