2018年用于数据科学和人工智能的7大Python库
2018年用于数据科学和人工智能的7大Python库
这是根据我的每周摘要编制的今年改变我们生活的最佳图书馆列表。
编者注:这篇文章涵盖了Favio对2018年前7个Python库的选择。明天的帖子将涵盖他今年的前7个R套餐。
介绍
如果你跟着我,你知道今年我开始了一个名为 Weekly Digest for Data Science和AI:Python&R的系列,在那里我强调了最好的库,回购,包和工具,帮助我们成为更好的数据科学家任务。
Heartbeat的优秀人员 赞助了很多这些摘要,他们让我创建了一份最好的图书清单,这些图书馆真正改变或改进了我们今年(及以后)的工作方式。
如果您想阅读过去的摘要,请看一下:
数据科学和人工智能
每周摘要– 数据科学和人工智能的Revue Weekly Digest – FavioVázquez的个人通讯… www.getrevue.co
免责声明:此列表基于我在个人简报中查看的图书馆和软件包。所有这些都在程序员,数据科学家和AI爱好者中以某种方式呈现趋势。其中一些是在2018年之前创建的,但如果它们是趋势,则可以考虑它们。
Python排名前7位
7. AdaNet – 快速灵活的AutoML,具有学习保证。
https://github.com/tensorflow/adanet
AdaNet是一个轻量级和可扩展的TensorFlow AutoML框架,用于使用AdaNet 算法训练和部署自适应神经网络 [ Cortes et al。ICML 2017 ]。 AdaNet 结合了多个学习子网,以减轻设计有效神经网络所固有的复杂性。
该软件包将帮助您选择最佳神经网络架构,实现自适应算法,将神经架构学习为子网集合。
您需要知道TensorFlow才能使用该软件包,因为它实现了TensorFlow Estimator,但这将通过封装培训以及评估,预测和导出服务来帮助您简化机器学习编程。
您可以构建一个神经网络集合,该库将帮助您优化一个目标,以平衡整体在训练集上的表现与其推广到看不见的数据的能力之间的权衡。
安装
adanet
取决于1.7之前的TensorFlow版本中没有的错误修复和增强功能。您必须将TensorFlow软件包安装或升级到至少1.7:
$ pip install“tensorflow> = 1.7.0”
从源代码安装
要从源代码安装,您首先需要 bazel
按照安装说明进行 安装。
接下来克隆 adanet
并 cd
进入其根目录:
$ git clone https://github.com/tensorflow/adanet&& cd adanet
从 adanet
根目录运行测试:
$ cd adanet $ bazel test -c opt // ...
一旦确认一切正常,请安装 adanet
为 pip包 。
你现在准备好试验了 adanet
。
导入adanet
用法
在这里您可以找到关于包使用的两个示例:
tensorflow / adanet
快速灵活的AutoML,具有学习保证。– tensorflow / adanet github.com
您可以在原始博客文章中阅读更多相关信息:
6. TPOT-一种自动化Python机器学习工具,使用遗传编程优化机器学习管道。
https://github.com/EpistasisLab/tpot
之前 我曾谈到Auto-Keras,这是Pythonic世界中一个很棒的AutoML库。好吧,我有另一个非常有趣的工具。
名称是 TPOT (基于树的管道优化工具),它是一个了不起的库。它基本上是一个Python自动化机器学习工具,使用遗传编程优化机器学习管道 。
TPOT可以自动化许多功能,如功能选择,模型选择,功能构建等等。幸运的是,如果你是一个Python机器学习者,TPOT是建立在Scikit-learn之上的,所以它生成的所有代码应该看起来很熟悉。
它的作用是通过智能地探索数千种可能的流水线来自动化机器学习中最繁琐的部分,找到最适合您数据的流水线,然后它为您提供最佳流水线的Python代码,这样您就可以修改流水线从那里。
这是它的工作原理:
有关详细信息,请阅读Matthew Mayo撰写的伟大文章 :
使用AutoML通过TPOT生成机器学习管道
到目前为止,在这一系列的帖子中我们有:这篇文章将采用不同的方法来构建管道。当然……www.kdnuggets.com
和 兰迪奥尔森:
TPOT:用于自动化数据科学的Python工具
作者:Randy Olson,宾夕法尼亚大学。机器学习经常被吹捧为:为计算机提供研究的领域……www.kdnuggets.com
安装
在安装TPOT之前,您确实需要遵循一些说明。他们来了:
安装 –
TPOT如果您希望TPOT使用eXtreme Gradient Boosting型号,您可以选择安装XGBoost。XGBoost是…epistasislab.github.io
之后你可以运行:
pip安装tpot
例子:
首先让我们从基本的Iris数据集开始:
所以在这里我们构建了一个非常基本的TPOT管道,它将尝试寻找最好的ML管道来预测 iris.target
。 然后我们保存该管道。在那之后,我们要做的就是非常简单 – 加载.py
你生成的 文件,你会看到:
导入numpy为np 来自sklearn.kernel_approximation导入RBFSampler 来自sklearn.model_selection import train_test_split 来自sklearn.pipeline导入make_pipeline 来自sklearn.tree导入DecisionTreeClassifier #注意:确保该类在数据文件中标记为“class” tpot_data = np.recfromcsv(\'PATH / TO / DATA / FILE\',delimiter =\'COLUMN_SEPARATOR\',dtype = np.float64) features = np.delete(tpot_data.view(np.float64).reshape(tpot_data.size,-1),tpot_data.dtype.names.index(\'class\'),axis = 1) training_features,testing_features,training_classes,testing_classes = \ train_test_split(features,tpot_data [\'class\'],random_state = 42) exported_pipeline = make_pipeline( RBFSampler(伽玛= 0.8500000000000001), DecisionTreeClassifier(criterion =“entropy”,max_depth = 3,min_samples_leaf = 4,min_samples_split = 9) ) exported_pipeline.fit(training_features,training_classes) results = exported_pipeline.predict(testing_features)
就是这样。您以简单但功能强大的方式为Iris数据集构建了一个分类器。
我们现在去MNIST数据集:
如你所见,我们做了同样的事情!让我们.py
再次加载你生成的 文件,你会看到:
导入numpy为np 来自sklearn.model_selection import train_test_split 来自sklearn.neighbors导入KNeighborsClassifier #注意:确保该类在数据文件中标记为“class” tpot_data = np.recfromcsv(\'PATH / TO / DATA / FILE\',delimiter =\'COLUMN_SEPARATOR\',dtype = np.float64) features = np.delete(tpot_data.view(np.float64).reshape(tpot_data.size,-1),tpot_data.dtype.names.index(\'class\'),axis = 1) training_features,testing_features,training_classes,testing_classes = \ train_test_split(features,tpot_data [\'class\'],random_state = 42) exported_pipeline = KNeighborsClassifier(n_neighbors = 4,p = 2,weights =“distance”) exported_pipeline.fit(training_features,training_classes) results = exported_pipeline.predict(testing_features)
超级轻松有趣。去看一下!尝试一下,请给他们一个明星!
5. SHAP – 解释任何机器学习模型输出的统一方法
https://github.com/slundberg/shap
解释机器学习模型并不总是那么容易。然而,它对于一系列商业应用来说非常重要。幸运的是,有一些很棒的库可以帮助我们完成这项任务。在许多应用程序中,我们需要了解,理解或证明模型中如何使用输入变量,以及它们如何影响最终模型预测。
SHAP (SHapley Additive exPlanations)是一种统一的方法来解释任何机器学习模型的输出。SHAP将博弈论与局部解释联系起来,将几种先前的方法结合起来,并基于期望表示唯一可能的一致且局部准确的加性特征归因方法。
安装
SHAP可以从PyPI安装
pip install shap
或者 conda-forge
conda install -c conda-forge shap
用法
有许多不同的模型和方法来使用该包。在这里,我将从DeepExplainer中举一个例子。
Deep SHAP是深度学习模型中SHAP值的高速近似算法,它基于与DeepLIFT的连接 ,如SHAP NIPS文章中所述,您可以在此处阅读:
[1802.03888]树集合的一致个性化特征归因
摘要:解释树集合方法(如梯度增强机和随机森林)的预测是… arxiv.org
在这里,您可以看到SHAP如何用于解释MNIST数据集的Keras模型的结果:
您可以在此处找到更多示例:
slundberg / shap
一种统一的方法来解释任何机器学习模型的输出。– slundberg / shap github.com
看一看。你会感到惊讶:)
4. Optimus – 使用Python和Spark轻松实现敏捷数据科学工作流程。
https://github.com/ironmussa/Optimus
好的,如此充分的披露,这个图书馆就像我的宝贝。我已经做了很长时间了,我很高兴向你展示第2版。
创建Optimus V2是为了使数据清理变得轻而易举。API的设计对于新手来说非常容易,对于那些来自大熊猫的人来说非常熟悉。Optimus扩展了Spark DataFrame功能,添加 .rows
和 .cols
属性。
使用Optimus,您可以以分布式方式清理数据,准备,分析,创建分析器和绘图,执行机器学习和深度学习,因为在后端我们有Spark,TensorFlow和Keras。
它非常易于使用。这就像大熊猫的演变,有一片dplyr,由Keras和Spark加入。使用Optimus创建的代码可以在本地计算机上运行,只需更改主服务器,它就可以在本地群集或云中运行。
您将看到许多有趣的函数被创建来帮助完成数据科学周期的每一步。
Optimus是数据科学敏捷方法的伴侣,因为它几乎可以帮助您完成流程的所有步骤,并且可以轻松连接到其他库和工具。
如果您想了解有关Agile DS Methodology的更多信息,请查看以下内容:
创建ROI驱动的数据科学实践的敏捷框架
数据科学是一个令人惊叹的研究领域,正在学术界和行业的积极发展… www.business-science.io
安装(点子):
pip install optimuspyspark
用法:
作为一个示例,您可以从URL加载数据,对其进行转换,并应用一些预定义的清理功能:
来自optimus import Optimus op = Optimus()
#这是一个自定义功能 def func(value,arg): 返回“这是一个数字” df = op.load.url(“https://raw.githubusercontent.com/ironmussa/Optimus/master/examples/foo.csv”) DF \ .rows.sort( “产品”, “降序”)\ .cols.lower([ “名字”, “姓氏”])\ .cols.date_transform(“birth”,“new_date”,“yyyy / MM / dd”,“dd-MM-YYYY”) .cols.years_between(“birth”,“years_between”,“yyyy / MM / dd”)\ .cols.remove_accents( “姓氏”)\ .cols.remove_special_chars( “姓氏”)\ .cols.replace( “产品”, “taaaccoo”, “炸玉米饼”)\ .cols.replace( “产品”,[ “PIZA”, “pizzza”], “比萨饼”)\ .rows.drop(DF [ “ID”] <7)\ .cols.drop( “dummyCol”)\ .cols.rename(str.lower)\ .cols.apply_by_dtypes(“product”,func,“string”,data_type =“integer”)\ .cols.trim( “*”)\ 。节目()
你可以改变这个:
进入这个:
很酷,对吗?
你可以在图书馆做更多的事情,所以请查看:
Optimus – 数据清理和探索变得简单
使用Apache Spark和… www.hioptimus.com 使用世界上最快的开源库准备,处理和探索您的大数据
3. spacy – 使用Python和Cython的工业级自然语言处理(NLP)
spaCy旨在帮助您完成实际工作 – 构建真实产品或收集真实见解。图书馆尊重您的时间,并尽量避免浪费它。它易于安装,其API简单而高效。我们喜欢将spaCy视为自然语言处理的Ruby on Rails。
spaCy是为深度学习准备文本的最佳方式。它与TensorFlow,PyTorch,Scikit-learn,Gensim以及Python的其他人工智能生态系统无缝互操作。使用spaCy,您可以轻松地为各种NLP问题构建语言复杂的统计模型。
安装:
pip3安装spacy $ python3 -m spacy download en
在这里,我们还下载了英语模型。您可以在此处找到德语,西班牙语,意大利语,葡萄牙语,法语等模型:
模型概述·spaCy模型文档
spaCy是一个免费的Python自然语言处理开源库。它具有NER,POS标记,依赖… spacy.io
以下是主网页的示例:
#python -m spacy download en_core_web_sm 进口spacy #加载英文标记器,标记器,解析器,NER和单词向量 nlp = spacy.load(\'en_core_web_sm\') #处理整个文件 text =(u“当Sebastian Thrun开始研发自动驾驶汽车时” 你“谷歌在2007年,很少有公司接过他” 你是“认真的。”我可以告诉你们美国主要的非常高级的首席执行官“ 你“汽车公司会动摇我的手而转身离开,因为我不是” “值得一谈,”Thrun说,他现在是“联合创始人兼首席执行官” u“在线高等教育创业公司Udacity,在采访中” 你“本周早些时候重新编写。”) doc = nlp(文字) #查找命名实体,短语和概念 对于doc.ents中的实体: print(entity.text,entity.label_) #确定语义相似性 doc1 = nlp(你“我的薯条超级粗糙”) doc2 = nlp(你“这种令人作呕的薯条”) 相似度= doc1.similarity(doc2) print(doc1.text,doc2.text,similarity)
在这个例子中,我们首先下载英语标记器,标记器,解析器,NER和单词向量。然后我们创建一些文本,最后我们打印发现的实体,短语和概念,然后我们确定两个短语的语义相似性。如果您运行此代码,您会得到:
Sebastian Thrun PERSON 谷歌ORG 2007年日期 美国NORP Thrun PERSON 重新编码ORG 本周早些时候DATE 我的薯条是超级粗糙如此令人作呕的薯条0.7139701635071919
非常简单,非常实用。还有一个spaCy Universe,在那里您可以找到使用或用于spaCy开发的优质资源。它包括独立包,插件,扩展,教育材料,操作实用程序和其他语言的绑定:
Universe·spaCy
本节收集了为spaCy开发的许多优秀资源。它包括独立包,插件…… spacy.io
顺便说一句,使用页面很棒,有很好的解释和代码:
安装spaCy·spaCy用法文档
spaCy是一个免费的Python自然语言处理开源库。它具有NER,POS标记,依赖… spacy.io
看一下visualizers页面。很棒的功能,这里:
可视化器·spaCy用法文档
spaCy是Python中自然语言处理的免费开源库。它具有NER,POS标记,依赖… spacy.io
2. jupytext – Jupyter笔记本作为Markdown文档,Julia,Python或R脚本
对我来说,这是今年的一个套餐。它是我们作为数据科学家所做工作的重要组成部分。我们几乎所有人都在像Jupyter这样的笔记本电脑上工作,但我们也使用像PyCharm这样的IDE作为我们项目的更多硬核部分。
好消息是,您可以在自己喜欢的IDE中草拟和测试的普通脚本在使用Jupytext时在Jupyter中作为笔记本透明地打开。运行在Jupyter笔记本产生的输出, 关联 的 .ipynb
代表性,保存和分享您的研究,或者是一个普通的脚本或作为一个传统的Jupyter笔记本输出。
您可以在下面的gif中看到可以对包执行的工作流程:
安装
安装Jupytext:
pip install jupytext --upgrade
然后,配置Jupyter以使用Jupytext:
-
生成一个Jupyter配置,如果你还没有配置
jupyter notebook --generate-config
-
编辑
.jupyter/jupyter_notebook_config.py
并附加以下内容:
c.NotebookApp.contents_manager_class =“jupytext.TextFileContentsManager”
- 并重新启动Jupyter,即运行:
jupyter笔记本
你可以试试这里:
Binder(测试版)
https://mybinder.org/v2/gh/mwouts/jupytext/master?filepath=demo mybinder.org
1. Chartify – Python库,使数据科学家可以轻松创建图表。
对我来说,对于Python来说,这是今年的赢家。如果你在Python世界,很可能你浪费了大量的时间来创造一个体面的情节。幸运的是,我们拥有像Seaborn这样的图书馆,让我们的生活更轻松。但问题是他们的情节不是动态的。
然后你就拥有了Bokeh–一个令人惊叹的图书馆 – 但是用它制作互动情节可能会让人痛苦不堪。如果您想了解有关数据科学的Bokeh和交互式图的更多信息,请查看William Koehrsen撰写的这些精彩文章 :
使用Python中的Bokeh进行数据可视化,第一部分:入门
将您的可视化游戏提升到 datascience.com
使用Python中的Bokeh进行数据可视化,第二部分:交互
从静态图转向datascience.com
使用Python中的Bokeh进行数据可视化,第III部分:制作完整的仪表板
在Bokeh中创建交互式可视化应用程序 towardsdatascience.com
Chartify建立在Bokeh之上。但它也更简单。
来自作者:
为何使用Chartify?
- 一致的输入数据格式:花费更少的时间来转换数据以使图表正常工作。所有绘图功能都使用一致的整洁输入数据格式。
- 智能默认样式:创建漂亮的图表,只需很少的自定义。
- 简单的API:我们尝试使API尽可能直观且易于学习。
- 灵活性:Chartify建立在Bokeh之上 ,因此如果您需要更多控制,您可以随时使用Bokeh的API。
安装
1. Chartify可以通过pip安装:
pip3安装图表
2.安装chromedriver要求(可选。需要PNG输出):
- 安装Google Chrome。
- 下载chromedriver相应版本的您的操作系统 这里。
- 将可执行文件复制到PATH中的目录。
-
查看PATH变量中的目录:
echo $PATH
-
将chromedriver复制到适当的目录,例如:
cp chromedriver /usr/local/bin
用法
假设我们要创建此图表:
将pandas导入为pd 导入图表 #生成示例数据 data = chartify.examples.example_data()
现在我们已经加载了一些示例数据,让我们做一些转换:
total_quantity_by_month_and_fruit =(data.groupby( [data [\'date\'] + pd.offsets.MonthBegin(-1),\'fruit\'])[\'quantity\']。sum() .reset_index()。rename(columns = {\'date\':\'month\'}) .sort_values( \'月\')) 打印(total_quantity_by_month_and_fruit.head())
月果量 0 2017-01-01 Apple 7 1 2017-01-01香蕉6 2 2017-01-01葡萄1 3 2017-01-01橙色2 4 2017-02-01 Apple 8
现在我们可以绘制它:
#绘制数据 ch = chartify.Chart(blank_labels = True,x_axis_type =\'datetime\') ch.set_title(“堆积区域”) ch.set_subtitle(“表示分发中的变化。”) ch.plot.area( data_frame = total_quantity_by_month_and_fruit, x_column = \'月\', y_column = \'量\', color_column = \'水果\', 堆叠=真) ch.show( \'PNG\')
超级容易创建情节,它是互动的。如果你想要更多的例子来创建这样的东西:
还有更多,检查原始回购:
spotify / chartify
Python库,使数据科学家可以轻松创建图表。– spotify / chartify github.com
感谢Ciencia y Datos的团队 为这些消化提供帮助。
还要感谢阅读本文。我希望你在这里找到一些有趣的东西:)。如果这些文章对您有所帮助,请与您的朋友分享!
如果您有任何疑问,请在Twitter上关注我:
FavioVázquez(@FavioVaz)| Twitter
最新推文来自FavioVázquez(@FavioVaz)。数据科学家。物理学家和计算工程师。我有… twitter.com
和LinkedIn:
到时候那里见 :)
Bio:Favio Vazquez是一位从事数据科学和计算宇宙学研究的物理学家和计算机工程师。他对科学,哲学,编程和音乐充满热情。他是西班牙语数据科学出版物Ciencia y Datos的创始人。他喜欢新的挑战,与优秀的团队合作,并有一些有趣的问题需要解决。他是Apache Spark协作的一部分,帮助MLlib,Core和文档。他喜欢运用他在科学,数据分析,可视化和自动学习方面的知识和专业知识来帮助世界变得更加美好。