精分冻鱼 发表于 2023-9-13 13:04:43

机器学习工程师需要掌握哪些编程语言?

本题已插手知乎圆桌 »「机器学习 · 学以致用」,更多「机器学习」相关话题讨论欢迎存眷。
想往机器学习方面成长。目前我的情况是C++和Java城市一些基础的东西,但是都不精通。要是两个都精那是不成能的,所以我想从里面选一个深入学习。方针是做数据挖掘,机器学习方面的算法工程师,请问需要掌握哪一个

hoh 发表于 2023-9-13 13:05:28

谢 @杉数科技 邀。
各个语言都有自己擅长的,python 和R 数据分析就是强项,java是工程性的语言,c++现在做底层并行等,所以我的想法是这个问题不是机器学习需要什么语言,而是你想做什么.

机器学习,数据挖掘,数据分析一般来说,比较主流的,需要的是以下几种语言:
Python,R,SQL,C++。
其次还有一个东西是Linux Shell Command。

其他一些语言比如Matlab,Ruby等等其实也可以用。主要是类似Python和R会有自己的一些比较好的package可以直接拿去用。

其实编程语言并不是问题;我曾经在UIUC见过一个坚持用Java写数据挖掘工程的美国人。UIUC的CS412一共有五次作业,难度都在中等到比较难之间吧。另外这门课有一个要求,要尽量自己造数据挖掘的轮子,比如python的话除了numpy以外的package是要尽量少用的。当时我自己做了个不完全的统计:我见过有四个用C++写项目的。Matlab,R都没有遇到。我印象非常深的就是一个美国人坚持用Java写所有的项目。我曾经问过他们为什么会坚持用C++或者Java来写数据挖掘的工程;坚持用C++的多半是以后想做投行,高频交易或者量化金融,练习用C++;而那个美国人已经拿到了SDE的offer,所以用Java来反复的练手。

实际上做机器学习和数据挖掘用Python,R毫无疑问是最主流的。原因其实也很好理解:Python和R有很多自带的package,这些package有很多,被封装的很好的代码;你只要善于利用官方文档,往往就可以用很短的语句和很简短的方法避免大量繁琐的代码工作。

MySQL的意义更多在于处理数据库。对于一般的私人,或者中小企业(非海量数据情况)来说,MySQL语言足够解决他们在数据库方面遇到的大多数问题了。当然,作为机器学习工程师掌握SQL自然很有必要。

Linux的好处,自然不必说。在公司内部用这个东西可以很大幅度的提升工作效率。尤其是Linux在文件管理方面有很大优势。

C++的意义在于写底层优化的程序和系统。因为我们假如我们想要对代码的一些细节进行优化,这个时候用C++写底层优化系统,就是一个必须要做的事情了。

jerry1641 发表于 2023-9-13 13:05:44

看到各位同学的精彩回答收获颇丰,有关机器学习工程师要掌握哪些编程语言,社区有一篇不错的文章分享过来,希望对大伙有所帮助
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习牵涉的编程语言十分之广,包括了MATLAB、Julia、R、Perl、Python、Clojure、Ruby等等。
为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。
目录


[*]C

[*]通用机器学习
[*]计算机视觉



[*]C++

[*]计算机视觉
[*]通用机器学习
[*]自然语言处理
[*]序列分析
[*]手势识别



[*]Common Lisp

[*]通用机器学习



[*]Clojure

[*]自然语言处理
[*]通用机器学习
[*]数据分析 /数据可视化



[*]Erlang

[*]通用机器学习



[*]Go

[*]自然语言处理
[*]通用机器学习
[*]数据分析 /数据可视化



[*]Haskell

[*]通用机器学习



[*]Java

[*]自然语言处理
[*]通用机器学习
[*]数据分析 /数据可视化
[*]深度学习



[*]Javascript

[*]自然语言处理
[*]数据分析 /数据可视化
[*]通用机器学习
[*]其他



[*]Julia

[*]通用机器学习
[*]自然语言处理
[*]数据分析/数据可视化
[*]其他项 /展示



[*]Lua

[*]通用机器学习
[*]示例和脚本



[*]Matlab

[*]计算机视觉
[*]自然语言处理
[*]通用机器学
[*]数据分析 / 数据可视化



[*].NET

[*]计算机视觉
[*]自然语言处理
[*]通用机器学习
[*]数据分析 /数据可视化



[*]Objective C

[*]通用机器学习



[*]OCaml

[*]通用机器学习



[*]PHP

[*]自然语言处理
[*]通用机器学习



[*]Python

[*]计算机视觉
[*]自然语言处理
[*]通用机器学习
[*]数据分析 /数据可视化
[*]杂项脚本/ iPython笔记 /源码库
[*]Kaggle竞赛源码



[*]Ruby

[*]自然语言处理
[*]通用机器学习
[*]数据分析 /数据处理
[*]杂项



[*]Rust

[*]通用机器学习



[*]R

[*]通用机器学习
[*]数据分析 /数据可视化



[*]SAS

[*]通用机器学习
[*]数据分析 /数据可视化
[*]高性能机器学习(MPP)
[*]自然语言处理
[*]示例和脚本



[*]Scala

[*]自然语言处理
[*]数据分析 /数据可视化
[*]通用机器学习



[*]Swift

[*]通用机器学习



[*]Credits
C
------------------------------------------------------------------------------------
通用机器学习

[*]Recommender- 一个C语言库,利用协同过滤(CF)进行产品推荐/建议;
[*]Darknet-是一个用C和CUDA编写的开源神经网络框架,它速度快,易于安装,并支持CPU和GPU计算。

计算机视觉

[*]CCV-基于C语言、高速缓存的核计算机视觉库,是一个现代化的计算机视觉库;
[*]VLFeat-开放、可便携的计算机视觉算法库,内有matlab工具箱。

语音识别

[*]HTK-隐马尔可夫模型工具包(HTK)是一个便携式工具包,用于构建和操作隐马尔可夫模型。

C++
------------------------------------------------------------------------------------
计算机视觉

[*]OpenCV-OpenCV自带C ++、C、Python、Java和MATLAB接口,并支持Windows、Linux、Android版和Mac OS等系统;
[*]DLib-DLib有C ++和Python接口,用于人脸检测和训练通用的目标探测器;
[*]EBLearn-Eblearn是一种面向对象的C++库,能够实现各种机器学习模型;
[*]VIGRA-VIGRA是通用跨平台的C++计算机视觉和机器学习库,能够用Python绑定任意维度的体积。

通用机器学习

[*]mlpack-可扩展的C++机器学习库;
[*]DLib-ML工具套件,能够很容易嵌入到其他应用程序中;
[*]encog-cpp
[*]shark
[*]Vowpal Wabbit (VW)-一个快速的核外(out-of-core )学习系统;
[*]sofia-ml-快速增量算法套件;
[*]Shogun-Shogun机器学习工具箱;
[*]Caffe-基于清洁度、可读性和速度考虑而开发的深度学习框架。[深度学习]
[*]CXXNET-另一个深度学习框架,其核心代码少于1000行;[深度学习]
[*]XGBoost-一种并行、优化、通用的梯度推进库;
[*]CUDA-利用C++ / CUDA快速实现卷积;[深度学习]
[*]Stan-一种概率性的编程语言,能够实现Hamiltonian Monte Carlo抽样的全贝叶斯统计推断;
[*]BanditLib-一个简单、有多重保护的Bandit库;
[*]Timbl :一个软件包/ C ++库,能够实现多种基于内存的学习算法,其中有IB1-IG--k-最近邻分类的实现、IGTree--IB1-IG的决策树近似值;常用于NLP;
[*]Disrtibuted Machine learning Tool Kit (DMTK)-微软开发的分布式机器学习(参数服务器)框架,能够在多台机器的大型数据集上实现训练模型,与它捆绑的现有工具包括:LightLDA和分布式(多传感)字嵌入;
[*]igraph-通用图形库;
[*]Warp-CTC-在CPU和GPU上快速并行地实现连接时域分类(Connectionist Temporal Classification,CTC);
[*]CNTK-微软研究院开发的计算网络工具包(CNTK),它作为一系列计算步骤,通过有向图来描述神经网络,是统一的深度学习工具包;
[*]DeepDetect-一个机器学习API,服务器用C++11编写,它使机器学习的状态易于工作,并容易集成到现有应用程序;
[*]Fido-一个高度模块化的C++机器学习库,用于嵌入式电子产品和机器人中。

自然语言处理

[*]MIT Information Extraction Toolkit-C,C ++和Python的工具,用于命名实体识别与关系抽取;
[*]CRF++-条件随机域(Conditional Random Fields,CRFs)的开源实现,用于分割/标记序列数据及其他自然语言处理任务;
[*]CRFsuite-条件随机域(CRFs)的实现,用于标记序列数据;
[*]BLLIP Parser-BLLIP自然语言解析器(也称为Charniak-Johnson解析器);
[*]colibri-core-是C++库、命令行工具,和Python绑定用于提取与使用基本的语言结构,例如用快速和高效存储的方式实现n-grams和skipgrams模型;
[*]ucto-是一种工具和C++库,基于支持各种语言的编译器,内含统一字符标准及规则表达式;支持FoLiA格式;
[*]libfolia-支持FoLiA格式的C++库;
[*]frog-为Dutch开发的基于内存的NLP套件:POS标签、归类分析、依存句法分析、NER、浅层句法分析、形态分析;
[*]MeTA-MeTA : ModErn 语篇分析(ModErn Text Analysis),是一个C++数据科学工具包,便于挖掘大文本数据。

语音识别

[*]Kaldi-Kaldi是用于语音识别的工具包,用C++编写,由Apache许可证V2.0协议授权,专门给语音识别的研究人员使用。

序列分析

[*]ToPS-这是一种面向对象的框架,便于在用户定义的字母序列中整合概率模型。

手势检测

[*]grt-手势识别工具包(GRT)是一个跨平台、开源的C++机器学习库,用于实时的手势识别。

Common Lisp
------------------------------------------------------------------------------------
通用机器学习

[*]mgl-神经网络(玻耳兹曼机,前馈和循环网络)以及高斯过程;
[*]mgl-gpr-演化算法;
[*]cl-libsvm-LIBSVM支持向量机库的包装。

Clojure

------------------------------------------------------------------------------------
自然语言处理

[*]Clojure-openNLP - Clojure中自然语言处理的工具包(openNLP);
[*]Infections-clj - Clojure和Clojure中类似于Rails的inflection库。
通用机器学习

[*]Touchstone - Clojure A/B 测试库;
[*]Clojush - Clojure中的Push程序语言和PushGP遗传编程系统;
[*]Infer - Clojure中分析和机器学习的工具;
[*]Clj-ML - Clojure中基于Weka及其相关环境的深度学习库;
[*]Encog - 在Clojure中封装成Encog (v3) (专门研究神经网络的机器学习框架);
[*]Fungp -Clojure中的遗传编程实例库;
[*]Statistiker - Clojure中基础机器学习算法;
[*]clortex -采用Numenta’s Cortical 学习算法的通用机器学习库;
[*]comportex - 采用Numenta’s Cortical 学习算法的功能组合的机器学习库。
数据分析/数据可视化

[*]Incanter - Incanter是基于 Clojure,类似R的统计计算与制图平台;
[*]PigPen -Clojure中的Map-Reduce;
[*]Envision - 基于Statistiker和D3Clojure 数据可视化库。
Erlang

------------------------------------------------------------------------------------
通用机器学习

[*]Disco-Erlang中的Map Reduce模型。
Go

------------------------------------------------------------------------------------
自然语言处理

[*]go-porterstemmer - 一个用于实现Porter词干提取算法的原生Go语言净室;
[*]paicehusk - Go语言中用于实现Paice/Husk词干提取算法;
[*]snowball - Go语言中的Snowball 词干提取器;
[*]go-ngram -内存N-gram索引压缩 。

通用机器学习

[*]Go Learn - Go语言中的机器学习库;
[*]go-pr - Go语言中的模式识别包;
[*]go-ml - 线性/逻辑回归、神经网络、协同过滤和多元高斯分布;
[*]bayesian - Go语言中朴素贝叶斯分类库;
[*]go-galib - Go语言版的遗传算法库;
[*]Cloudforest - GO语言中的决策树集合;
[*]gobrain - GO语言版的神经网络;
[*]GoNN - GoNN 是用Go语言实现的神经网络,它包括BPNN、RBF、PCN ;
[*]MXNet - 轻量级、便携式、灵活的分布式/深度学习系统,可对动态的、突变数据流调度部署,同时也支持Python、R、Julia、Go、Javascript 等编程语言。

数据分析/数据可视化

[*]go-graph - Go语言图形库;
[*]SVGo - Go语言的SVG生成库;
[*]RF - Go语言的随机森林库;

Haskell

------------------------------------------------------------------------------------
通用机器学习

[*]haskell-ml - Haskell 语言实现的各种深度学习算法 ;
[*]HLearn - 根据代数结构解释其深度模型的库;
[*]hnn - Haskell语言的神经网络库;
[*]hopfield-networks - Haskell中用于无监督学习的Hopfield网络;
[*]caffegraph - 一种用于深度神经网络的领域特定语言(DSL);
[*]LambdaNet - Haskell中的可配置的神经网络。

Java

------------------------------------------------------------------------------------
自然语言处理

[*]Cortical.io - 像人脑一样快速、精确处理复杂的NLP(自然语言处理)操作(如消歧、分类、流文本过滤等操作)的Retina API;
[*]CoreNLP - 斯坦福大学的CoreNLP提供的一系列的自然语言处理工具,该工具可以根据输入原始英语文本,给出单词的基本形式;
[*]Stanford Parser - 一种自然语言分析器,可以分析语句的语法结构;
[*]Stanford POS Tagger -一个词性分类器(POS Tagger);
[*]Stanford Name Entity Recognizer - Stanford NER是一个Java实现的名称识别器;
[*]Stanford Word Segmenter - 分词器,很多NLP工作中都要用到的标准预处理步骤;
[*]Tregex, Tsurgeon and Semgrex - Tregex基于树关系以及节点匹配的正则表达式,用于在树状数据结构中进行模式匹配(名字是“tree regular expressions”的缩写) ;
[*]Stanford Phrasal:一个基于短语的翻译系统
[*]Stanford English Tokenizer - Stanford Phrasal 用Java写成的最新的基于统计短语的机器翻译系统;
[*]Stanford Tokens Regex - 一个分解器,可以将文本大致分成一系列对应于“词”的符号;
[*]Stanford Temporal Tagger - SUTime是一个用于识别并标准化时间表达式的库;
[*]Stanford SPIED -在种子集上使用模式,以迭代方式从无标签文本中进行学习实体;
[*]Stanford Topic Modeling Toolbox - 为社会科学家及其他希望分析数据集的人员提供的主题建模工具;
[*]Twitter Text Java - Java实现的推特文本处理库;
[*]MALLET - 基于Java的统计自然语言处理、文档分类、聚类、主题建模、信息提取以及其他机器学习的文本应用包;
[*]OpenNLP - 基于机器学习的自然语言文本处理工具包;
[*]LingPipe - 一个使用计算机语言学文本处理的工具包;
[*]ClearTK - 在Java中ClearTK为开发统计语言处理组件提供了一个框架,该框架是基于Apache UIMA;
[*]Apache cTAKES - Apache cTAKES是一个开源自然语言处理系统,用于从临床电子病历的自由文本中提取信息;
[*]ClearNLP - ClearNLP工程为自然语言处理提供了软件和资源提供了。该项目最早在计算机愈合和教育研究中心启动,目前由Emory 大学的语言和信息研究中心继续开发。该项目遵循Apache 2 license。

通用机器学习

[*]aerosolve - 是由Airbnb设计的定价建议系统的机器学习库;
[*]Datumbox -应对机器学习和统计应用快速发展的机器学习框架;
[*]ELKI - 用于数据挖掘的Java工具包(无监督:聚类、异常检测等等);
[*]Encog - 一种先进的神经网络和机器学习框架。 Encog包含用于创建各类网络的类,同时也支持为神经网络规范和处理数据的类。它的训练采用多线程弹性传播。它也能使用GPU加快处理时间。提供了图形化界面来帮助建模和训练神经网络。
[*]EvA2 - 包含遗传算法、差分进化、协方差自适应进化策略等等的进化算法框架;
[*]FlinkML in Apache Flink - Flink中的分布式机器学习库;
[*]H2O - 深度学习引擎,支持在Hadoop、Spark 或者通过R、Python、Scala 、REST/JSONML 的APIs连到的笔记本上进行分布式学习;
[*]htm.java - 采用Numenta Cortical 学习算法的通用机器学习库 ;
[*]java-deeplearning - Java、Clojure、Scala的分布式深度学习平台;
[*]JAVA-ML - 包含所有Java算法的通用接口的通用深度学习库;
[*]JSAT - 用于分类、回归、聚类的机器学习算法集合;
[*]Mahout - 分布式的机器学习库;
[*]Meka - MEKA提供了一个面向多标签学习和评价方法的开源实现(扩展成Weka);
[*]MLlib in Apache Spark - Spark中的分布式机器学习程序库;
[*]Neuroph - Neuroph 是轻量级的Java神经网络框架;
[*]ORYX - 采用Apache Spark和Apache Kafka的Lambda 结构框架,专门用于实时大规模机器学习;
[*]Samoa - SAMOA 是一个包含用于分布式机器学习数据流的框架,同时为数据流流入不同的流处理平台提供了接口;
[*]RankLib - RankLib是一个排序学习算法库;
[*]rapaio - Java中用于统计、数据挖掘和机器学习的工具箱;
[*]RapidMiner - RapidMiner integration into Java code
[*]Stanford Classifier - 斯坦福大学分类器是一种机器学习工具,它可以将数据项归置不同的类别中;
[*]SmileMiner - 统计机器智能与学习引擎;
[*]SystemML - 灵活、可扩展的机器学习语言;
[*]WalnutiQ - 人脑部分面向对象模型;
[*]Weka - Weka是数据挖掘方面的机器学习算法集 。

语音识别

[*]CMU Sphinx - CMU Sphinx 是基于Java 语音识别库,用于纯语音识别开源工具包。

数据分析/数据可视化

[*]Flink - Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台;
[*]Hadoop - 大数据分析平台;
[*]Spark - Spark是一个快速通用的大规模数据处理引擎;
[*]Storm - Storm是一个分布式实时计算系统;
[*]Impala - 为Hadoop实现实时查询
[*]DataMelt - 用于数字计算、统计、符号计算、数据分析和数据可视化的数学软件;
[*]Dr. Michael Thomas Flanagan's Java Scientific Library

深度学习

[*]Deeplearning4j - 采用并行GPU的商用可扩展深度学习库。

Javascript

------------------------------------------------------------------------------------
自然语言处理

[*]Twitter-text - Twitter文本处理库中使用JavaScript的实现;
[*]NLP.js – 使用JavaScript和CoffeeScript的NLP实用工具;
[*]natural – 用于节点的通用自然语言工具;
[*]Knwl.js – JS中的自然语言处理器;
[*]Retext -用于分析和处理自然语言的可扩展系统;
[*]TextProcessing -情感分析,词干和词形还原,部分词性标注和组块,短语提取和命名实体识别;
[*]NLP Compromise - 浏览器中的自然语言处理。
数据分析/数据可视化

[*]D3.js
[*]High Charts
[*]NVD3.js
[*]dc.js
[*]chartjs
[*]dimple
[*]amCharts
[*]D3xter –直接建立在D3上的绘图;
[*]statkit – JavaScript的统计工具;
[*]datakit - JavaScript的轻量级数据分析框架;
[*]science.js - JavaScript中的科学统计计算;
[*]Z3d – 在Three.js上轻松地绘制交互式3D图;
[*]Sigma.js - JavaScript库,专门用于图形绘制;
[*]C3.js – 基于D3.js的定制库,能够轻松绘制图表;
[*]ZingChart - Vanilla JS编写的库,用于大数据可视化;
[*]cheminfo – 数据可视化和分析的平台,使用可视化项目。

通用机器学习

[*]Convnet.js - ConvNetJS是一个JavaScript库,用于训练深度学习模型[深度学习];
[*]Clusterfck - 为Node.js和浏览器,用Javascript实现的凝聚层次聚类;
[*]Clustering.js – Javascript为Node.js和浏览器实现的聚类算法;
[*]Decision Trees -使用ID3算法实现NodeJS决策树;
[*]figue - K-均值、模糊C均值和凝聚聚类;
[*]Node-fann -Node.js绑定的快速人工神经网络库(Fast Artificial Neural Network Library,FANN);
[*]Kmeans.js - K-均值算法用JavaScript的简单实现,用于Node.js和浏览器;
[*]LDA.js - Node.js的LDA主题建模;
[*]Learning.js –用Javascript实现逻辑回归/ c4.5决策树;
[*]Machine Learning - Node.js的机器学习库;
[*]Node-SVM - Node.js的支持向量机;
[*]Brain - JavaScript中的神经网络[已弃用];
[*]Bayesian-Bandit - Node和浏览器的贝叶斯实现;
[*]Synaptic – 用于Node.js和浏览器的无架构神经网络库;
[*]kNear - JavaScript实现的k个最近邻算法,用于监督学习;
[*]NeuralN - Node.js的C++神经网络库,其优点是有大量的数据集和多线程训练;
[*]kalman - Javascript的卡尔曼滤波器;
[*]shaman - Node.js库,同时支持简单和多元的线性回归;
[*]ml.js –用于Node.js和浏览器的机器学习和数值分析工具;
[*]Pavlov.js -利用马尔可夫决策过程强化学习;
[*]MXNet - 轻量级、便携式、灵活的分布式/深度学习系统,可对动态的、突变数据流调度部署,同时也支持Python、R、Julia、Go、Javascript 等编程语言。

其它


[*]sylvester – 用于JavaScript的向量和矩阵数学;
[*]simple-statistics - 描述,回归和推断统计的JavaScript实现;用文字实现的JavaScript,没有依赖性,能在所有现代浏览器(包括IE)以及在node.js中工作;
[*]regression-js – JavaScript库,包含小二乘法拟合方法的集合,用于寻找数据集的趋势;
[*]Lyric -线性回归库;
[*]GreatCircle – 计算大圆距的库。

Julia

------------------------------------------------------------------------------------
通用机器学习

[*]MachineLearning - Julia机器学习库;
[*]MLBase -一组支持机器学习算法的发展的函数;
[*]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工具;
[*]Mamba – Julia中马尔可夫链蒙特卡罗(MCMC)的贝叶斯分析;
[*]GLM – Julia的广义线性模型。
[*]Online Learning
[*]GLMNet – GMLNet的Julia包装版,适合套索/弹性网模型;
[*]Clustering -集群数据的基本功能:K-均值,DP-均值等;
[*]SVM – Julia适用的SVM;
[*]Kernal Density – Julia的核密度估计量;
[*]Dimensionality Reduction -降维方法;
[*]NMF - 非负矩阵分解的Julia包;
[*]ANN - Julia人工神经网络;
[*]Mocha – 受Caffe启发,Julia的深度学习框架;
[*]XGBoost – Julia中的eXtreme Gradient Boosting 包;
[*]ManifoldLearning – 用于流形学习和非线性降维的Julia组件;
[*]MXNet - 轻量级、便携式、灵活的分布式/深度学习系统,可对动态的、突变数据流调度部署,同时也支持Python、R、Julia、Go、Javascript 等编程语言。
[*]Merlin - 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的假设检验;
[*]Gadfly – Julia 灵活的统计制图法;
[*]Stats – Julia的统计图检验;
[*]RDataSets - 用于装载许多R中可用数据集的Julia包;
[*]DataFrames – 处理列表数据的Julia库;
[*]Distributions - 概率分布和相关函数的Julia包;
[*]Data Arrays - 允许缺失值的数据结构;
[*]Time Series – Julia的时间序列工具包;
[*]Sampling - Julia的基本采样算法。

其他项/展示

[*]DSP -数字信号处理(滤波,周期图,频谱图,窗函数);
[*]JuliaCon Presentations – JuliaCon的演示文稿;
[*]SignalProcessing – Julia写的信号处理工具;
[*]Images – Julia的图像库。
以上为“史上最全机器学习资料(上)”的全部内容,敬请期待下一节。
编译自:https://github.com/josephmisiti/awesome-machine-learning
译者:刘崇鑫   校对:王殿进
原文链接:史上最全的机器学习资料(上)-博客-云栖社区-阿里云

三九金服 发表于 2023-9-13 13:06:39

Python > Java > c++
机器学习最重要的几点在于,数据预处理、模型构建与训练、模型的部署与服务提供。
数据预处理:Python/Java/Scala配上Spark非常顺手和快捷
模型构建与训练:目前的大多数机器学习和深度学习框架都是用Python作为基础构建语言,其他语言也有很多框架,但是快速的构建模型,快速的进行各种验证,Python有显著的优势。
模型的部署与服务提供:Serving方面还是用c++和Java为主(效率考虑),使用python训练出来的模型,其实有很多办法可以让其他语言进行调用。而且一些框架本身也提供原生的方法将模型保存为独立的文件,然后再用其他语言load进来。如TensorFlow1.1开始有的官方Java API,就可以直接load保存的模型,进行预测。

hldcgaxm 发表于 2023-9-13 13:07:03

取决于你希望做一些什么:
- 机器学习的底层优化:C/C++,适当学习一些assembly和intrinsics。
- 机器学习框架和算法的开发优化:C/C++,CUDA。根据工作的侧重可能需要了解OpenCL,OpenGL,甚至HDL,但是这些都是bonus。
- 工业级别的分布式系统:依然是C/C++,了解分布式系统的知识比如说MPI,Spark,等等。
- 机器学习模型的设计研究:Python 加上一两个机器学习的框架,最好还是要学一些C/C++。
- 机器学习在前端的应用:Python,java(Android),Obj-C(iOS),但是这个其实基本上和机器学习没有太大关系。
- 机器学习在大量传统公司当中的应用:他们以前用什么语言就什么语言。。。
另外,作为面试官的话我会根据你的背景和偏好选择C++和Python之一。个人把这两个列为必须要会一门的语言。

崖藤 发表于 2023-9-13 13:07:36


[*] Python:下可写爬虫爬数据,可写脚本做数据预处理; 上可调用scikit-learn等机器学习框架,以及tensorflow,theano,mxnet等深度学习框架。
[*] 如果是放在线上的程序的话,一般会用c++ 或者java。个人推荐java,用java处理文本还是比较方便的。
[*]时间有限的话可以先学java,python,学会用一种机器学习和深度学习框架。
页: [1]
查看完整版本: 机器学习工程师需要掌握哪些编程语言?