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

第 1 部分机器学习简介

机器学习是从数据中提取知识,它是统计学、人工智能和计算机科学交叉的研究领域,也被称为预测分析(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指令,等待下载完成即可

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

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.

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

版权声明:本文为博主ErrorError!原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_50587771/article/details/123223992

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年3月3日 下午3:27
下一篇 2022年3月3日 下午3:46

相关推荐