课程目标
了解这门课程为何对数据科学学习者独具特色。
数据科学中的线性代数
从数学角度来看,线性代数、概率论、统计学和优化构成了数据科学的基础。即使在高级的数据科学模型(如神经网络)中,输入和变换也基于向量、矩阵和张量。这意味着,对线性代数有基本的理解是每一位数据科学家的必备技能。线性代数是数据科学的核心支柱,也是应用最广泛的数学分支之一。幸运的是,对于数据科学家而言,它还具有优雅的美感,使得学习和应用过程既愉快又富有成就感。
本课程的关键特点
本课程相较于同类课程具有多项优势。
可视化
本课程配备了多种生动的图示,包括静态图像和动态动画。每幅图示的内容都经过精心设计,以清晰传达其背后的数学概念。除少数例外,所有图示均通过 Python 工具包(如 manim)制作,这类工具正被越来越多的数学界人士采用。
No configuration found for ID: 3a2c5bcbf162c703dddc7759975e389bd402de49a1cc83bec59b1569f3bc61db
No configuration found for ID: f92cbb6926552c10349a8f1e72d044b52ae12d0e9ecbe56511c8034fb291e62f
No configuration found for ID: 98a4e4c4e9c81ce4a36de2e3dab1af60579fc237b08e2b4b32195ff6798420b9
编程实践
大多数数据科学课程通常分为两个看似割裂的方向:纯数学或纯编程。在数学导向的课程中,编程部分往往不是重点,这使得初学者难以将其与实际应用联系起来;而在编程导向的课程中,重点通常放在数据科学框架上,却常常忽略了模型核心原理的深入讲解。
我们认为,通过编程来理解数学更加高效且更具实用性。因此,本课程致力于弥合这两种教学范式之间的差距,通过编程实现数学建模。此外,我们选择 Python 作为教学语言——这是当前数据科学领域最主流的编程语言。
1def getStats(mat): 2 rref, inds = Matrix(mat).rref() 3 numPivots = len(inds) if len(inds) < mat.shape[1] else len(inds)-1 4 numFree = mat.shape[1]-numPivots-1 5 return np.array(rref), numPivots, numFree
基于真实数据的项目
本课程包含多个基于真实数据集的小型项目。项目代码可直接运行,并易于扩展。
本课程的最终项目是使用近期发表的线性代数技术进行人脸识别。
先修要求
只需具备 Python 中 numpy 库的基本使用能力即可学习本课程。
目标受众
本课程适合以下人群:
- 希望以通俗易懂且实用的方式学习数据科学数学知识的人;
- 热爱编程但对数学感到畏惧的人;
- 有意投身数据科学领域的人。
学习成果
完成本课程后,你将能够:
- 掌握线性代数中最核心且最具应用价值的部分;
- 熟悉
numpy中linalg模块的使用方法; - 能够理解并拓展数据科学模型;
- 具备解决真实世界数据科学问题的能力。