机器学习(Machine Learning)

课程简介

机器学习(Machine Learning, ML)是一门多领域交叉科学,也是人工智能技术的核心。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能;特别是如何从数据或者以往的经验中学习,使之不断改善自身的性能。近年来,机器学习技术在自然语言处理、语音识别、图像识别、手写字符识别、金融数据分析等等领域得到了十分广泛和成功的应用。 1. 通过本门课程的学习,使学生了解机器学习的基本概念、应用背景;掌握各类机器学习算法的基本原理; 培养学生学会分析研究计算机处理的数据对象的特性,以便选择适当的机器学习算法和模型解决实际问题。 2. 本课程的学习过程也是进行数据分析和复杂程序设计的训练过程。通过对具体机器学习算法和应用案例的研究,进一步锻炼学生的动手能力,培养学生解决实际问题的能力。

值得注意的是,由于近年来深度学习的飞速发展,传统机器学习的算法已经逐渐落幕。但本课程所涉及的处理问题的基本方法和思路依然可以被用到后续的基于深度学习的课程中。与此同时,本课程所涉及的传统机器学习算法也是人工智能技术的基本算法,非常值得学习和理解。

教学内容

课堂讲授(含实验)约96学时(6学分),同时包含28个学时(0.5学分)的实训学时(1周)。主要包括:机器学习的基本概念和机器学习系统的基本要素,概念学习,决策树学习,贝叶斯学习,基于实例的学习,感知机和支持向量机,集成学习,以及神经网络和深度学习基础;各种机器学习算法应用案例分析。


本课程的考勤、作业提交、课堂练习、期末测验将使用课堂派平台,请各位同学使用实名(学号)加入课程。在使用方面有疑问的同学可以参考使用手册—学生版。加入课程请扫描二维码,或注册后使用加课码加入:课程二维码及课程码


教学文件: 教学大纲 考核说明 教学进度计划(2020年春) 课程实训报告首页模板 课堂互动题库
数据集:本课程用到的所有第三方数据集

课程进度计划表

Event Type Date Description Course Materials
  • Indroduction
  • Week1 Section1
  • 第0讲《机器学习》课程导学
  • Lecture 1
  • Week1 Section2
  • 第1.1讲 机器学习绪论
  • 第1.2讲 模型评估与选择
  • Lecture 2
  • Week2 Section1
  • Week2 Section2
  • 第02讲 Python机器学习环境安装和配置 [Notebook]
  • 1. Python环境的安装和配置
  • 2. Numpy基础科学计算库
  • 3. Scipy科学计算工具集
  • 4. Pandas数据分析工具
  • 5. Matplotlib绘图库
  • 6. scikit-learn机器学习库
  • Lecture 3
  • Week3 Section1
  • Week3 Section2
  • 第03讲 KNN (K最近邻算法/K近邻算法) [Notebook]
  • 1. KNN算法原理
  • 2. 基于KNN的二分类任务
  • 3. 基于KNN的多分类任务
  • 4. 基于KNN的回归分析
  • 5. KNN算法案例一:酒的分类
  • 6. KNN算法案例二:糖尿病预测
  • Lecture 4
  • Week4 Section1
  • Week4 Section2
  • 第04讲 广义线性模型 [Notebook]
  • 1. 线性模型的基本概念
  • 2. 线性模型的可视化
  • 3. 线性回归(Linear Regression)
  • 4. 岭回归(Ridge Regression)
  • 5. 套索回归(Lasso Regression)
  • Discussion Section 1
  • Week5 Section1
  • Lecture 5
  • Week5 Section2
  • Week6 Section1
  • Week6 Section2
  • 第05讲 朴素贝叶斯 [Notebook]
  • 1. 朴素贝叶斯的基本概念
  • 2. 朴素贝叶斯的简单应用实例
  • 3. 贝努利朴素贝叶斯
  • 4. 高斯朴素贝叶斯
  • 5. 多项式朴素贝叶斯
  • 6. 贝叶斯综合实例——肿瘤判断
  • Lecture 6
  • Week7 Section1
  • Week7 Section2
  • 第06讲 决策树和随机森林 [Notebook]
  • 1. 决策树算法的基本原理
  • 2. 决策树的构建、分析与评估
  • 3. 随机森林的基本原理
  • 4. 随机森林的构建、分析与评估
  • 5. 决策树与随机森林综合实力——基于Adult的相亲问题
  • Lecture 7
  • Week8 Section1
  • Week8 Section2
  • 第07讲 支持向量机 [Notebook]
  • 1. SVM的基本原理
  • 2. SVM的核函数及基本用法
  • 3. SVM的参数选择
  • 4. SVM实例分析:波士顿房价回归分析
  • Discussion Section 2
  • Week9 Section2
  • Lecture 8
  • Week9 Section1
  • Week10 Section1
  • Week10 Section2
  • 第08讲 神经网络 [Notebook]
  • 1. 神经网络的起源
  • 2. 神经网络的寒冬和发展历史
  • 3. 神经网络的原理
  • 4. 非线性矫正和激活函数
  • 5. 神经网络的使用方法
  • 6. 神经网络实例-MNIST手写字体识别
  • Lecture 9
  • Week11 Section1
  • Week11 Section2
  • Week12 Section1
  • 第09讲 数据预处理、降维、特征提取及聚类 [Notebook]
  • 1. 数据预处算法简介
  • 2. PCA降维
  • 3. 特征提取
  • 4. 三种典型的聚类算法
  • Lecture 10
  • Week12 Section2
  • 第10讲 数据表达与特征工程 [Notebook]
  • 1. 数据表达
  • 2. 数据升维
  • 3. 自动特征选择
  • Lecture 11
  • Week13 Section1
  • Week14 Section1
  • Week14 Section2
  • 第11讲 模型评估与优化 [Notebook]
  • [源代码]
  • 1. 五种交叉验证法简介
  • 2. 网格搜索模型
  • 3. 分类模型评估
  • Discussion Section 3
  • Week13 Section2
  • Lecture 12
  • Week15 Section1
  • Week15 Section2
  • 第12讲 建立算法的管道模型 [Notebook]
  • 1. 管道模型的基本概念
  • 2. 管道模型的优点
  • 3. 管道模型案例——股票涨跌分析
  • 第14讲 从数据获取到话题提取 [Notebook]
  • Exams
  • Week16
  • 期末测验一:理论部分
  • 期末测验二:实验部分

实训进度计划表

Event Type Date Description Course Materials
  • 项目一:鸢尾花识别
  • Day01
  • 【实训目的】
  • 1. 学会在Baidu AI Studio(http://aistudio.baidu.com/)上创建项目,并加入课程
  • 2. 学会Jupyter Notebook的基本使用方法,包括基本的Markdown Cell和Code Cell的创建和编辑
  • 3. 学会使用函数编程法完成所有代码的编写
  • 4. 学会使用机器学习算法完成鸢尾花识别任务
  • 【实训任务】
  • 1. 构建一个模型,根据鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度,使用训练集对鸢尾花进行建模
  • 2. 对模型进行评分,输出测试集的精度
  • 3. 使用模型将一朵鸢尾花分为三种不同的品种
  • 4. 完善给出的代码
  • 5. 将完整的代码和运行结果在AIStudio平台进行提交
  • 项目二:手写数字识别
  • Day02 ~ Day05
  • 【实训目的】
  • 1. 进一步Baidu AI Studio平台
  • 2. 熟练使用Jupyter Notebook的基本使用方法,包括基本的Markdown Cell和Code Cell的创建和编辑
  • 3. 熟练使用函数化编程方法,并学会如何对函数进行基本的调试
  • 4. 学会使用机器学习算法完成手写字体的识别
  • 5. 学会从指定文件夹中读取图片,并将处理好的图片保存到指定文件夹中
  • 6. 学会将训练好的模型保存到指定文件夹
  • 7. 学会载入保存在指定文件夹中的模型,并能够利用载入的模型对样本进行预测
  • 【实训任务】
  • 1. 构建一个模型(使用20%的样本),根据0~9的数字的像素特征进行建模
  • 2. 对模型进行评分,输出测试集(10000副测试图片)的精度(任务一)
  • 3. 使用模型对保存到文件夹中图片进行预测(任务二)
  • 4. 完善所有代码,同时进一步完善Notebook,将其输出为《实训报告正文》
  • 5. 将完整的代码和运行结果在AIStudio平台进行提交