Python 数据挖掘实战概述
一、数据挖掘
首先,我们来思考一个问题:为什么要进行数据挖掘?
在当下这个时代,大量数据被收集并存储在数据库、数据仓库中。同时,计算机越来越便宜,功能也越来越强大。但随之而来的是 “数据爆炸但知识贫乏” 的现象 —— 人们积累的数据越来越多,却大多只用于录入、查询、统计等基础功能,无法发现数据中隐藏的关系和规则,更难根据现有数据预测未来趋势。
而且,数据正以极快的速度增长,甚至达到 GB 每小时的级别。这些原始数据价值密度低,传统技术难以处理,很多数据根本未曾被分析过。而数据挖掘,或许能为科学家和研究者们提供新的突破口。
那什么是数据、信息和知识呢?
- 数据:是对现实世界中实体、事件或活动的记录,形式包括文本、数字、图形、声音、视频等,是未经加工的原料。
- 信息:是为特定目的,对数据进行过滤、融合、标准化、归类等处理后得到的有价值的数据流。
- 知识:是通过对信息归纳、演绎、提炼和总结,得到的更具价值的观点、规律或方法论。
基于这些,数据挖掘的定义就很清晰了:它是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取出隐含的、事先不知道但潜在有用的信息和知识的过程。它还有很多其他名字,比如数据库中的知识发现(KDD)、知识提取、数据或模式分析、信息收集等。
数据挖掘的发展也经历了一个过程。20 世纪 60 年代,主要是收据收集,用计算机、磁盘、磁带等,关注过去的静态数据传输;80 年代,关系数据库出现,有了结构化查询语言(SQL)等,能进行动态数据传输,关注记录级的回顾性数据;90 年代,联机分析处理(OLAP)、多维数据库、数据仓库等技术发展,支持多级动态数据传输;而现在,借助高级算法、多处理器计算机和海量数据库,数据挖掘能进行预期性、前瞻性的信息传递,甚至能预测未来的情况。
数据挖掘是一个多学科交叉领域,融合了统计学的抽样、估计和假设检验,人工智能、机器学习的搜索算法、建模技术和学习理论,数据库系统的存储、索引和查询处理支持,还有分布式技术、最优化、进化计算等多种技术。
那么,我们在什么样的数据上进行挖掘呢?
从计算机科学角度看,数据可以是数字、文字、声音等能输入计算机并被识别的符号,像企业运营数据、用户数据等。从表现形式分,有数字、文本、声音等;从组织和存储方式分,有结构化数据和非结构化数据。
通常,数据挖掘可以应用于关系数据库、数据仓库、事务数据库、文本、Web、日志、图像等多种类型的数据。
数据挖掘的应用非常广泛,在金融领域的信贷风险管理、反洗钱监测,电子商务中的商品推荐,医学上的蛋白质分子结构预测,还有市场营销、生物学、科学研究、股票交易、地震预警等方面,都能看到它的身影。
二、数据挖掘的基本步骤
数据挖掘有一套典型的流程:
- 需求分析:这是第一步也是最重要的一步,决定了后续分析的方向和方法。
- 数据获取:根据需求分析的结果提取、收集数据,它是数据分析的基础。
- 数据预处理:对数据进行合并、清洗、变换、标准化等处理,让数据变得干净整齐,能直接用于分析建模。
- 数据挖掘建模:通过统计分析、回归分析、聚类、分类等模型与算法,发现数据中有价值的信息并得出结论。
- 模型评价与优化:对建立的模型,根据其类别用不同指标评价性能优劣,并进行优化。
- 部署:将通过评价的数据分析结果和结论应用到实际生产系统中。
三、数据挖掘的常见任务
数据挖掘的任务可以分为预测和描述两类。
- 预测:根据其他属性的值,预测特定属性的值。
- 描述:导出概括数据中潜在联系的模式。
具体的任务类型有分类、回归、关联规则发现、聚类、异常 / 偏差检测、时间序列分析等。
四、数据挖掘的主要工具
数据挖掘流程复杂,需要依赖特定工具或软件。常见的有:
- 商业化软件:如 SAS 的 Enterprise Miner、IBM 的 SPSS Modeler、Oracle 的 Data Miner 等。
- 开源软件:如 Weka、RapidMiner、KNIME 等。
- 基于脚本语言的工具:如 Python 语言、R 语言等。
其中,Python 在数据分析方面有不少优势:
- 语法简单精练,初学者容易上手。
- 有强大的库,能只用这一种语言构建以数据为中心的应用程序。
- 功能强大,介于传统脚本语言和系统语言之间,既有脚本语言的简单易用,又有编译语言的高级软件工程工具。
- 适用于研究、原型构建和生产系统构建,能给企业带来组织效益,降低运营成本。
- 是胶水语言,能轻易与其他语言的组件结合。
Python 数据分析常用的类库有:
- NumPy:是 Python 科学计算的基础包,有快速的多维数组对象,能对数组进行元素级计算和数学运算,还有读写数组数据集、线性代数运算等功能。
- SciPy:包含解决科学计算中标准问题域的模块集合,如插值、积分、优化等,有 8 个主要模块,各有不同应用。
- Pandas:是数据访问的核心库,提供处理结构化数据的数据结构和函数,有高性能数组计算和灵活数据处理功能,还有复杂的索引功能。
- Matplotlib:是绘制数据图表的库,适合创建出版物级图表,操作简单,能生成多种图形,还有交互式绘图环境。
- scikit-learn:是数据挖掘和数据分析工具,简单有效,封装了常用算法,基本模块有数据预处理、模型选择等,能解决大部分数据量不大的问题。
对于 Python 环境的安装和配置,新手可能会遇到一些难题,比如源码编译、环境变量配置、版本依赖等。为避免麻烦,我们采用 Anaconda 这个 Python 科学计算发行版,它除了 Python 本身,还包含科学计算和数据分析所需的主流模块、包管理工具 Conda,以及 Jupyter 和 Spyder 两款编辑器。
Anaconda 有很多优点,预装了大量常用包,完全开源免费,对全平台和几乎所有 Python 版本支持,额外的加速和优化虽收费,但学术用途可申请免费许可。大家可以在官网Download Anaconda Distribution | Anaconda下载最新版本。
在 Windows 系统上安装 Anaconda 很简单,下载安装包后,依次点击 “next”“I agree”“All Users”,选择安装路径,再点击 “Install”,最后 “finish” 即可。
Anaconda 包含的 Jupyter Notebook 是基于 Web 的交互式 Python 开发环境,能将代码、运行结果、文本等以富文本形式展示在网页中,非常受欢迎。