第一部分 机器学习入门

机器学习入门

  • 第一部分 机器学习入门
    • 1.1 为什么选择机器学习
      • 1.1.1 机器学习能够解决的问题
      • 1.1.2 熟悉任务和数据
    • 1.2 为什么选择Python
    • 1.3 scikit-learn
    • 1.4 必要的库和工具
      • 1.4.1 Jupyter Notebook
      • 1.4.2 Numpy
      • 1.4.3 SciPy
      • 1.4.4 matplotlib
      • 1.4.5 pandas

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

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

Python机器学习引言与基础知识储备相关推荐

  1. 小猪的Python学习之旅 —— 1.基础知识储备

    小猪的Python学习之旅 -- 1.基础知识储备 引言: (文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句&q ...

  2. 学python需要什么基础知识-没学过Python先要学习哪些基础知识?

    零基础学Python应该学习哪些入门知识 关于零基础怎么样能快速学好Python的问题,百度提问和解答的都很多,你可以百度下看看.我觉得从个人自学的角度出发,应从以下几个方面来理解: 1 为什么选择学 ...

  3. 机器学习需要哪些基础知识?

    机器学习需要一些基础知识,包括以下几个方面: 机器学习需要哪些基础知识? 数学基础:机器学习涉及到很多数学知识,如线性代数.微积分.概率论和统计学等.这些数学知识是理解和应用机器学习算法的基础. 编程 ...

  4. 【深入剖析Tomcat笔记】第一篇 基础知识储备

    基础知识储备 最近突然在想,做了这么久的WEB相关,像tomcat.apache这些服务器究竟是什么东西,恰好碰到<How Tomcat Works>(中文版<深入剖析Tomcat& ...

  5. 数字图像处理与Python实现笔记之基础知识

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  6. 机器学习算法的基础知识

    机器学习算法的基础知识 1.评估指标 2.偏差与方差(过拟合与欠拟合) 3.正则化(解决过拟合) 4.梯度下降算法(算法优化方式) 5.数据不平衡 1.评估指标 预测值 0 1 实际 0 TN FP ...

  7. VII python(1)基础知识

    VII Python(1)基础知识 1989年诞生(同LinuxOS),google推崇,06年后才开始在中国流行,08年运维开始使用python www.python.org(主流OS默认配的pyt ...

  8. python 图像分析自然纹理方向与粗细代码_数字图像处理与Python实现笔记之基础知识...

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  9. 学习新概念第一册 第一堂课 音标和基础知识储备(1)

    这是我第一次写博客,将自己学习新概念的笔记整理到上面希望对大家有帮助. 总共44堂课.今天是第一堂课.3节课音标和基础知识储备.剩余41节课讲新概念第一册. 在英语中音标就相当于汉语中的拼音,字母就相 ...

最新文章

  1. Python 之 matplotlib (十四)图中图
  2. tcp out of order解决_分布式集群解决方案 学习笔记
  3. 200730学习日报6字符串
  4. MySql数据库SQL语言基础知识点—Navicat
  5. 关于字符串流的学习(c++)
  6. 硬件编程:77条STM32知识汇总
  7. GitHub基础——下载和上传
  8. ubuntu opencv多版本控制
  9. GIS+区块链,地理空间数据新型应用场景未来可期
  10. 3dmax如何删除多余的时间帧
  11. 两种方法去除页眉页脚:基于OCR识别后的文本/基于图片切割
  12. hadoop初体验——WordCount实例
  13. 开发APP、微信小程序、网页,都需要什么?
  14. 高性能电工电子电拖及自动化技术实训与考核装置
  15. onlyoffice 安装、测试、打包、部署
  16. 如何切换不同的python环境
  17. 红光光浴缓解“缠腰龙”给你健康#大健康#红光光浴#红光#种光光学
  18. 2021-07-09web前端-课堂笔记
  19. Android中自动拦截电话
  20. JavaScript封装异步函数 —— 【异步编程】 —— 如何获取一个函数中异步操作的结果?

热门文章

  1. MySQL 索引与索引优化
  2. 2022-2027年中国冲锋衣行业市场调研及未来发展趋势预测报告
  3. Linux 系统如何修改时区
  4. 新手站长要怎么坚持更新网站?
  5. 编程术语成系统中文化的意义
  6. HTML <span>标签
  7. 西江月·笙歌散后酒初醒
  8. 软件工程课程学习之入门浅谈
  9. BufferedReader.read()
  10. phpstudy访问localhost/phpMyAdmin提示404错误解决方法