酷玛DS - 2020年8月
type: channel
link: https://www.culmart.com/ds/2020/08/
description: 酷玛实验室数据科学和人工智能
items: 斯坦福大学人工智能本科4年课程清单
items: 数据科学家如何选择 Python 的 IDE

斯坦福大学人工智能本科4年课程清单
type: item
date: 2020-08-18T15:05:09+08:00
description: 这些课程旨在为人工智能和计算机科学领域的新人们提供广度与深度并重的知识。第1学年：构建你的学业基础在人工智能学位学习的第1年，你应该聚焦于学习那些构成计算机科学和现代机器学习基础的核心概念。此处，我假设你完全没有计算机科学先修经历，所以，这一年的主要精力应该花在学习软件和算法基础上，在你的整个学位学习阶段和职业生涯中都将会需要这些基础知识。你应该聚焦的课程包括：程序设计基础（Programming Fundamentals）：介绍面向对象程序设计及数据结构（集合、图等）。人工智能从业者需要有扎实的软件工程技能。相关课程代码：CS 106B。计算机系统导论（Introduction to Computer Systems）：讲授从低层来角度来看计算机科学系统是如何设计和构成的。其中，重点在于学习软件编译过程，当你运行程序时会发生什么，在内存中程序是如何组织的等。相关课程代码：CS 107。算法（Algorithms）：涵盖广泛使用的计算机科学算法后面的数学和理论，比如广度优先遍历、动态规划，以及如何分析那些算法的内存和运行时特点。相关课程代码：CS 161。概率论（Probability Theory）：概率统计是许多机器学习算法的核心， 学习如何解释和分析数据对于任何机器学习或大数据科学的领域来说 ，都是至关重要的。相关课程代码：CS 109。线性代数（Linear Algebra）：涵盖如何运用矩阵和向量，解线性方程，应用最小二乘法。这些数学基础知识在机器学习领域都被广泛使用。相关课程代码：EE 103。多维微积分（Multi-dimensional Calculus）：你应该能轻松地解得函数梯度，因为这是诸如反向传播算法之类的现代深度学习主力算法的核心技术。相关课程代码：工程向量微积分。第二年：探索领域，开发系统知识 人工智能本科二年级学生的重点应该是让自己了解人工智能的一般原理，已经解决的问题是什么以及是如何解决的。此外，你应该继续理解与模型构建相关的计算机系统，并实践软件工程和设计原则。为此，建议学习以下课程：人工智能导论（Introduction to Artificial Intelligence）：涵盖了不同的人工智能领域的广泛概述，如搜索、游戏、逻辑、图形模型、机器学习和这些算法的应用。这样的课程应该为从符号逻辑到统计技术等方法的思想演变提供历史背景。相关课程：CS 221。编译器（Compilers）：涵盖编译器背后的设计和理论，理想情况下强调从头构建一个完整的编译器。编译器是你编写的每一个程序的核心，即使对人工智能从业者来说，理解它们的工作原理也是很重要的，这样你才能成为有能力的工程师。这样的课程将让你很好地接触到如何构建一个复杂的软件系统，着重于模块化的、经过文档化和测试的、架构良好的组件。除此之外，如果你对追求应用于语言理解的人工智能感兴趣，编译器的设计和传统自然语言处理堆栈之间的相似之处是不可思议的。相关课程：CS 143。数据库导论（Introduction to Databases）：涵盖数据库管理系统背后的原理，重点诸如关系数据模型、索引、模式和事务等部分。任何现代数据科学家或机器学习工程师都必须在某种程度上与数据库交互，因此了解它们的组织架构方式至关重要。相关课程：CS 145。并行计算（Parallel Computing）：并行计算平台构成了当今许多平台和技术的核心，从 Apache Spark 到 GPU 等硬件。有关并行计算的课程应该介绍这些系统背后的思想，以便你更熟练地有效地使用它们。相关课程：CS 149。操作系统（Operating Systems）：如果你想真正擅长系统编程，成为一个更熟练的工程师，那就去上一门操作系统课程，在这门课程中，你必须从头开始构建一个操作系统。您不仅将学习如何设计操作系统，还将学习如何成为一名精通Debug代码的程序员。在未来的人工智能职业中，这些基本技能将是无价的。相关课程：CS 140。第三年：进阶课程深度挖掘在第三年，你应该专注于深入学习机器学习以及统计原理的特定领域应用，包括自然语言处理、大数据分析和计算机视觉。以下是一些推荐的课程：机器学习（Machine Learning）：涵盖机器学习的原则，包括监督和非监督学习和模型训练概念，如偏方差权衡、正则化和模型选择。一定要学习这些理论并把它们学好，因为人工智能从业者每天都在使用它们。相关课程：CS 229。凸优化（Convex Optimization）：涵盖解决凸优化问题背后的思想与应用到统计、机器学习、信号处理和其他领域。虽然现在许多模型使用非凸目标，但这有助于理解可处理优化问题背后的形式。相关课程：EE 364A。概率图形模型（Probabilistic Graphical Models）…

数据科学家如何选择 Python 的 IDE
type: item
date: 2020-08-07T12:13:00+08:00
description: 《数据科学家如何选择 Python 的 IDE》是一篇2018年的文章，提到 Spyder 是 python 做科学计算的最佳 IDE，visual studio 已经变成了 R 语言在 windows 平台上最完美的 IDE，可作参考。以下节选主要内容：对于一个做数据分析计算的人来说，他的 IDE 最好能提供以下核心功能（按重要性排序）：强大的交互性查看 dataframeqtconsole目前数据科学领域的编程语言主要是以下几种（按使用人数大致排序）：RPythonmatlab/octaveJulia在这些语言中，Python 通用性最强，所以在 Python 社区里码农们的声音比较大，利用 Python 做计算的新手很容易被程序员们带偏，所以本文主要讨论 Python 的 IDE。考察的IDEpycharmRodeoSpyderjupyter notebookpycharmpycharm 并不适合所有人，至少在推出 scientific mode（科学模式）之前，pycharm 在科学计算领域根本没有 spyder 方便。但尽管有了新版，由于其是庞大的商业软件，且冷启动慢和占用内存比较大，并不适合新手及小项目。RodeoRodeo 是一个轻量级的简陋 IDE，唯一亮点在于它可以查看 dataframe。Spyderspyder 在所有针对科学计算的 IDE 里第一个使用 qtconsole，它也是第一个可以以表格形式查看 numpy 和 pandas 对象的 python IDE。方便和强大的交互特性，使其成为 python 做科学计算的最佳 IDE。jupyter notebook不建议把 jupyter notebook 作为主力开发工具，因为这容易让人养成两个坏习惯：一是每写一行代码就要运行一下然后跳到下一个 cell，导致驾驭长代码的能力越来越差；二是把所有代码放在一个文件里，不利于养成模块化和工程化的编程习惯。jupyter notebook 作为展示工具和交互工具都是很好用的，适合用来做展示或撰写报告。例外：visual studioR 语言只有一个专用 IDE——Rstudio，但是最近发现 visual studio 里面加入了针对 R 语言的数据科学模式（由 RTVS 提供），有单独的绘图 pane 与变量查看功能，默认的 layout 类似于 Rstudio，但是可以更加自由地定制。和 Rstudio 相比，visual studio 里的数据科学模式最令人眼前一亮的特点是它和 excel 的完美互动。在 Rstudio 中，要查看一个 datafarme，通常的做法是在变量列表里双击变量的名字，在 Rstudio 里以表格的形式将它打开；现在在 visual studio 中你不仅可以做到这件事，还可以在变量列表中的某个变量名右边直接点击"在excel中打开"这个选项，直接在 excel 中打开这个变量。除此之外，visual studio 作为宇宙第一 IDE，在项目资源管理、版本管理等方面都是非常方便的，这些功能在 Rtudio 里面基本没有。可以说，自从提供了数据科学模式，visual studio 已经变成了 R 语言在 windows 平台上最完美的 IDE。最后给 R IDE 一个排名Visual StudioEmacsRstudioVSCode其他IDE相关文章2019年PYPL榜单发布，编程语言、IDE与数据库市场如何？编程界十大顶级IDE延伸阅读这篇关于数据科学开发环境设置的文章（The Definitive Data Scientist Environment Setup）详细介绍如何在自己的计算机上，安装各种软件，设置一个数据科学环境。主要观点是：A NVIDIA GPU of at least 4GB of RAM.Avoid Apple MacBooks.Ubuntu LTS.Python.Miniconda.Jupyter.PyCharm.既是推荐WinPython 是一个免费的、开源的、可移植的Python编程语言的发行版，适用于科学和教育用途。Anaconda 是一个适用于科学计算的 Python 集成开发环境。JupyterLab 是广受欢迎的 Jupyter Notebook新界面，允许在基于单元格的组织中逐步可视化数据。