1、我们第一个(极小的)机器学习应用【准备数据】
2015-07-27 23:53
246 查看
FROM:Building Machine Learning Systems with Python(机器学习系统设计)
环境:windows、Python2.7(或以上)、IPython (其实用spyder最好)
模块:NumPy、SciPy、Matplotlib
数据源:web_traffic.tsv(怎么上传文件?)
数据介绍:某网站连续743个小时,每小时网站的访问次数。可以理解为(743行,2列)的二维数组,x代表连续的小时数,y代表每小时的访问次数。(其实这个文件里面的数据并不是从真实的网站上导出的#^_^#,而是作者用程序生成的,书的附件中有源码)。
我们先采用交互的方式(在IPython中)分析,然后再写到程序文件当中,最后再按照作者源程序的思路优化程序。
一、读取数据(使用SciPy中的genfromtxt()函数,文件中的数据是以Tab字符分割的数字)
注意:1、web_traffic.tsv文件需在当前目录下(如果你很想按照书中的源代码那样,用os.path获取其绝对路径,就请忽视这条,绝对路径的好处就是不容易出错,例如在spyder中只能用绝对路径);
2、数组data中含有无效数据,是因为sp.genfromtxt()得到的是数值,如果源文件含有字符(串)会自动替换为“nan”(Not a Number)
二、预处理和清除无效数据
1、将二维数组data拆分为两个一维数组,或者说是拆成两列也可以。
注意冒号后面的逗号。
2、查看一下x,y中是否含有无效nan数据:
打印出的是一个bool型的数组(不是列表),如果其中含有True则说明有异常值,因此从输出结果中看x中没有,y中有,有几个?
sp.sum(sp.isnan(y))
有8个,还行,不算多如果大部分都是无效的数值说明这个数据源没法用。删除掉这8个值,注意x中也要对应删除,不能只删除y中的,怎么删?
可以检查一下:
原来是743个,是少了8个,对着呢。
到此我们的数据就准备完成了,以后所有的操作都是依赖于这两组数据,x,y就不再变了。
为了方便以后使用可以将用到的代码放到文件当中,保存起来。
first.py
以下是我的实际运行情况。
环境:windows、Python2.7(或以上)、IPython (其实用spyder最好)
模块:NumPy、SciPy、Matplotlib
数据源:web_traffic.tsv(怎么上传文件?)
数据介绍:某网站连续743个小时,每小时网站的访问次数。可以理解为(743行,2列)的二维数组,x代表连续的小时数,y代表每小时的访问次数。(其实这个文件里面的数据并不是从真实的网站上导出的#^_^#,而是作者用程序生成的,书的附件中有源码)。
我们先采用交互的方式(在IPython中)分析,然后再写到程序文件当中,最后再按照作者源程序的思路优化程序。
一、读取数据(使用SciPy中的genfromtxt()函数,文件中的数据是以Tab字符分割的数字)
import scipy as sp data=sp.genfromtxt("web_traffic.tsv",delimiter="\t")
注意:1、web_traffic.tsv文件需在当前目录下(如果你很想按照书中的源代码那样,用os.path获取其绝对路径,就请忽视这条,绝对路径的好处就是不容易出错,例如在spyder中只能用绝对路径);
2、数组data中含有无效数据,是因为sp.genfromtxt()得到的是数值,如果源文件含有字符(串)会自动替换为“nan”(Not a Number)
二、预处理和清除无效数据
1、将二维数组data拆分为两个一维数组,或者说是拆成两列也可以。
x=data[:,0] #x等于第0列的所有行的数 y=data[:,1] #y等于第1列的所有行的数
注意冒号后面的逗号。
2、查看一下x,y中是否含有无效nan数据:
print(sp.isnan(x)) print(sp.isnan(y))
打印出的是一个bool型的数组(不是列表),如果其中含有True则说明有异常值,因此从输出结果中看x中没有,y中有,有几个?
sp.sum(sp.isnan(y))
有8个,还行,不算多如果大部分都是无效的数值说明这个数据源没法用。删除掉这8个值,注意x中也要对应删除,不能只删除y中的,怎么删?
x=x[~sp.isnan(y)] y=y[~sp.isnan(y)]
可以检查一下:
print(sp.isnan(y)) len(x)
原来是743个,是少了8个,对着呢。
到此我们的数据就准备完成了,以后所有的操作都是依赖于这两组数据,x,y就不再变了。
为了方便以后使用可以将用到的代码放到文件当中,保存起来。
import scipy as sp data=sp.genfromtxt("web_traffic.tsv",delimiter="\t")
x=data[:,0]
y=data[:,1]
x=x[~sp.isnan(y)]
y=y[~sp.isnan(y)]
first.py
以下是我的实际运行情况。
![](http://images0.cnblogs.com/blog2015/697798/201507/281159297667268.png)
相关文章推荐
- Dom元素中的元素应用
- JS应用,表单上的一些东西
- 初识html
- Fragment的生命周期(4)
- symfony路由组件(The Routing Component)
- Linux系统管理之十二---内核编译升级
- poj_1877
- Hibernate One2Many映射关系
- xss和csrf攻击
- mongodb(四)-文档
- 如何编写Xcode 插件
- ZOJ 3882 Help Bob
- UVa 311 - Packets
- android面试题总结02 在android中本地写入一个xml文件
- 添加朋友, 数据库设计 与 实现
- Neutron - flat模式
- Spring JSR-250注解
- 初识HTML+ CSS
- ubuntu更新删除旧内核的shell脚本
- [黑马程序员](第50天)一些平时刷的题(3)