覆盖使用Python进行数据挖掘查找和描述数据结构模式的实践工具。
第一节
介绍
数据挖掘是一个隐式提取以前未知的潜在有用的数据信息提取方式。它使用广泛,并且是众多应用的技术基础。
本文介绍那些使用Python数据挖掘实践用于发现和描述结构模式数据的工具。近些年来,Python在开发以数据为中心的应用中被用的越来越多。感谢大型科学计算社区的支持以及大大丰富的数据分析函数库。尤其是,我们可以看到如何:
• 导入和可视化数据
• 数据分类
• 使用回归分析和相关测量法发现数据之间的关系
• 数据降维以压缩和可视化数据带来的信息
• 分析结构化数据
每个主题都会提供代码实例,它们基于四个主要的Python数据分析和处理的类库:numpy,matplotlib,sklearn和networkx。
第二节
数据导入和可视化
通常,数据分析的第一步由获取数据和导入数据到我们的工作环境组成。我们可以使用以下的Python代码简单的下载数据:
1 2 3 4 5 6 |
import urllib2 url = 'http://aima.cs.berkeley.edu/data/iris.csv' u = urllib2.urlopen(url) localFile = open('iris.csv'', 'w') localFile.write(u.read()) localFile.close() |
在以上的代码片段中,我们使用了urllib2类库以获取伯克利大学网站的一个文件,并使用标准类库提供的File对象把它保存到本地磁盘。数据包含鸢尾花(iris)数据集,这是一个包含了三种鸢尾花(山鸢尾、维吉尼亚鸢尾和变色鸢尾)的各50个数据样本的多元数据集,每个样本都有四个特征(或者说变量),即花萼(sepal)和花瓣(petal)的长度和宽度。以厘米为单位。
数据集以CSV(逗号分割值)的格式存储。CSV文件可以很方便的转化并把其中的信息存储为适合的数据结构。此数据集有5列(译者注:原文是行,但这里应该是列的意思),前4列包含着特征值,最后一列代表着样本类型。CSV文件很容易被numpy类库的genfromtxt方法解析:
1 2 3 4 5 |
from numpy import genfromtxt, zeros # read the first 4 columns data = genfromtxt('iris.csv',delimiter=',',usecols=(0,1,2,3)) # read the fifth column target = genfromtxt('iris.csv',delimiter=',',usecols=(4),dtype=str) |
在上面的例子中我们创建了一个包含特征值的矩阵以及一个包含样本类型的向量。我们可以通过查看我们加载的数据结构的shape值来确认数据集的大小:
1 2 3 4 |
print data.shape (150, 4) print target.shape (150,) |
我们也可以查看我们有多少种样本类型以及它们的名字:
1 2 |
print set(target) # build a collection of unique elements set(['setosa', 'versicolor', 'virginica']) |
当我们处理新数据的时候,一项很重要的任务是尝试去理解数据包含的信息以及它的组织结构。可视化可以灵活生动的展示数据,帮助我们深入理解数据。
使用pylab类库(matplotlib的接口)的plotting方法可以建一个二维散点图让我们在两个维度上分析数据集的两个特征值:
1 2 3 4 5 |
from pylab import plot, show plot(data[target=='setosa',0],data[target=='setosa',2],'bo') plot(data[target=='versicolor',0],data[target=='versicolor',2],'ro') plot(data[target=='virginica',0],data[target=='virginica',2],'go') show() |
上面那段代码使用第一和第三维度(花萼的长和宽),结果如下图所示:
在上图中有150个点,不同的颜色代表不同的类型;蓝色点代表山鸢尾,红色点代表变色鸢尾,绿色点代表维吉尼亚鸢尾。
另一种常用的查看数据的方法是分特性绘制直方图。在本例中,既然数据被分为三类,我们就可以比较每一类的分布特征。下面这个代码可以绘制数据中每一类型的第一个特性(花萼的长度):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from pylab import figure, subplot, hist, xlim, show xmin = min(data[:,0]) xmax = max(data[:,0]) figure() subplot(411) # distribution of the setosa class (1st, on the top) hist(data[target=='setosa',0],color 覆盖使用Python进行数据挖掘查找和描述数据结构模式的实践工具。 第一节 介绍数据挖掘是一个隐式提取以前未知的潜在有用的数据信息提取方式。它使用广泛,并且是众多应用的技术基础。 本文介绍那些使用Python数据挖掘实践用于发现和描述结构模式数据的工具。近些年来,Python在开发以数据为中心的应用中被用的越来越多。感谢大型科学计算社区的支持以及大大丰富的数据分析函数库。尤其是,我们可以看到如何: • 导入和可视化数据 • 数据分类 • 使用回归分析和相关测量法发现数据之间的关系 • 数据降维以压缩和可视化数据带来的信息 • 分析结构化数据 每个主题都会提供代码实例,它们基于四个主要的Python数据分析和处理的类库:numpy,matplotlib,sklearn和networkx。 第二节 数据导入和可视化通常,数据分析的第一步由获取数据和导入数据到我们的工作环境组成。我们可以使用以下的Python代码简单的下载数据:
在以上的代码片段中,我们使用了urllib2类库以获取伯克利大学网站的一个文件,并使用标准类库提供的File对象把它保存到本地磁盘。数据包含鸢尾花(iris)数据集,这是一个包含了三种鸢尾花(山鸢尾、维吉尼亚鸢尾和变色鸢尾)的各50个数据样本的多元数据集,每个样本都有四个特征(或者说变量),即花萼(sepal)和花瓣(petal)的长度和宽度。以厘米为单位。 数据集以CSV(逗号分割值)的格式存储。CSV文件可以很方便的转化并把其中的信息存储为适合的数据结构。此数据集有5列(译者注:原文是行,但这里应该是列的意思),前4列包含着特征值,最后一列代表着样本类型。CSV文件很容易被numpy类库的genfromtxt方法解析:
在上面的例子中我们创建了一个包含特征值的矩阵以及一个包含样本类型的向量。我们可以通过查看我们加载的数据结构的shape值来确认数据集的大小:
我们也可以查看我们有多少种样本类型以及它们的名字:
当我们处理新数据的时候,一项很重要的任务是尝试去理解数据包含的信息以及它的组织结构。可视化可以灵活生动的展示数据,帮助我们深入理解数据。 使用pylab类库(matplotlib的接口)的plotting方法可以建一个二维散点图让我们在两个维度上分析数据集的两个特征值:
上面那段代码使用第一和第三维度(花萼的长和宽),结果如下图所示: 在上图中有150个点,不同的颜色代表不同的类型;蓝色点代表山鸢尾,红色点代表变色鸢尾,绿色点代表维吉尼亚鸢尾。 另一种常用的查看数据的方法是分特性绘制直方图。在本例中,既然数据被分为三类,我们就可以比较每一类的分布特征。下面这个代码可以绘制数据中每一类型的第一个特性(花萼的长度):
|