Python机器学习引言与基础知识储备

第一部分 机器学习入门


机器学习是从数据中提取知识,它是统计学、人工智能和计算机科学交叉的研究领域,也被称为预测分析(predictive analytics)或统计学习(statistical learning)

1.1 为什么选择机器学习

在“智能”应用的早期,许多系统使用人为制订的“if”和“else”决策规则来处理数据,或根据用户输入的内容进行调整

例如垃圾邮件的识别和清理,这是专家设计的规则体系来设计“智能应用”的一个实例,人为制订的决策规则对某些应用来说是可行的,特别是人们对其模型处理过程非常熟悉的应用

但是人为指定决策规则有两个缺点:

  • 做决策所需要的逻辑只适用于单一领域和单项任务任务,哪怕稍有变化,都可能需要重写整个系统

  • 想要制订规则,需要对人类专家的决策过程有很深刻的理解

这种人为制订规则的方法并不适用的一个例子就是图像中的人脸检测,其主要问题在于,计算机“感知”像素(像素组成了计算机中的图像)的方式与人类感知面部的方式有非常大的不同。正是由于这种表征差异,人类想要制订出一套好的规则来描述数字图像中的人脸构成,基本上是不可能的

但是如果有了机器学习,向程序输入海量人脸图像,就足以让算法确定识别人脸需要哪些特征

1.1.1 机器学习能够解决的问题

最成功的机器学习算法是能够将决策过程自动化的那些算法,这些决策过程是从已知示例中泛化得出的,这就是监督学习

监督学习:从输入 / 输出对中进行学习的机器学习算法

用户将成对的输入和预期输出提供给算法,算法会找到一种方法,根据给定输入给出预期输出,尤其是在没有人类帮助的情况下,给定前所未见的输入,算法也能够给出相应的输出(这就是决策过程自动化)

监督学习能解决的问题:识别信封上手写的邮政编码,基于医学影像判断肿瘤是否为良性,检测信用卡交易中的诈骗行为

在这些例子中需要注意一个有趣的现象,就是虽然输入和输出看起来相当简单,但三个例子中的数据收集过程却大不相同

无监督学习:只有输入数据是已知的,没有为算法提供输出数据

无监督学习能解决的问题:确定一系列博客文章的主题,将客户分成具有相似偏好的群组,检测网站的异常访问模式

无论是监督学习任务还是无监督学习任务,将输入数据表征为计算机可以理解的形式都是十分重要的。通常来说,将数据想象成表格是很有用的

你想要处理的每一个数据点(每一封电子邮件、每一名客户、每一次交易)对应表格中的一行,描述该数据点的每一项属性(比如客户年龄、交易金额或交易地点)对应表格中的一列

在机器学习中,这里的每个实体或每一行被称为一个样本 (sample)或数据点,而每一列(用来描述这些实体的属性)则被称为特征

1.1.2 熟悉任务和数据

在机器学习过程中,最重要的部分很可能是理解你正在处理的数据,以及这些数据与你想要解决的任务之间的关系

在开始构建模型之前,你需要理解数据集的内容。每一种算法的输入数据类型和最适合解决的问题都是不一样的

从更大的层面来看,机器学习算法和方法只是解决特定问题的过程中的 一部分,一定要始终牢记整个项目的大局(注重问题的解决)

1.2 为什么选择Python

机器学习使用Python有三个主要原因:

1、Python 已经成为许多数据科学应用的通用语言,它既有通用编程语言的强大功能,也有特定领域脚本语言(比如 MATLAB 或 R)的易用性

2、Python 有用于数据加载、可视化、统计、自然语言处理、图像处理等各 种功能的库

3、利用终端或其他类似Jupyter Notebook 的工具能够直接与代码进行交互

1.3 scikit-learn

scikit-learn 是一个开源项目,可以免费使用和分发,任何人都可以轻松获取其源代码来查看其背后的原理,它是一个非常流行的工具,也是最有名的Python机器学习库

scikit-learn 也可以与其他大量 Python 科学计算工具一起使用

scikit-learn 用户指南(http://scikit-learn.org/stable/user_guide.html )

scikit-learn 依赖于另外两个 Python 包:NumPy 和 SciPy

若想绘图和进行交互式开发,还应该安装 matplotlib 、IPython 和 Jupyter Notebook

如果你已经安装了Python,那么你可以用pip安装上述所有包:

pip install numpy scipy matplotlib ipython scikit-learn pandas

注意:注意pip指令的输入位置,要在Python的Scripts路径下使用pip指令,等待下载完成即可

在这里插入图片描述

1.4 必要的库和工具

了解 scikit-learn 及其用法是很重要的,但还有其他一些库也可以改善你的编程体验。 scikit-learn 是基于 NumPy 和 SciPy 科学计算库的。除了 NumPy 和 SciPy,我们还会用到 pandas 和 matplotlib ,我们还会介绍 Jupyter Notebook,一个基于浏览器的交互编程环境

1.4.1 Jupyter Notebook

Jupyter Notebook 是可以在浏览器中运行代码的交互环境,这个工具在探索性数据分析方面非常有用,虽然 Jupyter Notebook 支持多种编程语言,但我们只需要支持 Python 即可,用它整合代码、文件和图形非常的方便

1.4.2 Numpy

NumPy 是 Python 科学计算的基础包之一:它的功能包括多维数组、高级数学函数(比如线性代数运算和傅里叶变换),以及伪随机数生成器

注意:在 scikit-learn 中,NumPy 数组是基本数据结构

scikit-learn接受 NumPy 数组格式的数据,你用到的所有数据都必须转换成 NumPy数组,NumPy 的核心功能是 ndarray 类,即多维(n 维)数组,数组中所有元素必须是同一类型

对于 NumPy ndarray 类的对象,我们将其简 称为“NumPy 数组”或“数组”

#输入
import numpy as np 
x = np.array([[1, 2, 3], [4, 5, 6]])
print("x:\n{}".format(x))
---
#输出
x:
    [[1 2 3] 
     [4 5 6]]
1.4.3 SciPy

SciPy 是 Python 中用于科学计算的函数集合,它具有线性代数高级程序、数学函数优化、信号处理、特殊数学函数和统计分布等多项功能,scikit-learn 利用 SciPy 中的函数集合来实现算法

对我们来说,SciPy 中最重要的是 scipy.sparse :它可以给出稀疏矩阵 (sparse matrice),稀疏矩阵是 scikit-learn 中数据的另一种表示方法

通常来说,创建稀疏数据的稠密表示(dense representation)是不可能的 (因为太浪费内存),所以我们需要直接创建其稀疏表示(sparse representation)

#输入
from scipy import sparse
# 创建一个二维NumPy数组,对角线为1,其余都为0 
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.]]
1.4.4 matplotlib

matplotlib 是 Python 主要的科学绘图库,其功能为生成可发布的可视 化内容,如折线图、直方图、散点图等,将数据及各种分析可视化,可以让你产生深刻的理解,而我们将用 matplotlib 完成所有的可视化内 容。在 Jupyter Notebook 中,你可以使用 %matplotlib notebook 和 %matplotlib inline 命令,将图像直接显示在浏览器中

推荐使用 %matplotlib notebook 命令,它可以提供交互环境

1.4.5 pandas

pandas 是用于处理和分析数据的 Python 库,它基于一种叫作DataFrame 的数据结构,简单来说,一个 pandas DataFrame 是一张表格,类似于 Excel 表格,pandas 中包含大量用于修改表格和操作表格的方法

与NumPy要求数组中的元素同一类型不同,pandas每一列数据的类型可以互不相同,并且它的一个强大之处在于可以从许多文件格式和数据库中提取数据

版权声明:上述内容部分摘自《Python机器学习基础教程》——O’Reilly Media, Inc.

如果文章对您有所帮助,记得一键三连支持一下哦~

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香蕉道突破手牛爷爷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值