VerticaPy简化了Vertica中的数据探索、数据清理和机器学习。

verticap的Python项目详细描述


:loudspeaker:2020-06-27:VerticaPy是Vertica ML Python的新名称。在

眩晕

PyPI versionLicensePython Version

VerticaPy是一个Python库,具有类似scikit的功能,用于对Vertica中存储的数据进行数据科学项目,利用Vertica的速度和内置的分析和机器学习功能。它支持整个数据科学生命周期,使用“管道”机制顺序化数据转换操作,并提供漂亮的图形选项。

如今,“大数据”是数据科学界的主要话题之一,而数据科学家往往是任何组织的中心。变得更加数据驱动的好处是不可否认的,而且往往是行业生存所必需的。

Vertica是第一个真正的分析柱状数据库,现在仍然是市场上速度最快的数据库。然而,单靠SQL还不够灵活,无法满足数据科学家的需求。

Python很快就成为这个领域中最受欢迎的工具,因为它的高度抽象和令人印象深刻的庞大和不断增长的库集使它具有很大的灵活性。它的可访问性导致了流行和性能良好的api的开发,比如pandas和scikitlearn,以及一个专门的数据科学家社区。不幸的是,Python只能作为一个单节点进程在内存中工作。这个问题导致了分布式编程语言的兴起,但是它们也被限制为内存中的进程,因此,在这个时代,永远无法处理您的所有数据,并且移动数据进行处理的成本也很高。除此之外,数据科学家还必须找到方便的方法来部署他们的数据和模型。整个过程很费时。

^{str}旨在解决所有这些问题。这个想法很简单:VerticaPy没有移动数据进行处理,而是将逻辑引入到数据中。

经过三年的努力,我们很荣幸能为您带来垂直感。

主要优点:

  • 轻松的数据探索。在
  • 快速数据准备。在
  • 在数据库机器学习。在
  • 简单的模型评估。在
  • 模型部署简单。在

安装

要使用pip安装VerticaPy,请执行以下操作:

# Latest release version
root@ubuntu:~$ pip3 install verticapy

# Latest commit on master branch
root@ubuntu:~$ pip3 install git+https://github.com/vertica/verticapy.git@master

要从源目录安装VerticaPy,请从根目录运行以下命令:

^{pr2}$

文件

有关详细的HTML文档,请访问:

https://www.vertica.com/python/documentation_last/

连接到数据库

VerticaPy兼容多个客户端。在

本机客户端(推荐)

importvertica_python# Connection using all the DSN informationconn_info={'host':"10.211.55.14",'port':5433,'user':"dbadmin",'password':"XxX",'database':"testdb"}cur=vertica_python.connect(**conn_info).cursor()# Connection using directly the DSNfromverticapy.utilitiesimportto_vertica_python_format# This function will parse the odbc.ini filedsn="VerticaDSN"cur=vertica_python.connect(**to_vertica_python_format(dsn)).cursor()

ODBC

importpyodbc# Connection using all the DSN informationdriver="/Library/Vertica/ODBC/lib/libverticaodbc.dylib"server="10.211.55.14"database="testdb"port="5433"uid="dbadmin"pwd="XxX"dsn=("DRIVER={}; SERVER={}; DATABASE={}; PORT={}; UID={}; PWD={};").format(driver,server,database,port,uid,pwd)cur=pyodbc.connect(dsn).cursor()# Connection using directly the DSNdsn=("DSN=VerticaDSN")cur=pyodbc.connect(dsn).cursor()

JDBC

importjaydebeapi# Vertica Server Detailsdatabase="testdb"hostname="10.211.55.14"port="5433"uid="dbadmin"pwd="XxX"# Vertica JDBC class namejdbc_driver_name="com.vertica.jdbc.Driver"# Vertica JDBC driver pathjdbc_driver_loc="/Library/Vertica/JDBC/vertica-jdbc-9.3.1-0.jar"# JDBC connection stringconnection_string='jdbc:vertica://'+hostname+':'+port+'/'+databaseurl='{}:user={};password={}'.format(connection_string,uid,pwd)conn=jaydebeapi.connect(jdbc_driver_name,connection_string,{'user':uid,'password':pwd},jars=jdbc_driver_loc)cur=conn.cursor()

快速入门

使用pip命令安装库。在

root@ubuntu:~$ pip3 install verticapy

创建vertica光标。在

fromverticapyimportvertica_conncur=vertica_conn("VerticaDSN").cursor()

创建关系的虚拟数据帧。在

fromverticapyimportvDataFramevdf=vDataFrame("my_relation",cursor=cur)

如果手头没有数据,可以很容易地导入已知的数据集。在

fromverticapy.learn.datasetsimportload_titanicvdf=load_titanic(cursor=cur)

检查您的数据:

vdf.describe()# Outputmin25%50%75%age0.3321.028.039.0body1.079.25160.5257.5fare0.07.895814.454231.3875parch0.00.00.00.0pclass1.01.03.03.0sibsp0.00.00.01.0survived0.00.00.01.0maxuniqueage80.096body328.0118fare512.3292277parch9.08pclass3.03sibsp8.07survived1.02

使用set_option函数打印SQL查询:

set_option("sql_on",True)vdf.describe()# Output## Compute the descriptive statistics of all the numerical columns ##SELECTSUMMARIZE_NUMCOL("age","body","survived","pclass","parch","fare","sibsp")OVER()FROMpublic.titanic

使用VerticaPy,现在可以用几行代码来解决ML问题。在

fromverticapy.learn.model_selectionimportcross_validatefromverticapy.learn.ensembleimportRandomForestClassifier# Data Preparationvdf["sex"].label_encode()["boat"].fillna(method="0ifnull")["name"].str_extract(' ([A-Za-z]+)\.').eval("family_size",expr="parch + sibsp + 1").drop(columns=["cabin","body","ticket","home.dest"])["fare"].fill_outliers().fillna()# Model Evaluationcross_validate(RandomForestClassifier("rf_titanic",cur,max_leaf_nodes=100,n_estimators=30),vdf,["age","family_size","sex","pclass","fare","boat"],"survived",cutoff=0.35)# Outputaucprc_auc1-fold0.98771144278606910.95304659150393392-fold0.99655550146056420.76764853514257213-fold0.99272392165493010.6419135521132449avg0.9923302886340.787536226253std0.003621284640930.12779562393accuracylog_loss1-fold0.9712918660287080.05020525412238712-fold0.9832535885167460.02981677517984573-fold0.9648241206030150.0392745694400433avg0.9731231917160.0397655329141std0.00763442367290.00833079837099precisionrecall1-fold0.960.962-fold0.95569620253164561.03-fold0.96478873239436620.9383561643835616avg0.9601616449750.966118721461std0.003713769123110.025535200301f1-scoremcc1-fold0.96872592820828840.93761194029850752-fold0.98671726755218210.96469710108784693-fold0.95880202873090970.9240569687684576avg0.971415074830.942122003385std0.01155389607530.0168949813163informednessmarkedness1-fold0.93761194029850750.93761194029850752-fold0.97378277153558070.95569620253164563-fold0.91851489454229180.9296324823943662avg0.9433032021250.940980208408std0.02291909542610.0109037699717csi1-fold0.92307692307692312-fold0.95569620253164563-fold0.9072847682119205avg0.928685964607std0.0201579224026

享受吧!在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Docker&SeleniumJava:无法在Docker容器上运行的chrome浏览器中上载图像/文件   在python中运行java命令   Java垃圾收集器异常行为   java java是否根据底层操作系统执行字节码级优化?   java是否可以休眠自定义查询返回映射而不是列表?   java Spring引导RabbitMQ接收器Jackson反序列化到POJO   apache flex在ActionScript3中创建对象相等“HashMap”作为java HashMap   java如何在Eclipse集成中切换JProfiler启动器   缓存JSP页面结果的java最佳实践?   java集成jaxb绑定文件,使用CXF生成基于WSDL的客户端   java为什么在上传操作结束之前,客户端没有检测到HttpServletResponse的PrintWriter内容?   java在接口内创建类和在类内创建接口有什么用   java向文件写入错误Android Studio   java合并多个RealmList并对结果列表排序?   谷歌API视觉java。lang.NoSuchMethodError   java如何使用逗号分别存储每个值,然后将它们存储到单独的数组中?