机器学习是一个很模糊且宽泛的话题,关于它的书籍、博客、视频课程也是非常多的,我认为如果希望做一些宏观的了解,看一些网上的文章就行。如果希望深入学习,个人建议还是系统的看看相关的书籍、视频课程,然后尽量动手实现一下,因为当你动手实现的时候你会对它的理解更加深刻。

机器学习可以从两个方向说起:学习演算法和应用领域,如果把应用领域也囊括在内的话,那包含的学习内容就太多了,

  • 数据挖掘
  • 计算机视觉
  • 自然语言处理
  • 搜索引擎
  • ......

以上每个应用领域都能找到很多相关的书籍或者课程,因此就没必要把它们全部罗列出来了。

单从学习演算法来说,它可以分为如下几个种类:

  • 监督学习
  • 无监督学习
  • 半监督学习
  • 增强学习

按研究阶段和研究内容综合来划分又可以这样进行分类:

  • 传统机器学习(后面称机器学习)
  • 深度学习

我就从以上这3个方向开始 介绍一下相关的优质学习资源。

机器学习

视频课程

《机器学习》-吴恩达

机器学习(Machine Learning)- 吴恩达(Andrew Ng)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili?

www.bilibili.com图标

提及机器学习,入门课程当然少不了吴恩达的入门经典课程《机器学习》,虽然目前关于机器学习的教程层出不穷,但是绝大多数都是各教育机构为分取蛋糕而创作出的产物,难免良莠不齐,内容不严谨,所以尽管老掉牙,我还是会首推吴恩达的这门《机器学习课程》,

《机器学习与神经网路》-Geoffrey Hinton

Hinton机器学习与神经网路中文课程 - 网易云课堂?

study.163.com

图灵奖得主、人工智慧领域三位顶尖大牛之一,我想从事AI领域的应该对Hinton都不陌生,从他的文章中就可以看的出来,非常有深度,严谨,他的这门课程也保持了一贯作风。但是,这门课也有一个问题,就是语速相对较快,一遍要跟著理解英语,一遍要去理解他所阐述的知识,我觉得这还是一件挺吃力的事情。

《机器学习》-李宏毅

李宏毅机器学习2019(国语)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili?

www.bilibili.com图标

我觉得对于英语水平有限的同学来说看一门英文的课程还是很吃力的,比如我,每当涉及到英语都会觉得头疼。如果你也一样,可以选择看一下李宏毅的《机器学习》,这门课也是一门机器学习的入门经典,目前已经更新到2019版,不仅内容详细,而且授课语言轻松风趣。

书籍

《机器学习》-周志华

这本书很适合机器学习入门,没有过多的公式推导,也没有晦涩难懂的辞汇,理论与示例相结合,阐述非常详细。

机器学习京东¥ 61.60去购买?

《统计学习方法》-李航

和周志华老师的机器学习不同,《统计学习方法》这本书籍有更多的公式推导和理论证明,可以这样概括两者的区别:《机器学习》更偏重于演算法原理,让你知道每个演算法怎么实现的,步骤是什么。《统计学习方法》会深扒原理背后的理论支撑,这样有助于更加深入的理解机器学习演算法,对后续深入研究会有很多好处,当然,随之而来的就是对于初学者看著满篇的公式也会让人觉得很头疼。

统计学习方法(第2版)京东¥ 83.30去购买?

《机器学习实战》- Peter Harrington

就如同这本书的名称一样,它更加突出实战,它不过多的讨论演算法的原理和优缺点,简单的介绍一下演算法的流程步骤,然后接下来更多的篇幅就是围绕实战展开,会给出一个示例,然后逐步编程实现,这样有助于让自己发现学习理论过程中容易忽略的点,进一步加深对机器学习的理解,我认为这本书还是很有必要看一下的,毕竟仅仅学习理论知识难免会落入「纸上谈兵」的困境,实践才能出真知。

我个人建议可以用《机器学习》+《机器学习实战》的组合进行学习,《统计学习方法》可以在学习一段时间机器学习之后,希望更加深入了解机器学习时抽空好好看一下,推导一下里面的公式。

机器学习实战 [美] Peter Harrington京东¥ 50.80去购买?

总结

以上课程和书籍都有一个共性,就是直接从神经网路、感知机、贝叶斯、KNN这些机器学习演算法开始讲起,而机器学习是一门交叉学科,它涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。如果希望在机器学习领域做更加深入的研究,我认为还需要把这些相关的知识学习一下。当然,如果日常工作是强业务类型,更加偏重于机器学习的应用而不是偏重模型调优,我觉得上述这些课程和书籍已经够用了。

深度学习

视频课程

  • 斯坦福CS20:http://web.stanford.edu/class/cs20si/index.html
  • 吴恩达深度学习工程师:https://mooc.study.163.com/smartSpec/detail/1001319001.htm
  • 卡耐基梅隆大学深度学习导论:https://www.bilibili.com/video/av34151455/
  • 李宏毅深度学习:https://www.bilibili.com/video/av9770302/

书籍

  • 《深度学习》-Goodfellow、Bengio

深度学习京东¥ 112.60去购买?

  • 《Python深度学习》-弗朗索瓦·肖莱

Python深度学习京东¥ 94.00去购买?

  • 《深度学习入门》-斋藤康毅

深度学习入门京东¥ 46.60去购买?


作品精选

Jackpop:目录 | 精选CV、Python等系列教程

Jackpop:大数据处理 | SparkHDFS集群配置及基本使用

Jackpop:实用工具 | 推荐3款令人惊艳的截图工具

Jackpop:强烈推荐 | 这将会成为一个优质的github项目

Jackpop:C盘快满了,该如何清理?

Jackpop:学习pytorch该怎么提高自己的代码能力?

Jackpop:2019 年双十一有哪些值得购买的东西?


阿贝尔说过一句话「如果一个人想要在数学上有所进展,那你应该去读大师的作品,而不是读他的门徒的作品」。

现在网路上的相关的资料是在是太多了,质量参差不齐,这里结合我自己的经验回答一下。

首先还是强烈推荐吴恩达老师的机器学习公开课,配合 @黄海广 博士组织整理的笔记一起学习效果更佳

https://www.coursera.org/learn/machine-learning?

www.coursera.org

但是这门课总体而言是比较偏理论的,而且课后的作业都是matlab编写的,很可能你学完了感觉知道机器学习是什么,但是不知道能用它做什么,或者怎么解决实际问题。

这个时候就要推荐另外一门课程就是华盛顿大学的Carlos Guestrin和Emily Fox的

https://www.coursera.org/specializations/machine-learning?

www.coursera.org

两位都是华盛顿大学的教授,其中Carlos Guestrin是陈天奇大佬在华盛顿大学读博时的导师。

这门课程比较偏向于实操,通过使用numpy,sklearn,pandas,graphlab(一个高性能分散式机器学习框架)等常用的机器学习工具包教你如果利用他们解决实际的问题,涉及到的演算法包括分类,回归,聚类等,同时对于每个演算法也会进行原理的推导基于numpy的实现

比较遗憾的是这门课程原先计划是一个系列6门课,后来由于Carlos Guestrin被苹果挖走了,所以后面2门课至今没有录制完成。

9102年,光会机器学习,lr,svm,xgboost,lightgbm这些还是远远不够的这时候吴恩达大大又出来拯救我们了。他又开了一门深度学习的课程,

https://www.coursera.org/specializations/deep-learning?

www.coursera.org

在这门课中可以了解到神经网路工作的基本原理以及优化方法,如何调参,如果防止过拟合等,以及如何使用tensorflow来解决cv和nlp中的一些问题。

剩下的就多看paper多实践吧~


以下内容来自GIthub的项目《机器学习资源大全中文版》

希望能帮到想要学习 【机器学习】的小伙伴们!!!

C++计算机视觉

  • CCV:基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库。官网
  • OpenCV:它提供C++、C、Python、Java 以及 MATLAB介面。并支持Windows、Linux、Android 和 Mac OS操作系统。官网

通用机器学习

  • MLPack:官网。
  • DLib:官网。
  • ecogg:官网。
  • shark:官网。

Clojure通用机器学习

  • Clojure Toolbox:Clojure语言库与工具的分类目录。官网

Go自然语言处理

  • go-porterstemmer:一个Porter词干提取演算法的原生Go语言净室实现。官网
  • paicehusk:Paice/Husk词干提取演算法的Go语言实现。官网
  • snowball:Go语言版的Snowball词干提取器。官网

通用机器学习

  • Go Learn:Go语言机器学习库。官网
  • go-pr:Go语言机器学习包。官网
  • bayesian:Go语言朴素贝叶斯分类库。官网
  • go-galib:Go语言遗传演算法库。官网

数据分析/数据可视化

  • go-graph:Go语言图形库。官网
  • SVGo:Go语言的SVG生成库。官网

Java自然语言处理

  • CoreNLP:斯坦福大学的CoreNLP提供一系列的自然语言处理工具,输入原始英语文本,可以给出单词的基本形式(下面Stanford开头的几个工具都包含其中)。官网
  • Stanford Parser:一个自然语言解析器。官网
  • Stanford POS Tagger:一个词性分类器。官网
  • Stanford Name Entity Recognizer:Java实现的名称识别器。官网
  • Stanford Word Segmenter:分词器,很多NLP工作中都要用到的标准预处理步骤。官网。
  • Tregex、Tsurgeon与Semgrex:用来在树状数据结构中进行模式匹配,基于树关系以及节点匹配的正则表达式(名字是「tree regular expressions"的缩写)官网
  • Stanford Phrasal:最新的基于统计短语的机器翻译系统,java编写。官网
  • Stanford Tokens Regex:用以定义文本模式的框架。官网
  • Stanford Temporal Tagger:SUTime是一个识别并标准化时间表达式的库。官网
  • Stanford SPIED:在种子集上使用模式,以迭代方式从无标签文本中学习字元实体。官网。
  • Stanford Topic Modeling Toolbox:为社会科学家及其他希望分析数据集的人员提供的主题建模工具。官网
  • Twitter Text Java:Java实现的推特文本处理库。官网
  • MALLET:基于Java的统计自然语言处理、文档分类、聚类、主题建模、信息提取以及其他机器学习文本应用包。官网
  • OpenNLP:处理自然语言文本的机器学习工具包。官网
  • LingPipe:使用计算机语言学处理文本的工具包。官网

通用机器学习

  • MLlib in Apache Spark:Spark中的分散式机器学习程序库。官网
  • Mahout:分散式的机器学习库。官网
  • Stanford Classifier:斯坦福大学的分类器。官网
  • Weka:Weka是数据挖掘方面的机器学习演算法集。官网
  • ORYX:提供一个简单的大规模实时机器学习/预测分析基础架构。官网

数据分析/数据可视化

  • Hadoop:大数据分析平台。官网
  • Spark:快速通用的大规模数据处理引擎。官网
  • Impala:为Hadoop实现实时查询。官网

Javascript自然语言处理

  • Twitter-text-js:JavaScript实现的推特文本处理库。官网
  • NLP.js:javascript及coffeescript编写的NLP工具。官网
  • natural:Node下的通用NLP工具。官网
  • Knwl.js:JS编写的自然语言处理器。官网

数据分析/数据可视化

  • D3.js:官网。
  • High Charts:官网。
  • NVD3.js:官网。
  • dc.js:官网。
  • chartjs:官网。
  • dimple:官网。
  • amCharts:官网。

通用机器学习

  • Convnet.js:训练深度学习模型的JavaScript库。官网
  • Clustering.js:用JavaScript实现的聚类演算法,供Node.js及浏览器使用。官网
  • Decision Trees:Node.js实现的决策树,使用ID3演算法。官网
  • Node-fann:Node.js下的快速人工神经网路库。官网
  • Kmeans.js:k-means演算法的简单Javascript实现,供Node.js及浏览器使用。官网
  • LDA.js:供Node.js用的LDA主题建模工具。官网
  • Learning.js:逻辑回归/c4.5决策树的JavaScript实现。官网
  • Machine Learning:Node.js的机器学习库。官网
  • Node-SVM:Node.js的支持向量机。官网
  • Brain:JavaScript实现的神经网路。官网
  • Bayesian-Bandit:贝叶斯强盗演算法的实现,供Node.js及浏览器使用。官网

Julia

通用机器学习

  • PGM:Julia实现的概率图模型框架。官网
  • DA:Julia实现的正则化判别分析包。官网
  • Regression:回归分析演算法包(如线性回归和逻辑回归)。官网
  • Local Regression:局部回归,非常平滑!。官网
  • Naive Bayes:朴素贝叶斯的简单Julia实现。官网
  • Mixed Models:(统计)混合效应模型的Julia包。官网
  • Simple MCMC:Julia实现的基本mcmc采样器。官网。
  • Distance:Julia实现的距离评估模块。官网
  • Decision Tree:决策树分类器及回归分析器。官网
  • Neural:Julia实现的神经网路。官网
  • MCMC:Julia下的MCMC工具。官网
  • GLM:Julia写的广义线性模型包。官网
  • Online Learning:官网
  • GLMNet:GMLNet的Julia包装版,适合套索/弹性网模型。官网
  • Clustering:k-means, dp-means等数据聚类的基本函数。官网
  • SVM:Julia下的支持向量机。官网
  • Kernal Density:Julia下的核密度估计器。官网
  • Dimensionality Reduction:降维演算法。官网
  • NMF:Julia下的非负矩阵分解包。官网
  • ANN:Julia实现的神经网路。官网

自然语言处理

  • Topic Models:Julia下的主题建模。官网
  • Text Analysis:Julia下的文本分析包。官网

数据分析/数据可视化

  • Graph Layout:纯Julia实现的图布局演算法。官网
  • Data Frames Meta:DataFrames的元编程工具。官网
  • Julia Data:处理表格数据的Julia库。官网
  • Data Read:从Stata、SAS、SPSS读取文件。官网
  • Hypothesis Tests:Julia中的假设检验包。官网
  • Gladfly:Julia编写的灵巧的统计绘图系统。官网
  • Stats:Julia编写的统计测试函数包。官网
  • RDataSets:读取R语言中众多可用的数据集的Julia函数包。官网
  • DataFrames:处理表格数据的Julia库。官网
  • Distributions:概率分布及相关函数的Julia包。官网
  • Data Arrays:元素值可以为空的数据结构。官网
  • Time Series:Julia的时间序列数据工具包。官网
  • Sampling:Julia的基本采样演算法包。官网

杂项/演示文稿

  • DSP:数字信号处理。官网
  • JuliaCon Presentations:Julia大会上的演示文稿。官网
  • SignalProcessing:Julia的信号处理工具。官网
  • Images:Julia的图片库。官网

Lua通用机器学习

  • Torch7。
    • cephes:—Cephes数学函数库,包装成Torch可用形式提供并包装了超过180个特殊的数学函数,由Stephen L. Moshier开发,是SciPy的核心,应用于很多场合。官网
    • graph:供Torch使用的图形包。官网
    • randomkit:从Numpy提取的随机数生成包,包装成Torch可用形式。官网
    • signal:Torch-7可用的信号处理工具包,可进行FFT, DCT, Hilbert, cepstrums, stft等变换。官网
    • nn:Torch可用的神经网路包。官网
    • nngraph:为nn库提供图形计算能力。官网
    • nnx:一个不稳定实验性的包,扩展Torch内置的nn库。官网
    • optim:Torch可用的优化演算法库,包括 SGD, Adagrad, 共轭梯度演算法, LBFGS, RProp等演算法。官网
    • unsup:Torch下的非监督学习包提供的模块与nn(LinearPsd、ConvPsd、AutoEncoder、...)及独立演算法(k-means、PCA)等兼容。官网
    • manifold:操作流形的包。官网
    • svm:Torch的支持向量机库。官网
    • lbfgs:将liblbfgs包装为FFI介面。官网
    • vowpalwabbit:老版的vowpalwabbit对torch的介面。官网
    • OpenGM:OpenGM是C++编写的图形建模及推断库,该binding可以用Lua以简单的方式描述图形,然后用OpenGM优化。官网。
    • sphagetti:MichaelMathieu为torch7编写的稀疏线性模块。官网
    • LuaSHKit:将局部敏感哈希库SHKit包装成lua可用形式。官网
    • kernel smoothing:KNN、核权平均以及局部线性回归平滑器。官网
    • cutorch:torch的CUDA后端实现。官网
    • cunn:torch的CUDA神经网路实现。官网
    • imgraph:torch的图像/图形库,提供从图像创建图形、分割、建立树、又转化回图像的常式。官网
    • videograph:torch的视频/图形库,提供从视频创建图形、分割、建立树、又转化回视频的常式。官网
    • saliency:积分图像的代码和工具,用来从快速积分直方图中寻找兴趣点。官网
    • stitch:使用hugin拼合图像并将其生成视频序列。官网
    • sfm:运动场景束调整/结构包。官网
    • fex:torch的特征提取包,提供SIFT和dSIFT模块。官网
    • OverFeat:当前最高水准的通用密度特征提取器。官网
  • Numeric Lua:官网。
  • Lunatic Python:官网。
  • SciLua:官网。
  • Lua - Numerical Algorithms:官网。
  • Lunum:官网。

演示及脚本

  • Core torch7 demos repository:核心torch7演示程序库。官网
    • 线性回归、逻辑回归
    • 人脸检测(训练和检测是独立的演示)
    • 基于mst的断词器
    • train-a-digit-classifier
    • train-autoencoder
    • optical flow demo
    • train-on-housenumbers
    • train-on-cifar
    • tracking with deep nets
    • kinect demo
    • 滤波可视化
    • saliency-networks
  • Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo):官网
  • Music Tagging:torch7下的音乐标签脚本。官网
  • torch-datasets:官网 读取几个流行的数据集的脚本,包括
    • BSR 500
    • CIFAR-10
    • COIL
    • Street View House Numbers
    • MNIST
    • NORB
  • Atari2600:在Arcade Learning Environment模拟器中用静态帧生成数据集的脚本。官网

Matlab计算机视觉

  • Contourlets:实现轮廓波变换及其使用函数的MATLAB源代码。官网 。
  • Shearlets:剪切波变换的MATLAB源码。官网
  • Curvelets:Curvelet变换的MATLAB源码(Curvelet变换是对小波变换向更高维的推广,用来在不同尺度角度表示图像)。官网
  • Bandlets:Bandlets变换的MATLAB源码。官网

自然语言处理

  • NLP:一个Matlab的NLP库。官网

通用机器学习

  • Training a deep autoencoder or a classifier on MNIST digits:在MNIST字元数据集上训练一个深度的autoencoder或分类器。官网
  • t-Distributed Stochastic Neighbor Embedding:获奖的降维技术,特别适合于高维数据集的可视化。官网
  • Spider:Matlab机器学习的完整面向对象环境。官网
  • LibSVM:支持向量机程序库。官网
  • LibLinear:大型线性分类程序库。官网
  • Machine Learning Module:M. A .Girolami教授的机器学习课程,包括PDF、讲义及代码。官网
  • Caffe:考虑了代码清洁、可读性及速度的深度学习框架。官网
  • Pattern Recognition Toolbox:Matlab中的模式识别工具包、完全面向对象。官网

数据分析/数据可视化

  • matlab_gbl:处理图像的Matlab包。官网
  • gamic:图像演算法纯Matlab高效实现,对MatlabBGL的mex函数是个补充。官网

.NET计算机视觉

  • OpenCVDotNet:包装器,使.NET程序能使用OpenCV代码。官网
  • Emgu CV:跨平台的包装器,能在Windows、Linus、Mac OS X、iOS和Android上编译。官网

自然语言处理

  • Stanford.NLP for .NET:斯坦福大学NLP包在.NET上的完全移植,还可作为NuGet包进行预编译。官网 。

通用机器学习

  • Accord.MachineLearning:随机抽样一致性演算法、交叉验证、网格搜索这个包是http://Accord.NET框架的一部分支持向量机、决策树、朴素贝叶斯模。型、K-means、高斯混合模型和机器学习应用的通用演算法。官网:
  • Vulpes:F#语言实现的Deep belief和深度学习包,它在Alea.cuBase下利用CUDA GPU来执行。官网
  • Encog:先进的神经网路和机器学习框架,包括用来创建多种网路的类,也支。持神经网路需要的数据规则化及处理的类它的训练采用多线程弹性传播。它也能使用GPU加快处理时间提供了图形化界面来帮助建模和训练神经网路。官网
  • Neural Network Designer:这是一个资料库管理系统和神经网路设计器设计器用WPF开发,也是一个UI,你可以设计你的神经网路、查询网路、创建并配置聊天机器人,它能问问题,并从你的反馈中学习这些机器人甚至可以从网路搜集信息用来输出,或是用来学习。官网

数据分析/数据可视化

  • numl:numl这个机器学习库,目标就是简化预测和聚类的标准建模技术。官网
  • http://Math.NET Numerics:http://Math.NET项目的数值计算基础,著眼提供科学、工程以及日常数值计算的方法和演算法支持 Windows、Linux 和 。Mac上的 .Net 4.0、.Net 3.5 和 Mono ,Silverlight 5、WindowsPhone/SL 8、WindowsPhone 8.1 以及装有 PCL Portable Profiles 47 及 344的Windows 8, 装有 Xamarin的Android/iOS。官网
  • Sho:Sho是数据分析和科学计算的互动式环境,可以让你将脚本(IronPython语言)和编译的代码(.NET)无缝连接,以快速灵活的建立原型。官网这个环境包括强大高效的库,如线性代数、数据可视化,可供任何.NET语言使用,还为快速开发提供了功能丰富的互动式shell

Python

计算机视觉

  • SimpleCV:开源计算机视觉框架,可以访问如OpenCV等高性能计算机视觉库使用Python编写,可以在Mac、Windows以及Ubuntu上运行。官网。

自然语言处理

  • NLTK:一个领先的平台,用来编写处理人类语言数据的Python程序。官网
  • Pattern:Python可用的web挖掘模块,包括自然语言处理、机器学习等工具。官网
  • TextBlob:为普通自然语言处理任务提供一致的API,以NLTK和Pattern为基础,并和两者都能很好兼容。官网。
  • jieba:中文断词工具。官网
  • SnowNLP:中文文本处理库。官网
  • loso:另一个中文断词库。官网
  • genius:基于条件随机域的中文断词库。官网
  • nut:自然语言理解工具包。官网

通用机器学习

  • Bayesian Methods for Hackers:Python语言概率规划的电子书。官网
  • MLlib in Apache Spark:Spark下的分散式机器学习库。官网
  • scikit-learn:基于SciPy的机器学习模块。官网
  • graphlab-create:包含多种机器学习模块的库(回归、聚类、推荐系统、图分析等),基于可以磁碟存储的DataFrame。官网
  • BigML:连接外部伺服器的库。官网
  • pattern:Python的web挖掘模块。官网
  • NuPIC:Numenta公司的智能计算平台。官网
  • Pylearn2:基于Theano的机器学习库。官网
  • hebel:Python编写的使用GPU加速的深度学习库。官网
  • gensim:主题建模工具。官网
  • PyBrain:另一个机器学习库。官网
  • Crab:可扩展的、快速推荐引擎。官网
  • python-recsys:Python实现的推荐系统。官网
  • thinking bayes:关于贝叶斯分析的书籍。官网
  • Restricted Boltzmann Machines:Python实现的受限波尔兹曼机。官网
  • Bolt:在线学习工具箱。官网
  • CoverTree:cover tree的Python实现,scipy.spatial.kdtree便捷的替代。官网
  • nilearn:Python实现的神经影像学机器学习库。官网
  • Shogun:机器学习工具箱。官网
  • Pyevolve:遗传演算法框架。官网
  • Caffe:考虑了代码清洁、可读性及速度的深度学习框架。官网
  • breze:深度及递归神经网路的程序库,基于Theano。官网

数据分析/数据可视化

  • SciPy:基于Python的数学、科学、工程开源软体生态系统。官网
  • NumPy:Python科学计算基础包。官网
  • Numba:Python的低级虚拟机JIT编译器,Cython and NumPy的开发者编写,供科学计算使用。官网
  • NetworkX:为复杂网路使用的高效软体。官网
  • Pandas:这个库提供了高性能、易用的数据结构及数据分析工具。官网
  • Open Mining:Python中的商业智能工具(Pandas web介面)。官网
  • PyMC:MCMC采样工具包。官网
  • zipline:Python的演算法交易库。官网
  • PyDy:全名Python Dynamics,协助基于NumPy、SciPy、IPython以及 matplotlib的动态建模工作流。官网
  • SymPy:符号数学Python库。官网
  • statsmodels:Python的统计建模及计量经济学库。官网
  • astropy:Python天文学程序库,社区协作编写。官网
  • matplotlib:Python的2D绘图库。官网
  • bokeh:Python的互动式Web绘图库。官网
  • plotly:Python and matplotlib的协作web绘图库。官网
  • vincent:将Python数据结构转换为Vega可视化语法。官网
  • d3py:Python的绘图库,基于D3.js。官网
  • ggplot:和R语言里的ggplot2提供同样的API。官网
  • Kartograph.py:Python中渲染SVG图的库,效果漂亮。官网
  • pygal:Python下的SVG图表生成器。官网
  • pycascading:官网

杂项脚本/iPython笔记/代码库

  • pattern_classification:官网
  • thinking stats 2:官网
  • hyperopt:官网
  • numpic:官网
  • 2012-paper-diginorm:官网
  • ipython-notebooks:官网
  • decision-weights:官网
  • Sarah Palin LDA:Sarah Palin关于主题建模的电邮。官网
  • Diffusion Segmentation:基于扩散方法的图像分割演算法集合。官网
  • Scipy Tutorials:SciPy教程,已过时,请查看scipy-lecture-notes。官网
  • Crab:Python的推荐引擎库。官网
  • BayesPy:Python中的贝叶斯推断工具。官网
  • scikit-learn tutorials:scikit-learn学习笔记系列。官网
  • sentiment-analyzer:推特情绪分析器。官网
  • group-lasso:坐标下降演算法实验,应用于(稀疏)群套索模型。官网
  • mne-python-notebooks:使用 mne-python进行EEG/MEG数据处理的IPython笔记。官网
  • pandas cookbook:使用Python pandas库的方法书。官网
  • climin:机器学习的优化程序库,用Python实现了梯度下降、LBFGS、rmsprop、adadelta 等演算法。官网

Kaggle竞赛源代码

  • wiki challange:Kaggle上一个维基预测挑战赛 Dell Zhang解法的实现。官网
  • kaggle insults:Kaggle上」从社交媒体评论中检测辱骂「竞赛提交的代码。官网
  • kaggle_acquire-valued-shoppers-challenge:Kaggle预测回头客挑战赛的代码。官网
  • kaggle-cifar:Kaggle上CIFAR-10 竞赛的代码,使用cuda-convnet。官网
  • kaggle-blackbox:Kaggle上blackbox赛代码,关于深度学习。官网
  • kaggle-accelerometer:Kaggle上加速度计数据识别用户竞赛的代码。官网
  • kaggle-advertised-salaries:Kaggle上用广告预测工资竞赛的代码。官网
  • kaggle amazon:Kaggle上给定员工角色预测其访问需求竞赛的代码。官网
  • kaggle-bestbuy_big:Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(大数据版)。官网
  • kaggle-bestbuy_small:Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(小数据版)。官网
  • Kaggle Dogs vs. Cats:Kaggle上从图片中识别猫和狗竞赛的代码。官网
  • Kaggle Galaxy Challenge:Kaggle上遥远星系形态分类竞赛的优胜代码。官网
  • Kaggle Gender:Kaggle竞赛,从笔迹区分性别。官网
  • Kaggle Merck:Kaggle上预测药物分子活性竞赛的代码(默克制药赞助)。官网
  • Kaggle Stackoverflow:Kaggle上 预测StackOverflow网站问题是否会被关闭竞赛的代码。官网
  • wine-quality:预测红酒质量。官网

Ruby自然语言处理

  • Treat:文本检索与注释工具包,Ruby上我见过的最全面的工具包。官网
  • Ruby Linguistics:这个框架可以用任何语言为Ruby对象构建语言学工具包。括一个语言无关的通用前端,一个将语言代码映射到语言名的模块,和一个含有很有英文语言工具的模块。官网
  • Stemmer:使得Ruby可用 libstemmer_c中的介面。官网
  • Ruby Wordnet:WordNet的Ruby介面库。官网
  • Raspel:aspell绑定到Ruby的介面。官网
  • UEA Stemmer:UEALite Stemmer的Ruby移植版,供搜索和检索用的保守的词干分析器。官网
  • Twitter-text-rb:该程序库可以将推特中的用户名、列表和话题标签自动连接并提取出来。官网

通用机器学习

  • Ruby Machine Learning:Ruby实现的一些机器学习演算法。官网
  • Machine Learning Ruby:官网
  • jRuby Mahout:精华!在JRuby世界中释放了Apache Mahout的威力。官网
  • CardMagic-Classifier:可用贝叶斯及其他分类法的通用分类器模块。官网
  • Neural Networks and Deep Learning:《神经网路和深度学习》一书的示例代码。官网

数据分析/数据可视化

  • rsruby:Ruby - R bridge。官网
  • data-visualization-ruby:关于数据可视化的Ruby Manor演示的源代码和支持内容。官网
  • ruby-plot:将gnuplot包装为Ruby形式,特别适合将ROC曲线转化为svg文件。官网
  • plot-rb:基于Vega和D3的ruby绘图库。官网
  • scruffy:Ruby下出色的图形工具包。官网
  • SciRuby:官网
  • Glean:数据管理工具。官网
  • Bioruby:官网
  • Arel:官网

Misc 杂项

  • Big Data For Chimps:大数据处理严肃而有趣的指南书。官网

R通用机器学习

  • Clever Algorithms For Machine Learning:官网。
  • Machine Learning For Hackers:官网。
  • Machine Learning Task View on CRAN:R语言机器学习包列表,按演算法类型分组。官网。
  • caret:R语言150个机器学习演算法的统一介面。官网
  • SuperLearner:该包集合了多种机器学习演算法与subsemble
  • Introduction to Statistical Learning:官网。

数据分析/数据可视化

  • Learning Statistics Using R:官网
  • ggplot2:基于图形语法的数据可视化包。官网

Scala自然语言处理

  • ScalaNLP:机器学习和数值计算库的套装。官网
  • Breeze:Scala用的数值处理库。官网
  • Chalk:自然语言处理库。官网
  • FACTORIE:可部署的概率建模工具包,用Scala实现的软体库为用户提供简洁的语言来创建关系因素图,评估参数并进行推断。官网。

数据分析/数据可视化

  • MLlib in Apache Spark:Spark下的分散式机器学习库。官网
  • Scalding:CAscading的Scala介面。官网
  • Summing Bird:用Scalding 和 Storm进行Streaming MapReduce。官网
  • Algebird:Scala的抽象代数工具。官网
  • xerial:Scala的数据管理工具。官网
  • simmer:化简你的数据,进行代数聚合的unix过滤器。官网
  • PredictionIO:供软体开发者和数据工程师用的机器学习伺服器。官网
  • BIDMat:支持大规模探索性数据分析的CPU和GPU加速矩阵库。官网

通用机器学习

  • Conjecture:Scalding下可扩展的机器学习框架。官网
  • brushfire:scalding下的决策树工具。官网
  • ganitha:基于scalding的机器学习程序库。官网
  • adam:使用Apache Avro, Apache Spark 和 Parquet的基因组处理引擎,有专用的文件格式,Apache 2软体许可。官网
  • bioscala:Scala语言可用的生物信息学程序库。官网
  • BIDMach:机器学习CPU和GPU加速库。官网

《机器学习资源大全中文版》

维护者:tangyouhua

贡献者:toolate、冰斌、云中游、Daetalus、赵叶宇、You

当然如果你想要更加深入的编程语言知识,或者人工智慧大数据课程,七月在线可以帮到您,在我们的课程中不乏有阿里云天池/PAI官方合作的专业免费课程。

看完这篇内容后,相信以下三件事,也会对你的个人提升有所帮助:1、点赞,让更多人能看到这篇内容,同时你的认可也会鼓励我创作更多优质内容。2、让自己变的更强:七月在线放出了大量免费公开课,包含了演算法、机器学习、深度学习、Python、天池/kaggle实战、IT面试求职、机器学习中的数学。也不乏我们与阿里云天池/PAI联合发布的课程。 请点击查看↓七月在线 - 国内领先的人工智慧教育平台?

www.julyedu.com图标

再给您推荐一门课程是从Python基础开始教学,最终过度到数据分析以及各种库的应用。原价199元,现在已经免费了。进入后登录就可以能获得免单劵,可以直接开始学。毫无套路,马上学Python!!!请点击查看↓

七月在线 - 国内领先的人工智慧教育平台?

m.julyedu.com


推荐下自家的机器学习课程,真的很适合小白。而且大部分还是不要钱的。

1.基础内容

  • NumPy 数值计算基础课程
  • Pandas 数据处理基础课程
  • Matplotlib 数据绘图基础课程
  • Seaborn 数据可视化基础课程
  • SciPy 科学计算基础课程
  • NumPy 百题大冲关
  • Pandas 时间序列数据处理
  • Pandas 百题大冲关
  • PyTorch 深度学习基础课程
  • TensorFlow 深度学习基础课程
  • TensorFlow 2.0 新特性快速入门

2.练手项目

  • 用神经网路破解验证码
  • 利用逻辑回归实现鸢尾花分类
  • 使用逻辑回归预测 IPO 市场
  • 利用 TensorFlow 设计简单的前向神经网路
  • 循环神经网路讲解及基础应用
  • SIFT 特征提取分析演算法讲解及应用
  • Hopfield 演算法基础讲解及实例实现
  • 使用 Python 预测 NBA 常规赛结果
  • Python 气象数据分析
  • K-近邻演算法实现手写数字识别系统
  • 使用 Keras 预训练模型实现迁移学习
  • 决策树实战项目:鸢尾花分类
  • Twitter 数据情感分析
  • Ebay 在线拍卖数据分析
  • 基于无监督学习的自编码器实现
  • 自联想器的 Python 实现
  • 使用 Python 实现深度神经网路

仅仅作为入门的话,差不多先完成上面的学习吧!进一步的内容,难度会相对来说比较大。建议可以先自己尝试自学一下,如果希望能够有助教或者老师帮助快速入门机器学习。可以考虑实验楼的楼+之机器学习实战。

楼+之机器学习实战?

www.shiyanlou.com图标发布于 2019-10-23继续浏览内容知乎发现更大的世界打开Chrome继续404NotFound404NotFound写代码赚学费

首先题主先把计算机学好,打好基础,再来说机器学习,不管是一些基础概念还是编程思维都需要前期打好基础。比如我家小孩儿,作为资深码农的孩子,从小就继承了我的衣钵,编程从娃娃抓起,hhhhhh

但是既然题主问了,那我就分享一些方法给你,涉及到很多英文网站,建议用谷歌访问

以下方法是基于利用Python 来进行机器学习

机器学习是人工智慧领域的一个重要研究课题,近年来一直倍受关注。这一领域可能会提供很有吸引力的一些机会,而且在这一领域开始职业生涯并不像乍看上去那么困难。即使你在数学或编程方面没有任何经验,也不是问题。最重要的因素纯粹是你自己的兴趣和学习所有这些东西的动机。

如果你是一个新手,不知道从哪里开始学习、为什么需要机器学习、以及为什么它最近越来越受欢迎,看本文就对了!我收集了所有必要信息和有用资源来帮助你学到新的知识和完成你的第一个项目。

为什么选择Python?

如果你的目标是成为一名成功的程序员,你需要知道很多事情。但是,对于机器学习和数据科学来说,掌握至少一种编程语言并能够自信地运用它就足够了。所以,冷静点,你不必成为编程天才。

成功的机器学习之旅需要从一开始就选择适当的编程语言,因为你的选择将决定你的未来。在这一步,你必须有计划地思考,正确安排优先事项,不要把时间花在不必要的事情上。

我的观点是:Python 对于初学者来说是一个完美的选择,可以让你专注于机器学习和数据科学领域。它是一种极简且直观的语言,具有全功能的工具库线(也称为框架),大大减少了获得第一个结果所需的时间。

你也可以考虑使用 R 语言,但就个人而言,我更倾向于使用 Python。

第1步:你需要了解的ML流程的简要概述

机器学习是基于经验的学习。举个例子,它就像一个人通过观察别人下棋来学习下棋。通过这种方式,计算机可以通过提供经过训练的信息来编程,从而获得高概率识别个体或其特征的能力。

首先,你需要知道机器学习分为这些不同的阶段:

  • 数据收集
  • 数据排序
  • 数据分析
  • 演算法开发
  • 检查生成的演算法
  • 使用演算法进一步得出结论

关于提取模式,不同的演算法被使用,这些演算法被分为两类:

  • 无监督学习
  • 有监督学习

在无监督学习的情况下,机器只接收一组输入数据。此后,机器将决定输入数据与任何其他假定数据之间的关系。与监督学习不同的是,当机器被提供一些用于学习的验证数据时,独立的无监督学习意味著计算机本身将发现不同数据集之间的模式和关系。无监督学习可以进一步分为聚类和关联学习。

有监督学习意味著计算机能够根据提供的样本识别元素。计算机对其进行研究,并开发基于这些数据识别新数据的能力。例如,可以训练你的计算机根据以前收到的信息过滤垃圾邮件。

一些监督学习演算法包括:

  • 决策树
  • 支持向量机
  • 朴素贝叶斯分类器
  • K近邻
  • 线性回归

第2步:复习 Python 数学库所需要的数学技能

一个在人工智慧和机器学习领域工作的不懂数学的人就像一个不懂说服技巧的政客。

如果没有起码的数学知识基础,你就无法处理机器学习(Machine Learning,ML)和数据科学项目。然而,并不是说需要有数学学位。根据我的个人经验,每天至少花 30-45 分钟学习就会很有收获,你会更快地理解和学习 Python 的应用数学和统计主题。

你需要不断阅读或更新基础理论。不需要阅读整个教程,只需要关注关键的概念。

以下是数据分析和机器学习所需数学的3个步骤:

用于数据分析的线性代数:标量、向量、矩阵和张量

  1. 例如,对于主成分法,你需要了解特征向量,而回归方法需要知道矩阵乘法。此外,机器学习通常使用高维数据(包含许多变数的数据)。这种数据类型最好由矩阵表示。

数学分析:导数和梯度

1.数学分析是许多机器学习演算法的基础。优化问题需要理解导数和梯度。例如,最常见的优化方法之一就是梯度下降。 为了快速学习线性代数和数学分析,我推荐以下课程:

a.Khan Academy 提供线性代数和数学分析的短期实战课程,基本涵盖了最重要的内容。

b.MIT OpenCourseWare 为机器学习提供了很棒的数学学习课程,提供了所有视频讲座和学习材料。

2.梯度下降:从头开始构建一个简单的神经网路

数据分析和机器学习领域学习数学的最好方法之一是从零开始构建一个简单的神经网路。你将会使用线性代数来表示网路,并使用数学分析来优化它。特别是,你将从零开始创建一个梯度下降过程。不需要太担心神经网路间的细微差别。只按照说明编写代码就可以了。

以下是一些很好的练习:

《Python中的神经网路(Neural Network in Python?)》 这是一个很棒的教程,会教会你从头构建一个简单的神经网路。你也能够找到有用的插图来理解梯度下降是如何工作的。

有些更短的教程也能够帮助你逐步掌握神经网路:

《如何在Python中从零开始构建自己的神经网路(How to build your own Neural Network from scratch in Python)》

《在Python中从零实现一个神经网路——导论(Implementing a Neural Network from Scratch in Python?—?An Introduction)》

《面向初学者的机器学习:神经网路导论(Machine Learning for Beginners: An Introduction to Neural Networks?)》关于神经网路如何工作以及如何在Python中从零开始实现的一个很棒的简明解释。

第3步:学习Python语法的基础知识

好消息是:你不需要完整的学习课程,因为 Python 和数据分析并不是同义词。

在开始深入研究语法之前,我想分享一个可以将你失败可能性降到最低的建议。

通过阅读有关游泳技巧的书籍来学习游泳是不可能的,但是在泳池训练的同时阅读这些书籍可以更有效地学会技能。

编程的学习也是类似的。只关注语法是不值当的,你很可能会因此而失去兴趣。

你不需要记住所有的东西。尝试迈出一小步,把理论知识和实践结合起来,专注于直观的理解。

例如,在特定的情况下哪个函数是合适的,以及条件运算符是如何工作的。在编写代码的过程中,你会通过阅读文档逐步记住语法。很快你就不再需要谷歌这些东西了。

如果你对编程没有任何了解,建议阅读《用Python自动处理那些无聊的事情(Automate the Boring Stuff With Python)》。这本书为初学者提供了实用编程的解释,并从零开始教学。

阅读第6章「字元串操作」,完成该课的实际任务,就足够了。

下面是其他一些值得探索的好资源:

Codecademy——教授良好的通用语法。

Learn Python the Hard Way?—— 一本出色的手册式书籍,解释了基础知识和更复杂的应用程序。Dataquest?—— 这个资源在教授数据科学的同时也教授语法。Python教程(The Python Tutorial)—— 官方文档。

第4步 探索主要的数据分析库

下一个阶段是进一步学习适用于数据科学的 Python 库或框架。如前所述, Python 拥有大量的库。库是现成函数和对象的集合,你可以直接将它们导入到脚本中,从而节省时间。

如何使用库?以下是我的建议:

  1. 打开Jupyter Notebook(见下文)。
  2. 大约用半小时把库文件看一遍。
  3. 将该库导入到你的 Jupyter Notebook 中。
  4. 按照分步的指南查看正在运行的库。
  5. 检查文档,了解它的其他功能。

我不建议立即投入到学习库中,因为当你开始在项目中使用它们时,你可能会忘记所学的大部分内容。相反,你应该试著弄明白用到的每个库都能做些什么。

Jupyter Notebook

Jupyter Notebook 是一款轻量级的 IDE,是分析师们的最爱。在大多数情况下,Python 的安装包里已经包含了 Jupyter Notebook。你可以通过Anaconda Navigator 打开一个新项目,它包含在 Anaconda 包中。

你可能会需要的Python库

Numpy

安装教程 https://docs.scipy.org/doc/numpy/user/快速上手教程 https://docs.scipy.org/doc/numpy/user/quickstart.html

NumPy 由 Numerical Python 缩写而来,它是专业人士和初学者最通用和使用最广泛的库。使用这个工具,你可以轻松舒适地操作多维数组和矩阵。像线性代数运算和数值转换这样的函数也是可用的。

Pandas

安装教程 https://pandas.pydata.org/pandas-docs/stable/快速上手教程 https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

Pandas 是一个众所周知的高性能数据框表示工具。使用它,你几乎可以从任何数据源载入数据,计算各种函数并创建新的参数,使用类似于 SQL 的聚合函数构建对数据的查询。此外,还有各种矩阵变换函数、滑动窗口法等从数据中获取信息的方法。所以这个库对于一个优秀的专家来说是必不可少的。

Matplotlib

安装教程 https://matplotlib.org/contents.html快速上手教程 https://matplotlib.org/users/pyplot_tutorial.html

Matplotlib 是一个用于创建图形和可视化的灵活库。它很强大,但有点笨重。你可以跳过 Matplotlib 并从使用 Seaborn 开始(请参阅下面的 Seaborn)。

Scikit-Learn

安装教程 https://scikit-learn.org/stable/documentation.html快速上手教程 https://elitedatascience.com/python-machine-learning-tutorial-scikit-learn

我可以说这是迄今为止我见过的设计得最完善的 ML 包。它实现了广泛的机器学习演算法,并且很容易嵌入到实际应用程序中。你可以使用库中大量的函数,比如回归、聚类、模型选择、预处理、分类等等。所以它值得全面学习和使用。它最大的优点是工作速度快,因此 Spotify、http://Booking.com、J.P.Morgan 等主流平台都在使用 Scikit-Learn 是理所当然的。

第5步:开发结构化的项目

一旦掌握了基本语法和库的基本知识,就可以开始自己完成项目了。

这是另外一些项目资料:

Dataquest——互动式地教授 Python 和数据科学。

Python for Data Analysis——作者写了很多关于 Python数据分析的论文。

Scikit 文档——Python 的主要计算机训练库。

CS109——哈佛大学数据科学的课程。

第6步:做出你自己的项目

你可以发现许多新东西,但重要的是找到那些你真正感兴趣的项目。以下是在这方面最受欢迎的有用资源中,比较突出的一些:

StackOverflow :一个可以在上面讨论所有可能的问题的多功能网站,提供了一系列问题和答案。此外,它受众广泛,所以你可以询问你的错误并从大量用户那里得到答案

Python 文档 : 另一个搜索参考资料的好地方尽可能参与所有与 Python 相关的活动,并找到从事有趣项目的人员。顺便说一下, Github 是实现这一目标的绝佳场所。学习新知识并在同类中不断调整 ,所有这些都将有助于提高你的水平!

写在最后以及一点鼓励

根据摩尔定律,集成电路上的晶体管数量每24个月翻一番。这意味著,我们的计算机性能每年都在进步,也意味著以前无法触及的知识边界再次「向右移动」——大数据和机器学习演算法的研究有很大空间!

希望对题主有帮助~


首先题主先把计算机学好,打好基础,再来说机器学习,不管是一些基础概念还是编程思维都需要前期打好基础。比如我家小孩儿,作为资深码农的孩子,从小就继承了我的衣钵,编程从娃娃抓起,hhhhhh

但是既然题主问了,那我就分享一些方法给你,涉及到很多英文网站,建议用谷歌访问

以下方法是基于利用Python 来进行机器学习

机器学习是人工智慧领域的一个重要研究课题,近年来一直倍受关注。这一领域可能会提供很有吸引力的一些机会,而且在这一领域开始职业生涯并不像乍看上去那么困难。即使你在数学或编程方面没有任何经验,也不是问题。最重要的因素纯粹是你自己的兴趣和学习所有这些东西的动机。

如果你是一个新手,不知道从哪里开始学习、为什么需要机器学习、以及为什么它最近越来越受欢迎,看本文就对了!我收集了所有必要信息和有用资源来帮助你学到新的知识和完成你的第一个项目。

为什么选择Python?

如果你的目标是成为一名成功的程序员,你需要知道很多事情。但是,对于机器学习和数据科学来说,掌握至少一种编程语言并能够自信地运用它就足够了。所以,冷静点,你不必成为编程天才。

成功的机器学习之旅需要从一开始就选择适当的编程语言,因为你的选择将决定你的未来。在这一步,你必须有计划地思考,正确安排优先事项,不要把时间花在不必要的事情上。

我的观点是:Python 对于初学者来说是一个完美的选择,可以让你专注于机器学习和数据科学领域。它是一种极简且直观的语言,具有全功能的工具库线(也称为框架),大大减少了获得第一个结果所需的时间。

你也可以考虑使用 R 语言,但就个人而言,我更倾向于使用 Python。

第1步:你需要了解的ML流程的简要概述

机器学习是基于经验的学习。举个例子,它就像一个人通过观察别人下棋来学习下棋。通过这种方式,计算机可以通过提供经过训练的信息来编程,从而获得高概率识别个体或其特征的能力。

首先,你需要知道机器学习分为这些不同的阶段:

  • 数据收集
  • 数据排序
  • 数据分析
  • 演算法开发
  • 检查生成的演算法
  • 使用演算法进一步得出结论

关于提取模式,不同的演算法被使用,这些演算法被分为两类:

  • 无监督学习
  • 有监督学习

在无监督学习的情况下,机器只接收一组输入数据。此后,机器将决定输入数据与任何其他假定数据之间的关系。与监督学习不同的是,当机器被提供一些用于学习的验证数据时,独立的无监督学习意味著计算机本身将发现不同数据集之间的模式和关系。无监督学习可以进一步分为聚类和关联学习。

有监督学习意味著计算机能够根据提供的样本识别元素。计算机对其进行研究,并开发基于这些数据识别新数据的能力。例如,可以训练你的计算机根据以前收到的信息过滤垃圾邮件。

一些监督学习演算法包括:

  • 决策树
  • 支持向量机
  • 朴素贝叶斯分类器
  • K近邻
  • 线性回归

第2步:复习 Python 数学库所需要的数学技能

一个在人工智慧和机器学习领域工作的不懂数学的人就像一个不懂说服技巧的政客。

如果没有起码的数学知识基础,你就无法处理机器学习(Machine Learning,ML)和数据科学项目。然而,并不是说需要有数学学位。根据我的个人经验,每天至少花 30-45 分钟学习就会很有收获,你会更快地理解和学习 Python 的应用数学和统计主题。

你需要不断阅读或更新基础理论。不需要阅读整个教程,只需要关注关键的概念。

以下是数据分析和机器学习所需数学的3个步骤:

用于数据分析的线性代数:标量、向量、矩阵和张量

  1. 例如,对于主成分法,你需要了解特征向量,而回归方法需要知道矩阵乘法。此外,机器学习通常使用高维数据(包含许多变数的数据)。这种数据类型最好由矩阵表示。

数学分析:导数和梯度

1.数学分析是许多机器学习演算法的基础。优化问题需要理解导数和梯度。例如,最常见的优化方法之一就是梯度下降。 为了快速学习线性代数和数学分析,我推荐以下课程:

a.Khan Academy 提供线性代数和数学分析的短期实战课程,基本涵盖了最重要的内容。

b.MIT OpenCourseWare 为机器学习提供了很棒的数学学习课程,提供了所有视频讲座和学习材料。

2.梯度下降:从头开始构建一个简单的神经网路

数据分析和机器学习领域学习数学的最好方法之一是从零开始构建一个简单的神经网路。你将会使用线性代数来表示网路,并使用数学分析来优化它。特别是,你将从零开始创建一个梯度下降过程。不需要太担心神经网路间的细微差别。只按照说明编写代码就可以了。

以下是一些很好的练习:

《Python中的神经网路(Neural Network in Python?)》 这是一个很棒的教程,会教会你从头构建一个简单的神经网路。你也能够找到有用的插图来理解梯度下降是如何工作的。

有些更短的教程也能够帮助你逐步掌握神经网路:

《如何在Python中从零开始构建自己的神经网路(How to build your own Neural Network from scratch in Python)》

《在Python中从零实现一个神经网路——导论(Implementing a Neural Network from Scratch in Python?—?An Introduction)》

《面向初学者的机器学习:神经网路导论(Machine Learning for Beginners: An Introduction to Neural Networks?)》关于神经网路如何工作以及如何在Python中从零开始实现的一个很棒的简明解释。

第3步:学习Python语法的基础知识

好消息是:你不需要完整的学习课程,因为 Python 和数据分析并不是同义词。

在开始深入研究语法之前,我想分享一个可以将你失败可能性降到最低的建议。

通过阅读有关游泳技巧的书籍来学习游泳是不可能的,但是在泳池训练的同时阅读这些书籍可以更有效地学会技能。

编程的学习也是类似的。只关注语法是不值当的,你很可能会因此而失去兴趣。

你不需要记住所有的东西。尝试迈出一小步,把理论知识和实践结合起来,专注于直观的理解。

例如,在特定的情况下哪个函数是合适的,以及条件运算符是如何工作的。在编写代码的过程中,你会通过阅读文档逐步记住语法。很快你就不再需要谷歌这些东西了。

如果你对编程没有任何了解,建议阅读《用Python自动处理那些无聊的事情(Automate the Boring Stuff With Python)》。这本书为初学者提供了实用编程的解释,并从零开始教学。

阅读第6章「字元串操作」,完成该课的实际任务,就足够了。

下面是其他一些值得探索的好资源:

Codecademy——教授良好的通用语法。

Learn Python the Hard Way?—— 一本出色的手册式书籍,解释了基础知识和更复杂的应用程序。Dataquest?—— 这个资源在教授数据科学的同时也教授语法。Python教程(The Python Tutorial)—— 官方文档。

第4步 探索主要的数据分析库

下一个阶段是进一步学习适用于数据科学的 Python 库或框架。如前所述, Python 拥有大量的库。库是现成函数和对象的集合,你可以直接将它们导入到脚本中,从而节省时间。

如何使用库?以下是我的建议:

  1. 打开Jupyter Notebook(见下文)。
  2. 大约用半小时把库文件看一遍。
  3. 将该库导入到你的 Jupyter Notebook 中。
  4. 按照分步的指南查看正在运行的库。
  5. 检查文档,了解它的其他功能。

我不建议立即投入到学习库中,因为当你开始在项目中使用它们时,你可能会忘记所学的大部分内容。相反,你应该试著弄明白用到的每个库都能做些什么。

Jupyter Notebook

Jupyter Notebook 是一款轻量级的 IDE,是分析师们的最爱。在大多数情况下,Python 的安装包里已经包含了 Jupyter Notebook。你可以通过Anaconda Navigator 打开一个新项目,它包含在 Anaconda 包中。

你可能会需要的Python库

Numpy

安装教程 https://docs.scipy.org/doc/numpy/user/快速上手教程 https://docs.scipy.org/doc/numpy/user/quickstart.html

NumPy 由 Numerical Python 缩写而来,它是专业人士和初学者最通用和使用最广泛的库。使用这个工具,你可以轻松舒适地操作多维数组和矩阵。像线性代数运算和数值转换这样的函数也是可用的。

Pandas

安装教程 https://pandas.pydata.org/pandas-docs/stable/快速上手教程 https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

Pandas 是一个众所周知的高性能数据框表示工具。使用它,你几乎可以从任何数据源载入数据,计算各种函数并创建新的参数,使用类似于 SQL 的聚合函数构建对数据的查询。此外,还有各种矩阵变换函数、滑动窗口法等从数据中获取信息的方法。所以这个库对于一个优秀的专家来说是必不可少的。

Matplotlib

安装教程 https://matplotlib.org/contents.html快速上手教程 https://matplotlib.org/users/pyplot_tutorial.html

Matplotlib 是一个用于创建图形和可视化的灵活库。它很强大,但有点笨重。你可以跳过 Matplotlib 并从使用 Seaborn 开始(请参阅下面的 Seaborn)。

Scikit-Learn

安装教程 https://scikit-learn.org/stable/documentation.html快速上手教程 https://elitedatascience.com/python-machine-learning-tutorial-scikit-learn

我可以说这是迄今为止我见过的设计得最完善的 ML 包。它实现了广泛的机器学习演算法,并且很容易嵌入到实际应用程序中。你可以使用库中大量的函数,比如回归、聚类、模型选择、预处理、分类等等。所以它值得全面学习和使用。它最大的优点是工作速度快,因此 Spotify、http://Booking.com、J.P.Morgan 等主流平台都在使用 Scikit-Learn 是理所当然的。

第5步:开发结构化的项目

一旦掌握了基本语法和库的基本知识,就可以开始自己完成项目了。

这是另外一些项目资料:

Dataquest——互动式地教授 Python 和数据科学。

Python for Data Analysis——作者写了很多关于 Python数据分析的论文。

Scikit 文档——Python 的主要计算机训练库。

CS109——哈佛大学数据科学的课程。

第6步:做出你自己的项目

你可以发现许多新东西,但重要的是找到那些你真正感兴趣的项目。以下是在这方面最受欢迎的有用资源中,比较突出的一些:

StackOverflow :一个可以在上面讨论所有可能的问题的多功能网站,提供了一系列问题和答案。此外,它受众广泛,所以你可以询问你的错误并从大量用户那里得到答案

Python 文档 : 另一个搜索参考资料的好地方尽可能参与所有与 Python 相关的活动,并找到从事有趣项目的人员。顺便说一下, Github 是实现这一目标的绝佳场所。学习新知识并在同类中不断调整 ,所有这些都将有助于提高你的水平!

写在最后以及一点鼓励

根据摩尔定律,集成电路上的晶体管数量每24个月翻一番。这意味著,我们的计算机性能每年都在进步,也意味著以前无法触及的知识边界再次「向右移动」——大数据和机器学习演算法的研究有很大空间!

希望对题主有帮助~


推荐阅读:
相关文章