1. 概念
机器学习是从数据中提取知识。涉及统计学和人工智能,也被称为预测分析或统计学习。
应用领域非常广泛,用户习惯预测,个性推荐,分析DNA序列等等。
机器学习优势是将决策过程自动化,需要涉及较好的算法。如果决策过程从已知示例泛化得出,这种叫监督学习(supervised learning),就是输入包括预期输出和待处理输入,算法给出输出结果。无监督学习(unsupervised learning algorithm),输入只有待处理输入。
无论监督学习还是无监督学习,将输入数据表征为计算机可以处理的形式都非常重要。例如,将数据想象成二维表格。你要处理的每一个数据点对应表格中一行记录,比如某学生,学生姓名,年龄,专业等等;用每个像素的灰度值描述肿瘤图像,或者大小、形状和颜色。
在机器学习中,每个实体或每一行称为一个样本(sample)或数据点,每一列被称为特征(feature)。如何构建良好的数据表征,被称为特征提取(feature extraction)或特征工程(feature engineering)。
2. 数据处理(机器学习)基本过程OCAI
机器学习和数据分析本质上都是迭代过程,由数据驱动分析。
对象(Objects):我想解决问题是什么?问题的对象是谁?
采集(Collectiong):收集到的数据能够回答这个问题吗?
分析(Analysis):用哪种方法分析我的问题,选择哪类机器学习算法?这些特征能否正确预测?
呈现(Interpretation):如何表述机器学习结果是有效的?对解决其它相关问题的影响?
3. 机器学习利器——Python
Python具有通用变成语言的强大功能,具有特定领域脚本语言的易用性,如Matlab或R。具有进行数据读取、统计、自然语言处理、图像处理、可视化等各种功能库。为数据科学家提供丰富的工具库。
4. 机器学习库scikit-learn
scikit-learn项目开源免费使用,包含众多机器学习算法,详细文档网址:http://scikit-learn.org/stable/documentation
4.1 安装scikit-learn
scikit-learn依赖包:NumPy和SciPy。进行绘图和交互开发,还需安装matplotlib、IPython和Jupyter Notebook,可通过pip install 的方式安装。
pip install numpy scipy matplotlib ipython scikit-learn pandas
- Jupyter Notebook
浏览器运行代码的交互环境
- NumPy
Python科学计算基础包之一。功能包括多为数组、高级数学函数,以及伪随机数生成器。在scikit-learn中,NumPy数组是基本数据结构。scikit-leearn接受NumPy数组格式的数据。待处理的数据都必须转换成NumPy数组。NumPy的核心功能是ndarray类,即多维(n维)数组。数组的所有元素必须是同一类型。举例
import numpy as np
DataX = np.array([[3,6,9],[4,7,0]])
print("Data:\n{}".format(DataX))
结果:
x:
[[3 6 9]
[4 7 9]]
- Scipy
SciPy是Python中科学计算的函数集合。具有线性代数高级程序、数学函数优化、信号处理、
特殊数学函数和统计分布等功能。scikit-learn利用SciPy函数集合实现算法。用SciPy中scipy.sparse可以给出稀疏矩阵(sparse matrice)。示例如下:
from scipy import sparse
eye = np.eye(4)
print("NumPy array:\n{}".format(eye))
结果:
NumPy array:
[[ 1. 0. 0. 0.]
[ 0. 1. 0. 0.]
[ 0. 0. 1. 0.]
[ 0. 0. 0. 1.]]
- matplotlib
Python中主要科学绘图库,如折线图、直方图、散点图等。在Jupyter Notebook中,可以使用%matplotlib notebook和%matplotlib inline命令,在浏览器中现实图像。
%matplotlib inline
import matplotlib.pyplot as plt
# 在-10和10之间⽣成⼀个数列,共100个数
x = np.linspace(-10, 10, 100)
# ⽤正弦函数创建第⼆个数组
y = np.sin(x)
# plot函数绘制⼀个数组关于另⼀个数组的折线图
plt.plot(x, y, marker="x")
- pandas
处理和分析数据的库。它基于一种叫DataFrame的数据结构,模仿R语言中DataFrame。类似于Excel表格,包含大量修改表格和操作表格的方法,可以项SQL一样对表格进行查询和连接。与NumPy要求数组中所有元素数据类型完全一致,与NumPy不同的是,pandas允许每一列数据类型不同,可以从许多文件格式和数据库中提取数据。可以利用字典创建数据集。
import pandas as pd
from IPython.display import display
# 创建关于⼈的简单数据集
data = {'Name': ["John", "Anna", "Peter", "Linda"], 'Location' : ["New York", "Paris","Berlin", "London"], 'Age' : [24, 13, 53, 33] }
data_pandas = pd.DataFrame(data)
# IPython.display可以在Jupyter Notebook中打印出“美观的”DataFrame
display(data_pandas)
注:本文内容建议使用Jupyter Notebook实现