学习笔记之机器学习实战 (Machine Learning in Action)

时间:2021-04-10 22:00:36

机器学习实战 (豆瓣)

  • https://book.douban.com/subject/24703171/
  • 机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存、谋发展的决定性手段,这使得这一过去为分析师和数学家所专属的研究领域越来越为人们所瞩目。
  • 本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法、朴素贝叶斯算法、Logistic回归算法、支持向量机、AdaBoost集成方法、基于树的回归算法和分类回归树(CART)算法等。第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法、Apriori算法、FP-Growth算法。第四部分介绍了机器学习算法的一些附属工具。
  • 全书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用Python代码来阐释如何处理统计数据,进行数据分析及可视化。通过各种实例,读者可从中学会机器学习的核心算法,并能将其运用于一些策略性任务中,如分类、预测、推荐。另外,还可用它们来实现一些更高级的功能,如汇总和简化等。

Machine Learning in Action

https://www.safaribooksonline.com/library/view/machine-learning-in/9781617290183/

Summary

Machine Learning in Action is a unique book that blends the foundational theories of machine learning with the practical realities of building tools for everyday data analysis. You'll use the flexible Python programming language to build programs that implement algorithms for data classification, forecasting, recommendations, and higher-level features like summarization and simplification.

About this Book

A machine is said to learn when its performance improves with experience. Learning requires algorithms and programs that capture data and ferret out the interesting or useful patterns. Once the specialized domain of analysts and mathematicians, machine learning is becoming a skill needed by many.

Machine Learning in Action is a clearly written tutorial for developers. It avoids academic language and takes you straight to the techniques you’ll use in your day-to-day work. Many (Python) examples present the core algorithms of statistical data processing, data analysis, and data visualization in code you can reuse. You’ll understand the concepts and how they fit in with tactical tasks like classification, forecasting, recommendations, and higher-level features like summarization and simplification.

Readers need no prior experience with machine learning or statistical processing. Familiarity with Python is helpful.

What’s Inside

  • A no-nonsense introduction

  • Examples showing common ML tasks

  • Everyday data analysis

  • Implementing classic algorithms like Apriori and Adaboos

About the Author

Peter Harrington is a professional developer and data scientist. He holds five US patents and his work has been published in numerous academic journals.


超级数学建模|公开课】Python机器学习—泰坦尼克号获救预测_腾讯课堂

  • https://ke.qq.com/course/204383
  • https://github.com/haoran119/ke.qq.com.python/tree/master/src/python-ml-titanic
  • 机器学习案例实战泰坦尼克号船员获救预测,使用Python库从零开始,一步步完成预处理,建模以及评估的任务。

《机器学习实战》算法讲解及代码实现 - Python二三事与机器学习算法

  • https://mp.weixin.qq.com/s/XiFBYDZaB-NCBvsJbrTbVg
  • https://github.com/wzy6642/Machine-Learning-in-Action-Python3

Chapter 1. Machine learning basics

  • 机器学习的主要任务是将实例数据划分到合适的分类中。机器学习的另一项任务是回归,它主要用于预测数值型数据。大多数人可能都见过回归的例子-数据拟合曲线:通过给定数据点的最优拟合曲线。分类和回归属于监督学习,之所以称之为监督学习,是因为这类算法知道预测什么,即目标变量的分类信息。
  • 与监督学习相对应的是无监督学习,此时数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似对象组成的多个类的过程称为聚类;将寻找描述数据统计值的过程称为密度估计。此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观的展示数据信息。下表列出了机器学习的主要任务,以及解决相应问题的算法。

表1-2 用于执行分类、回归、聚类和密度估计的机器学习算法

监督学习的用途

k-近邻算法    线性回归
朴素贝叶斯算法  局部加权线性回归
支持向量机    Ridge回归
决策树      Lasso最小回归系数估计

无监督学习的用途

K-均值      最大期望算法
DBSCAN      Parzen窗设计

  • 从所列算法中选择实际可用的算法,必须考虑下面两个问题:一、使用机器学习算法的目的,想要算法完成何种任务;二、需要分析或收集的数据是什么。
  • 首先考虑使用机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法,否则无监督学习算法。确定选择监督学习算法后,需要进一步确定目标变量类型,如果是离散型,则可以使用分类器算法;如果是连续型,则需要选择回归算法。
  • 如果不想要预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。
  • 在大多数情况下,上面给出的选择方法都能帮助读者选择适当的机器学习算法,但这也并非一成不变。
  • 其次需要考虑的是数据问题。主要了解数据的以下特性:特征值是离散型还是连续型变量,特征值中是否存在缺少的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何等。
  • 我们只能在一定程度上缩小算法的选择范围,一般并不存在最好的算法或者给出最好结果的算法,同时还要尝试不同算法的执行效果。
  • 本书学习和使用机器学习算法开发应用程序,通常遵循以下步骤
  1. 收集数据
  2. 准备输入数据
  3. 分析输入数据
  4. 训练算法
    • 如果使用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相关的内容都在第5步。  
  5. 测试算法
  6. 使用算法
  • 基于以下三个原因,我们选择Python作为实现机器学习算法的编程语言
    • 语法清晰
    • 易于操作纯文本文件
    • 使用广泛,存在大量的开发文档
  • 所有人在小学二年级已经学会了写作,然而大多数人必须从事其他更重要的工作。
  • Python语言唯一的不足就是性能问题。
  • 学习机器学习算法,必须了解数据实例,每个数据实例由多个特征值组成。分类是基本的机器学习任务,它分析未分类数据,以确定如何将其放入已知群组中。为了构建和训练分类器,必须首先输入大量已知分类的数据,即训练样本集。

Chapter 2. Classifying with k-Nearest Neighbors

  • This chapter covers
    • The k-Nearest Neighbors classification algorithm
    • Parsing and importing data from a text file
    • Creating scatter plots with Matplotlib
    • Normalizing numeric values
  • 简单的说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。
  • 优点:精度高、对异常值不敏感、无数据输入假定。
  • 缺点:计算复杂度高、空间复杂度高。
  • 适用数据范围:数值型和标称型。
  • Pros: High accuracy, insensitive to outliers, no assumptions about data
  • Cons: Computationally expensive, requires a lot of memory
  • Works with: Numeric values, nominal values
  • k-近邻算法的一般流程:
  1. 收集数据:可以使用任何方法。
  2. 准备数据:距离计算所需要的数值,最好是结构化的数据格式。
  3. 分析数据:可以使用任何方法。
  4. 训练算法:此步骤不适用于该算法。
  5. 测试算法:计算错误率。
  6. 使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。
  • When dealing with values that lie in different ranges, it’s common to normalize them. Common ranges to normalize them to are 0 to 1 or -1 to 1. To scale everything from 0 to 1, you need to apply the following formula:
    • newValue = (oldValue-min)/(max-min)
  • Is there a way to make this smaller and take fewer computations? One modification to kNN, called kD-trees, allows you to reduce the number of calculations.
  • k-近邻算法是分类数据最简单有效的算法。它是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据。它必须保存全部数据集,如果训练数据集很大,必须使用大量存储空间,此外由于必须对数据集中的每个数据计算距离值,实际使用时可能非常耗时。
  • 它的另一个缺陷是它无法给出任何数据的基础结构信息,因此我们也无法知晓平均实例样本和典型实例样本具有什么特征。

Chapter 3. Splitting datasets one feature at a time: decision trees

  • This chapter covers
    • Introducing decision trees
    • Measuring consistency in a dataset
    • Using recursion to construct a decision tree
    • Plotting trees in Matplotlib