0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

2018年的7大最好的Python库

DPVg_AI_era 来源:lq 2019-01-06 09:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者根据每周发布总结的系列文章,汇总了2018年针对数据科学家/AI的最佳库、repos、包和工具。本文对其进行了梳理,列举了人工智能和数据科学的七大Python库。

本文作者Favio Vázquez从2018年开始发布《数据科学和人工智能每周文摘:Python & R》系列文章,为数据科学家介绍最好的库、repos、packages以及工具。

一年结束,作者列出了2018年的7大最好的Python库,这些库确实地改进了研究人员的工作方式。

7. AdaNet ———快速灵活的AutoML框架

https://github.com/tensorflow/adanet

AdaNet是一个轻量级的、可扩展的TensorFlow AutoML框架,用于使用AdaNet算法训练和部署自适应神经网络[Cortes et al. ICML 2017]。AdaNet结合了多个学习子网络,以减轻设计有效的神经网络所固有的复杂性。

这个软件包将帮助你选择最优的神经网络架构,实现一种自适应算法,用于学习作为子网络集合的神经架构。

你需要了解TensorFlow才能使用这个包,因为它实现了TensorFlow Estimator,但这将通过封装训练、评估、预测和导出服务来帮助你简化机器学习编程

你可以构建一个神经网络的集合,这个库将帮助你优化一个目标,以平衡集合在训练集上的性能和将其泛化到未见过数据的能力之间的权衡。

安装

安装adanet之前需将TensorFlow升级到1.7或以上:

$pipinstall"tensorflow>=1.7.0"

从源代码安装

要从源代码进行安装,首先需要安装bazel。

下一步,复制adanet和cd到它的根目录:

$gitclonehttps://github.com/tensorflow/adanet&&cdadanet

从adanet根目录运行测试:

$cdadanet$bazeltest-copt//...

确认一切正常后,将adanet安装为pip包。

现在,可以对adanet进行试验了。

importadanet

用法

有关AdaNet的详细用法,请阅读官方教程:

https://github.com/tensorflow/adanet/tree/master/adanet/examples/tutorials

https://ai.googleblog.com/2018/10/introducing-adanet-fast-and-flexible.html?m=1

6. TPOT——一个自动化的Python机器学习工具

https://github.com/EpistasisLab/tpot

之前我介绍过Auto-Keras,这是一个很棒的AutoML库。现在我们有另一个非常有趣的工具——TPOT。

TPOT全称是基于树的pipeline优化工具(Tree-based Pipeline Optimization Tool),这是一个非常棒Python自动机器学习工具,使用遗传编程优化机器学习pipeline。

TPOT可以自动化许多东西,包括生命特性选择、模型选择、特性构建等等。如果你是Python机器学习者,很幸运,TPOT是构建在Scikit-learn之上的,所以它生成的所有代码看起来应该很熟悉。

它的作用是通过智能地探索数千种可能的pipeline来自动化机器学习中最繁琐的部分,找到最适合你的数据的pipeline,然后为你提供最佳的 Python 代码。

它的工作原理如下:

安装

安装TPOT之前,请先阅读教程:

http://epistasislab.github.io/tpot/installing/

然后,运行以下代码:

pipinstalltpot

例子:

首先让我们从基本的Iris数据集开始:

1fromtpotimportTPOTClassifier 2fromsklearn.datasetsimportload_iris 3fromsklearn.model_selectionimporttrain_test_split 4 5#Loadirisdataset 6iris=load_iris() 7 8#Splitthedata 910X_trainX_train,X_test,y_train,y_test=train_test_split(iris.data,iris.target,11train_size=0.75,test_size=0.25)1213#FittheTPOTclassifier1415tpot=TPOTClassifier(verbosity=2,max_time_mins=2)16tpot.fit(X_train,y_train)1718#Exportthepipeline19tpot.export('tpot_iris_pipeline.py')

我们在这里构建了一个非常基本的TPOT pipeline,它将尝试寻找最佳ML pipeline来预测iris.target。然后保存这个pipeline。之后,我们要做的就非常简单了——加载生成的.py文件,你将看到:

1importnumpyasnp 2fromsklearn.kernel_approximationimportRBFSampler 3fromsklearn.model_selectionimporttrain_test_split 4fromsklearn.pipelineimportmake_pipeline 5fromsklearn.treeimportDecisionTreeClassifier 6#NOTE:Makesurethattheclassislabeled'class'inthedatafile 7tpot_data=np.recfromcsv('PATH/TO/DATA/FILE',delimiter='COLUMN_SEPARATOR',dtype=np.float64) 8features=np.delete(tpot_data.view(np.float64).reshape(tpot_data.size,-1),tpot_data.dtype.names.index('class'),axis=1) 9training_features,testing_features,training_classes,testing_classes=10train_test_split(features,tpot_data['class'],random_state=42)11exported_pipeline=make_pipeline(12RBFSampler(gamma=0.8500000000000001),13DecisionTreeClassifier(criterion="entropy",max_depth=3,min_samples_leaf=4,min_samples_split=9)14)15exported_pipeline.fit(training_features,training_classes)16results=exported_pipeline.predict(testing_features)

就是这样。你已经以一种简单但强大的方式为Iris数据集构建一个分类器。

现在我们来看看MNIST的数据集:

1fromtpotimportTPOTClassifier 2fromsklearn.datasetsimportload_digits 3fromsklearn.model_selectionimporttrain_test_split 4 5#loadandsplitdataset 6digitsdigits==load_digitsload_di() 7X_train,X_test,y_train,y_test=train_test_split(digits.data,digits.target, 8train_size=0.75,test_size=0.25) 910#FittheTPOTclassifier11tpot=TPOTClassifier(verbosity=2,max_time_mins=5,population_size=40)12tpot.fit(X_train,y_train)1314#Exportpipeline15tpot.export('tpot_mnist_pipeline.py')

接下来我们再次加载生成的 .py文件,你将看到:

1importnumpyasnp 2fromsklearn.model_selectionimporttrain_test_split 3fromsklearn.neighborsimportKNeighborsClassifier 4#NOTE:Makesurethattheclassislabeled'class'inthedatafile 5tpot_data=np.recfromcsv('PATH/TO/DATA/FILE',delimiter='COLUMN_SEPARATOR',dtype=np.float64) 6features=np.delete(tpot_data.view(np.float64).reshape(tpot_data.size,-1),tpot_data.dtype.names.index('class'),axis=1) 7training_features,testing_features,training_classes,testing_classes= 8train_test_split(features,tpot_data['class'],random_state=42) 9exported_pipeline=KNeighborsClassifier(n_neighbors=4,p=2,weights="distance")10exported_pipeline.fit(training_features,training_classes)11results=exported_pipeline.predict(testing_features)

5. SHAP ——一个解释任何机器模型输出的统一方法

https://github.com/slundberg/shap

解释机器学习模型并不容易。然而,它对许多商业应用程序来说非常重要。幸运的是,有一些很棒的库可以帮助我们完成这项任务。在许多应用程序中,我们需要知道、理解或证明输入变量在模型中的运作方式,以及它们如何影响最终的模型预测。

SHAP (SHapley Additive exPlanations)是一种解释任何机器学习模型输出的统一方法。SHAP将博弈论与局部解释联系起来,并结合了之前的几种方法。

安装

SHAP可以从PyPI安装

pipinstallshap

或conda -forge

condainstall-cconda-forgeshap

用法

有很多不同的模型和方法可以使用这个包。在这里,我将以DeepExplainer中的一个例子为例。

Deep SHAP是深度学习模型中SHAP值的一种高速近似算法,它基于与DeepLIFT的连接,如SHAP的NIPS论文所述(https://arxiv.org/abs/1802.03888)。

下面这个例子可以看到SHAP如何被用来解释MNIST数据集的Keras模型结果:

#thisisthecodefromhttps://github.com/keras-team/keras/blob/master/examples/mnist_cnn.pyfrom__future__importprint_functionimportkerasfromkeras.datasetsimportmnistfromkeras.modelsimportSequentialfromkeras.layersimportDense,Dropout,Flattenfromkeras.layersimportConv2D,MaxPooling2DfromkerasimportbackendasKbatch_size=128num_classes=10epochs=12#inputimagedimensionsimg_rows,img_cols=28,28#thedata,splitbetweentrainandtestsets(x_train,y_train),(x_test,y_test)=mnist.load_data()ifK.image_data_format()=='channels_first':x_train=x_train.reshape(x_train.shape[0],1,img_rows,img_cols)x_test=x_test.reshape(x_test.shape[0],1,img_rows,img_cols)input_shape=(1,img_rows,img_cols)else:x_train=x_train.reshape(x_train.shape[0],img_rows,img_cols,1)x_test=x_test.reshape(x_test.shape[0],img_rows,img_cols,1)input_shape=(img_rows,img_cols,1)x_train=x_train.astype('float32')x_test=x_test.astype('float32')x_train/=255x_test/=255print('x_trainshape:',x_train.shape)print(x_train.shape[0],'trainsamples')print(x_test.shape[0],'testsamples')#convertclassvectorstobinaryclassmatricesy_train=keras.utils.to_categorical(y_train,num_classes)y_test=keras.utils.to_categorical(y_test,num_classes)model=Sequential()model.add(Conv2D(32,kernel_size=(3,3),activation='relu',input_shape=input_shape))model.add(Conv2D(64,(3,3),activation='relu'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(128,activation='relu'))model.add(Dropout(0.5))model.add(Dense(num_classes,activation='softmax'))model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizers.Adadelta(),metrics=['accuracy'])model.fit(x_train,y_train,batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(x_test,y_test))score=model.evaluate(x_test,y_test,verbose=0)print('Testloss:',score[0])print('Testaccuracy:',score[1])

更多示例:

https://github.com/slundberg/shap#sample-notebooks

4. Optimus——使用 Python 和 Spark 轻松实现敏捷数据科学工作流

https://github.com/ironmussa/Optimus

Optimus V2旨在让数据清理更容易。这个API的设计对新手来说超级简单,对使用pandas的人来说也非常熟悉。Optimus扩展了Spark DataFrame功能,添加了.rows和.cols属性。

使用Optimus,你可以以分布式的方式清理数据、准备数据、分析数据、创建分析器和图表,并执行机器学习和深度学习,因为它的后端有Spark、TensorFlow和Keras。

Optimus是数据科学敏捷方法的完美工具,因为它几乎可以帮助你完成整个过程的所有步骤,并且可以轻松地连接到其他库和工具。

Installation (pip):

pipinstalloptimuspyspark

用法

在这个示例中,你可以从 URL 加载数据,对其进行转换,并应用一些预定义的清理功能:

fromoptimusimportOptimusop=Optimus()#Thisisacustomfunctiondeffunc(value,arg):return"thiswasanumber"df=op.load.url("https://raw.githubusercontent.com/ironmussa/Optimus/master/examples/foo.csv")df.rows.sort("product","desc").cols.lower(["firstName","lastName"]).cols.date_transform("birth","new_date","yyyy/MM/dd","dd-MM-YYYY").cols.years_between("birth","years_between","yyyy/MM/dd").cols.remove_accents("lastName").cols.remove_special_chars("lastName").cols.replace("product","taaaccoo","taco").cols.replace("product",["piza","pizzza"],"pizza").rows.drop(df["id"]<7)    .cols.drop("dummyCol")    .cols.rename(str.lower)    .cols.apply_by_dtypes("product",func,"string", data_type="integer")    .cols.trim("*")    .show()

你可以将这个表格

转换为这样:

是不是很酷?这个库还可以做更多事情,具体请阅读:

https://www.hioptimus.com/

3. spacy——使用Python和Cython的工业级自然语言处理

https://spacy.io/

spaCy旨在帮助你完成实际的工作——构建真实的产品,或收集真实的见解。这个库尊重你的时间,尽量避免浪费。它易于安装,而且它的API简单而高效。spaCy被视为自然语言处理的Ruby on Rails。

spaCy是为深度学习准备文本的最佳方法。它与TensorFlow、PyTorch、Scikit-learn、Gensim以及Python强大的AI生态系统的其他部分无缝交互。使用spaCy,你可以很容易地为各种NLP问题构建语言复杂的统计模型。

安装

pip3installspacy$python3-mspacydownloaden

这里,我们还下载了英语语言模型。你可以在这里找到德语,西班牙语,意大利语,葡萄牙语,法国语等版本的模型:

https://spacy.io/models/

下面是主页面的一个示例:

#python-mspacydownloaden_core_web_smimportspacy#LoadEnglishtokenizer,tagger,parser,NERandwordvectorsnlp=spacy.load('en_core_web_sm')#Processwholedocumentstext=(u"WhenSebastianThrunstartedworkingonself-drivingcarsat"u"Googlein2007,fewpeopleoutsideofthecompanytookhim"u"seriously.“IcantellyouveryseniorCEOsofmajorAmerican"u"carcompanieswouldshakemyhandandturnawaybecauseIwasn’t"u"worthtalkingto,”saidThrun,nowtheco-founderandCEOof"u"onlinehighereducationstartupUdacity,inaninterviewwith"u"Recodeearlierthisweek.")doc=nlp(text)#Findnamedentities,phrasesandconceptsforentityindoc.ents:print(entity.text,entity.label_)#Determinesemanticsimilaritiesdoc1=nlp(u"myfriesweresupergross")doc2=nlp(u"suchdisgustingfries")similarity=doc1.similarity(doc2)print(doc1.text,doc2.text,similarity)

在这个示例中,我们首先下载English tokenizer, tagger, parser, NER和word vectors。然后创建一些文本,打印找到的实体、短语和概念,最后确定两个短语的语义相似性。运行这段代码,你会得到:

SebastianThrunPERSONGoogleORG2007DATEAmericanNORPThrunPERSONRecodeORGearlierthisweekDATEmyfriesweresupergrosssuchdisgustingfries0.7139701635071919

2. jupytext

对我来说,jupytext是年度最佳。几乎所有人都在像Jupyter这样的笔记本上工作,但是我们也在项目的更核心部分使用像PyCharm这样的IDE。

好消息是,你可以在自己喜欢的IDE中起草和测试普通脚本,在使用Jupytext时可以将IDE作为notebook在Jupyter中打开。在Jupyter中运行notebook以生成输出,关联.ipynb表示,并作为普通脚本或传统Jupyter notebook 进行保存和分享。

下图展示了这个包的作用:

可点击下方链接查看原文中的GIF展示:

https://heartbeat.fritz.ai/top-7-libraries-and-packages-of-the-year-for-data-science-and-ai-python-r-6b7cca2bf000

安装

pipinstalljupytext--upgrade

然后,配置Jupyter使用Jupytext:

使用jupyter notebook --generate-config生成Jupyter配置

编辑.jupyter/jupyter_notebook_config.py,并附加以下代码:

c.NotebookApp.contents_manager_class="jupytext.TextFileContentsManager"

重启Jupyter,即运行:

jupyternotebook

你可以在这里试试:

https://mybinder.org/v2/gh/mwouts/jupytext/master?filepath=demo

1.Chartify ——让数据科学家很容易创建图表的Python库

https://xkcd.com/1945/

Chartify是Python的年度最佳库。

在Python世界中创建一个像样的图很费时间。幸运的是,我们有像Seaborn之类的库,但问题是他们的plots不是动态的。

然后就出现了Bokeh——这是一个超棒的库,但用它来创造互动情节仍很痛苦。

Chartify建立在Bokeh之上,但它简单得多。

Chartify的特性:

一致的输入数据格式:转换数据所需的时间更少。所有绘图函数都使用一致、整洁的输入数据格式。

智能默认样式:创建漂亮的图表,几乎不需要自定义。

简单API:API尽可能直观和容易学习。

灵活性:Chartify是建立在Bokeh之上的,所以如果你需要更多的控制,你可以使用Bokeh的API。

安装

Chartify可以通过pip安装:

pip3installchartify

用法

假设我们想要创建这个图表:

importpandasaspdimportchartify#Generateexampledatadata=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('month'))print(total_quantity_by_month_and_fruit.head())monthfruitquantity02017-01-01Apple712017-01-01Banana622017-01-01Grape132017-01-01Orange242017-02-01Apple8

现在我们可以把它画出来:

#Plotthedatach=chartify.Chart(blank_labels=True,x_axis_type='datetime')ch.set_title("Stackedarea")ch.set_subtitle("Representchangesindistribution.")ch.plot.area(data_frame=total_quantity_by_month_and_fruit,x_column='month',y_column='quantity',color_column='fruit',stacked=True)ch.show('png')

超级容易创建一个互动的plot。

更多示例:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4827

    浏览量

    106783
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136230
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89569

原文标题:必备!人工智能和数据科学的七大 Python 库

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    官方新品 | 虹科PCAN-Explorer 7发布:带来Python脚本与灵活授权新体验

    虹科PCAN-Explorer7支持Python脚本+授权管理升级在CAN总线技术持续进化的当下,我们始终相信,工具的革新应与技术的前沿同频,更应让复杂的研发与分析工作,回归简洁、高效的本质。虹科
    的头像 发表于 12-05 11:03 176次阅读
    官方新品 | 虹科PCAN-Explorer <b class='flag-5'>7</b>发布:带来<b class='flag-5'>Python</b>脚本与灵活授权新体验

    Python调用API教程

    两个不同系统之间的信息交互。在这篇文章中,我们将详细介绍Python调用API的方法和技巧。 一、用Requests发送HTTP请求 使用Python调用API的第一步是发送HTTP请求,通常
    的头像 发表于 11-03 09:15 321次阅读

    termux如何搭建python游戏

    termux如何搭建python游戏 Termux搭建Python游戏开发环境的完整指南 一、Termux基础环境准备 Termux是一款无需root即可在安卓设备上运行的Linux终端
    发表于 08-29 07:06

    睿思芯科7庆典回顾

    20258月20日,前海的晚风里飘荡着蛋糕香气与欢声笑语——睿思芯科迎来了7周岁生日。从2018一间小小办公室里的数人初创团队,到如今斩获国家高新技术企业、国家专精特新”小巨人“称
    的头像 发表于 08-25 09:54 791次阅读

    linux虚拟环境中调用Linux 版matlab编译的python时出错

    各位大神,能否帮忙解决以下问题,不胜感激。 问题描述:使用linux版的matlab2018b使用mcc -v -W python:CAO_python -T link:lib ... -d
    发表于 07-18 10:40

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据
    发表于 04-10 16:53

    ​如何在虚拟环境中使用 Python,提升你的开发体验~

    。RaspberryPiOS预装了Python3。干扰系统Python的安装可能会给你的操作系统带来问题。安装第三方Python时,请务必使用正确的包管理工具。在Lin
    的头像 发表于 03-25 09:34 628次阅读
    ​如何在虚拟环境中使用 <b class='flag-5'>Python</b>,提升你的开发体验~

    Python在嵌入式系统中的应用场景

    你想把你的职业生涯提升到一个新的水平?Python在嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言,Python的优势在于其简洁的语法、丰富的和快速的开发周期,这使得它在某些嵌入式场景
    的头像 发表于 03-19 14:10 1187次阅读

    Python绘图Matplotlib快速参考手册

     PYTHON
    发表于 02-07 14:04 0次下载

    Python Connector for InterBase连接解决方案

    适用于 InterBase 的 Python 连接器 Python Connector for InterBase 是一种可靠的连接解决方案,用于从 Python 应用程序访问 InterBase
    的头像 发表于 01-22 14:34 705次阅读

    使用Python实现xgboost教程

    装: bash复制代码conda install -c conda-forge xgboost 2. 导入必要的 在你的Python脚本或Jupyter Notebook中,导入必要的
    的头像 发表于 01-19 11:21 2212次阅读

    适用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据

    和 MariaDB 数据服务器以及托管数据服务,以对存储的数据执行创建、读取、更新和删除操作。该解决方案完全实现了 Python DB API 2.0 规范,并作为 Windows、macOS
    的头像 发表于 01-17 12:18 843次阅读
    适用于MySQL和MariaDB的<b class='flag-5'>Python</b>连接器:可靠的MySQL数据连接器和数据<b class='flag-5'>库</b>

    MySQL数据的安装

    MySQL是一个开源免费的关系型数据管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。 MySQL 最流行的关系型数据管理系统,在 WEB 应用方面MySQL是最好
    的头像 发表于 01-14 11:25 857次阅读
    MySQL数据<b class='flag-5'>库</b>的安装

    适用于Oracle的Python连接器:可访问托管以及非托管的数据

    适用于 Oracle 的 Python 连接器 适用于 Oracle 的 Python 连接器是一种可靠的连接解决方案,用于从 Python 应用程序访问 Oracle 数据服务器和
    的头像 发表于 01-14 10:30 739次阅读

    数据事件触发的设置和应用

    数据无论对于生产管理还是很多的实际应用都非常重要。小编这次聊一下数据事件触发的应用。示例使用了postgresql和Python
    的头像 发表于 12-13 15:14 1018次阅读