
,Python 和 SAS 是两个很常用的数据挖掘工具。Python 开源、免费、有丰富的三方库,一般在互联网公司广泛使用。而SAS需付费,且费用较高,一般互联网公司无法承担,更多的是在银行等传统金融机构中使用,不过这两年由于Python太火,原本使用SAS的也开始逐渐转向Python了。
拥抱开源,越来越多的爱好者造出优秀的Python轮子,比如当下比较流行的万金油模型Xgboost、LightGBM,在各种竞赛的top级方案中均有被使用。而SAS的脚步就比较慢了,对于一些比较新的东西都无法直接提供,所以对于那些使用SAS的朋友,就很难受了。
一直以来很多粉丝问过东哥这个问题:有没有一种可以将Python模型转成SAS的工具?
因为我本身是两个技能都具备的,实际工作中一般都是配合使用,也很少想过进行转换。但是,最近东哥逛技术论坛刚好发现了一个骚 *** 作,借助Python的三方库m2cgen和Python脚本即可完成Python模型到SAS的转换。
m2cgen是什么?
m2cgen是一个Python的第三方库,主要功能就是将Python训练过的模型转换为其它语言,比如 R 和 VBA。遗憾的是,目前m2cgen尚不支持SAS,但这并不影响我们最终转换为SAS。
我们仍然使用m2cgen,需要借助它间接转换成SAS。具体的方案就是先将Python模型转换为VBA代码,然后再将VBA代码更改为 SAS脚本,曲线救国。
如何使用m2cgen?
我直接用一个例子说明下如何 *** 作。
数据我们使用sklearn自带的iris dataset,链接如下:
The Iris Dataset — scikit-learn 111 documentation
下面,演示一下如何将Python的XGBoost模型转成SAS代码。
首先导入所需的库包和数据。
# 导入库
import pandas as pd
import numpy as np
import os
import re
from sklearn import datasets
from xgboost import XGBClassifier
from sklearnmodel_selection import train_test_split
from sklearnmetrics import accuracy_score
import m2cgen as m2c
# 导入数据
iris = datasetsload_iris()
X = irisdata
Y = iristarget
登录后复制
然后,我们划分数据集,直接扔进XGBoost里面,建立base模型。
# 划分数据为训练集和测试集
seed = 2020
test_size = 03
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)
# 训练数据
model = XGBClassifier()
modelfit(X_train, y_train)
登录后复制
然后,再将XGBoost模型转换为VBA。使用m2cgen的export_to_visual_basic方法就可以直接转成VBA了。转换成其他语言脚本也是同理,非常简单。
code = m2cexport_to_visual_basic(model, function_name = 'pred')
登录后复制
核心的骚 *** 作来了!
m2cgen不支持SAS,但我们可以把VBA代码稍加改动,就能变成符合SAS标准的代码了。而这个改动也无需手动一个个改,写一段Python脚本即可实现VBA脚本转换为SAS脚本。
改动的地方不多,主要包括:删除在SAS环境中不能使用的代码,像上面结果中的Module xxx,Function yyy ,Dim var Z As Double,还有在语句结尾加上;,这些为的就是遵循SAS的语法规则。
下面就是转换的Python脚本,可以自动执行上面所说的转换 *** 作。
# 1、移除SAS中不能使用的代码
code = resub('Dim var As Double', '', code)
code = resub('End If', '', code)
# 下面 *** 作将修改成符合SAS的代码
# 2、修改起始
code = resub('Module Model\nFunction pred(ByRef inputVector() As Double) As Double()\n',
'DATA pred_result;\nSET dataset_name;', code)
# 3、修改结尾
code = resub('End Function\nEnd Module\n', 'RUN;', code)
# 4、在结尾加上分号';'
all_match_list = refindall('[0-9]+\n', code)
for idx in range(len(all_match_list)):
original_str = all_match_list[idx]
new_str = all_match_list[idx][:-1]+';\n'
code = codereplace(original_str, new_str)
all_match_list = refindall(')\n', code)
for idx in range(len(all_match_list)):
original_str = all_match_list[idx]
new_str = all_match_list[idx][:-1]+';\n'
code = codereplace(original_str, new_str)
# 用var来替代inputVector
dictionary = {'inputVector(0)':'sepal_length',
'inputVector(1)':'sepal_width',
'inputVector(2)':'petal_length',
'inputVector(3)':'petal_width'}
for key in dictionarykeys():
code = codereplace(key, dictionary[key])
# 修改预测标签
code = resub('MathExp', 'Exp', code)
code = resub('pred = \n', '', code)
temp_var_list = refindall(r"var[0-9]+(\d)", code)
for var_idx in range(len(temp_var_list)):
code = resub(resub('\(', '\(', resub('\)', '\)', temp_var_list[var_idx])), iristarget_names[var_idx]+'_prob', code)
登录后复制
对以上脚本分步解释说明一下。
1、开头、结尾、输出名称
前三个部分非常简单。使用正则表达式删除多余的行,然后将脚本的开头更改为DATA pred_result; \ nSETdataset_name;。
使用过SAS的同学就很熟悉了,pred_result是运行SAS脚本后的输出表名称,dataset_name是我们需要预测的输入表名称。
最后再将脚本的结尾更改为RUN;。
# 移除SAS中不能使用的代码
code = resub('Dim var As Double', '', code)
code = resub('End If', '', code)
# 下面 *** 作将修改成符合SAS的代码
# 修改起始
code = resub('Module Model\nFunction pred(ByRef inputVector() As Double) As Double()\n',
'DATA pred_result;\nSET dataset_name;', code)
# 修改结尾
code = resub('End Function\nEnd Module\n', 'RUN;', code)
登录后复制
2、语句末尾添加分号
为遵循SAS中的语法规则,还需将每个语句的结尾加上;。仍用正则表达式,然后for循环在每一行最后添加字符;即可。
# 在结尾加上分号';'
all_match_list = refindall('[0-9]+\n', code)
for idx in range(len(all_match_list)):
original_str = all_match_list[idx]
new_str = all_match_list[idx][:-1]+';\n'
code = codereplace(original_str, new_str)
all_match_list = refindall(')\n', code)
for idx in range(len(all_match_list)):
original_str = all_match_list[idx]
new_str = all_match_list[idx][:-1]+';\n'
code = codereplace(original_str, new_str)
登录后复制
3、映射变量名称
使用字典将InputVector与变量名称映射到输入数据集中,一次性更改所有InputVector。
# 用var来替代inputVector
dictionary = {'inputVector(0)':'sepal_length',
'inputVector(1)':'sepal_width',
'inputVector(2)':'petal_length',
'inputVector(3)':'petal_width'}
for key in dictionarykeys():
code = codereplace(key, dictionary[key])
登录后复制
4、映射变量名称
最后一步就是更改预测标签。
# 修改预测标签
code = resub('MathExp', 'Exp', code)
code = resub('pred = \n', '', code)
temp_var_list = refindall(r"var[0-9]+(\d)", code)
for var_idx in range(len(temp_var_list)):
code = resub(resub('\(', '\(', resub('\)', '\)', temp_var_list[var_idx])), iristarget_names[var_idx]+'_prob', code)
登录后复制
然后保存sas模型文件。
#保存输出
vb = open('vb1sas', 'w')
vbwrite(code)
vbclose()
登录后复制
最后,为了验证sas脚本是否正确,我们将sas模型的预测结果和Python的结果进行一下对比。
# python 预测
python_pred = pdDataFrame(modelpredict_proba(X_test))
python_predcolumns = ['setosa_prob','versicolor_prob','virginica_prob']
python_pred
# sas 预测
sas_pred = pdread_csv('pred_resultcsv')
sas_pred = sas_prediloc[:,-3:]
sas_pred
(abs(python_pred - sas_pred) > 000001)sum()
登录后复制
可以看到,两个预测的结果基本上一样,基本没问题,我们就可以在sas中跑xgboost模型了。
总结
上面只是个最简单的示例,没有对特征处理。对于复杂的建模过程,比如很多特征工程,那就要对Python脚本进一步调整了。
以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还可领取大量学习资料,内容覆盖Python电子书、教程、数据库编程、Django,爬虫,云计算等等。或是前往编程学习网,了解更多编程技术知识。
python
机器学习
数据挖掘
视频教程-完整的Python和SAS数据分析-大数据
422阅读·0评论·0点赞
2020年5月28日
python 访问sas 逻辑库,SAS | 逻辑库和SAS数据集
460阅读·0评论·0点赞
2021年4月26日
python学习笔记---linux/windows调用sas程序
875阅读·0评论·0点赞
2019年10月24日
python可以代替sas_Python、 R 语言、SAS、SPSS 优缺点比较?(转)
604阅读·0评论·1点赞
2020年12月17日
python 访问sas 逻辑库_SAS编程基础 - 逻辑库和数据集
138阅读·0评论·0点赞
2020年12月9日
服务器部署sas_如何在阿里云SAS上部署WordPress网站
1429阅读·0评论·0点赞
2020年8月29日
python和sas配合使用_太骚了!Python模型完美切换SAS,还能这么玩。。
1963阅读·0评论·2点赞
2021年1月14日
python导入sas数据集_将变量从SAS传递到Python
344阅读·0评论·0点赞
2021年2月3日
python 访问sas 逻辑库_SAS岩论 | 在Jupyter Notebook中使用SAS
429阅读·0评论·0点赞
2020年12月9日
#sas建模-建模入门介绍
2257阅读·0评论·2点赞
2019年9月18日
#sas建模-建模过程介绍
2805阅读·1评论·0点赞
2019年9月18日
python调用sas_SAS日常使用的语句预定的python表达
370阅读·0评论·0点赞
2020年12月8日
python读取sas数据集_SASpy模块,利用Python *** 作SAS
1432阅读·0评论·0点赞
2020年11月26日
python可以代替sas,像SAS一样转置的python数据帧
156阅读·0评论·0点赞
2021年4月27日
sas和python的区别 知乎_银行业为什么喜欢用 sas 而不是 python?
1559阅读·0评论·0点赞
2020年12月9日
python和sas代码编写_如何从SAS到python编写if语句
329阅读·0评论·0点赞
2021年1月29日
saspython知乎_pyt
11 安装所需要的Python库
在Python中,将代码转成可以执行的程序需要安装库pyinstaller。本人的运行环境是macOS ,打开终端然后输入(如果是Windows用户,打开Anaconda Prompt),然后输入如下代码:
(/usr/local/anaconda3) liuxiaowei@MacBookAir python_exe % pip install pyinstaller
1
1
如果网速慢或者安装报错,可以使用下面的代码:
(/usr/local/anaconda3) liuxiaowei@MacBookAir python_exe % pip install --index-url >
1,VBP是VB的工程文件,也就是源代码,需要用Microsoft Visual Basic 60 中文版这个IDE编辑、查看的。所以在没有安装过VB IDE的机器上是不能运行的
2,exe是Microsoft Visual Basic 60 中文版编译生成的最终可执行文件,windows平台都可以运行exe文件
3,在Microsoft Visual Basic 60 中文版里的“文件”菜单中,选“生成工程 项目exe”,就可以制作exe文件了
1你需要用到IronPython
2google搜:
C# call python
即可找到:
在C#中调用python方法
里面解释的很详细了。我就不再啰嗦了。
(此处不给贴地址,请自己用google搜帖子标题,即可找到帖子地址)
AlphaGo都在使用的Python语言,是最接近AI的编程语言。
教育部考试中心近日发布了“关于全国计算机等级(NCRE)体系调整”的通知,决定自2018年3月起,在全国计算机二级考试中加入了“Python语言程序设计”科目。
9个月前,浙江省信息技术课程改革方案已经出台,Python确定进入浙江省信息技术教材,从2018年起浙江省信息技术教材编程语言将会从vb更换为Python。
小学生都开始学Python了,天呐撸,学习Python看完这些准没错。
安利一波书单
Python入门
《Python编程快速上手——让繁琐工作自动化》
作者:美AlSweigart(斯维加特)
Python3编程从入门到实践
亚马逊畅销Python编程图书
本书是一本面向实践的Python编程实用指南。本书不仅介绍了Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的第一部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识,附录部分提供了所有习题的解答。
《“笨办法”学Python(第3版)》
作者:美ZedAShaw
《“笨办法”学Python(第3版)》是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。
《“笨办法”学Python(第3版)》结构非常简单,共包括52个习题,其中26个覆盖了输入/输出、变量和函数三个主题,另外26个覆盖了一些比较高级的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。
《Python编程初学者指南》
作者:美MichaelDawson
《Python编程初学者指南》尝试以轻松有趣的方式来帮助初学者掌握Python语言和编程技能。全书共12章,每一章都会用一个完整的游戏来演示其中的关键知识点,并通过编写好玩的小软件这种方式来学习编程,引发读者的兴趣,降低学习的难度。每章最后都会对该章的知识点进行小结,还会给出一些小练习让读者试试身手。作者很巧妙的将所有编程知识嵌入到了这些例子中,真正做到了寓教于乐。
《数据结构(Python语言描述)》
作者:美KennethALambert(兰伯特)
在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大。Python语言的语法简单,交互性强。用Python来讲解数据结构等主题,比C语言等实现起来更为容易,更为清晰。
本书第1章简单介绍了Python语言的基础知识和特性。第2章到第4章对抽象数据类型、数据结构、复杂度分析、数组和线性链表结构进行了详细介绍,第5章和第6章重点介绍了面向对象设计的相关知识、第5章包括接口和实现之间的重点差异、多态以及信息隐藏等内容,第6章主要讲解继承的相关知识,第7章到第9章以栈、队列和列表为代表,介绍了线性集合的相关知识。第10章介绍了各种树结构,第11章讲解了集和字典的相关内容,第12章介绍了图和图处理算法。每章最后,还给出了复习题和案例学习,帮助读者巩固和思考。
像计算机科学家一样思考Python》
作者:美AllenBDowney
本书按照培养读者像计算机科学家一样的思维方式的思路来教授Python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。并不是一本介绍语言的书,而是一本介绍编程思想的书。和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来引导读者渐入佳境。
Python进阶
Python高级编程(第2版)》
作者:波兰MichaJaworski(贾沃斯基),法TarekZiadé(莱德)
本书基于Python35版本进行讲解,通过13章的内容,深度揭示了Python编程的高级技巧。本书从Python语言及其社区的现状开始介绍,对Python语法、命名规则、Python包的编写、部署代码、扩展程序开发、管理代码、文档编写、测试开发、代码优化、并发编程、设计模式等重要话题进行了全面系统化的讲解。
本书适合想要进一步提高自身Python编程技能的读者阅读,也适合对Python编程感兴趣的读者参考学习。全书结合典型且实用的开发案例,可以帮助读者创建高性能的、可靠且可维护的Python应用。
《Python高性能编程》
作者:美戈雷利克(MichaGorelick),欧日沃尔德(IanOzsvald)
本书共有12章,围绕如何进行代码优化和加快实际应用的运行速度进行详细讲解。本书主要包含以下主题:计算机内部结构的背景知识、列表和元组、字典和集合、迭代器和生成器、矩阵和矢量计算、并发、集群和工作队列等。最后,通过一系列真实案例展现了在应用场景中需要注意的问题。
本书适合初级和中级Python程序员、有一定Python语言基础想要得到进阶和提高的读者阅读
《Python极客项目编程》
作者:美MaheshVenkitachalam
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。
本书通过14个有趣的项目,帮助和鼓励读者探索Python编程的世界。全书共14章,分别介绍了通过Python编程实现的一些有趣项目,包括解析iTunes播放列表、模拟人工生命、创建ASCII码艺术图、照片拼接、生成三维立体图、创建粒子模拟的烟花喷泉效果、实现立体光线投射算法,以及用Python结合Arino和树莓派等硬件的电子项目。本书并不介绍Python语言的基础知识,而是通过一系列不简单的项目,展示如何用Python来解决各种实际问题,以及如何使用一些流行的Python库。
《Python核心编程(第3版)》
作者:美WesleyChun(卫斯理春)
本书是经典畅销图书《Python核心编程(第二版)》的全新升级版本,总共分为3部分。第1部分讲解了Python的一些通用应用,包括正则表达式、网络编程、Internet客户端编程、多线程编程、GUI编程、数据库编程、MicrosoftOffice编程、扩展Python等内容。第2部分讲解了与Web开发相关的主题,包括Web客户端和服务器、CGI和WSGI相关的Web编程、DiangoWeb框架、云计算、高级Web服务。第3部分则为一个补充/实验章节,包括文本处理以及一些其他内容。
本书适合具有一定经验的Python开发人员阅读。
Python机器学习——预测分析核心算法》
作者:美MichaelBowles(鲍尔斯)
在学习和研究机器学习的时候,面临令人眼花缭乱的算法,机器学习新手往往会不知所措。本书从算法和Python语言实现的角度,帮助读者认识机器学习。
本书专注于两类核心的“算法族”,即惩罚线性回归和集成方法,并通过代码实例来展示所讨论的算法的使用原则。全书共分为7章,详细讨论了预测模型的两类核心算法、预测模型的构建、惩罚线性回归和集成方法的具体应用和实现。
《Python机器学习实践指南》
作者:美AlexanderTCombs
机器学习是近年来渐趋热门的一个领域,同时Python语言经过一段时间的发展也已逐渐成为主流的编程语言之一。本书结合了机器学习和Python语言两个热门的领域,通过利用两种核心的机器学习算法来将Python语言在数据分析方面的优势发挥到极致。
全书共有10章。第1章讲解了Python机器学习的生态系统,剩余9章介绍了众多与机器学习相关的算法,包括各类分类算法、数据可视化技术、推荐引擎等,主要包括机器学习在公寓、机票、IPO市场、新闻源、内容推广、股票市场、图像、聊天机器人和推荐引擎等方面的应用。
《精通Python自然语言处理》
作者:印度DeeptiChopra,NisheethJoshi,ItiMathur
自然语言处理是计算语言学和人工智能之中与人机交互相关的领域之一。
本书是学习自然语言处理的一本综合学习指南,介绍了如何用Python实现各种NLP任务,以帮助读者创建基于真实生活应用的项目。全书共10章,分别涉及字符串 *** 作、统计语言建模、形态学、词性标注、语法解析、语义分析、情感分析、信息检索、语篇分析和NLP系统评估等主题。
本书适合熟悉Python语言并对自然语言处理开发有一定了解和兴趣的读者阅读参考。
Python数据科学指南》
作者:印度GopiSubramanian(萨伯拉曼尼安)
60多个实用的开发技巧,帮你探索Python及其强大的数据科学能力
Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言,并成为数据科学家的首选之一。
本书详细介绍了Python在数据科学中的应用,包括数据探索、数据分析与挖掘、机器学习、大规模机器学习等主题。每一章都为读者提供了足够的数学知识和代码示例来理解不同深度的算法功能,帮助读者更好地掌握各个知识点。
本书内容结构清晰,示例完整,无论是数据科学领域的新手,还是经验丰富的数据科学家都将从中获益。
《用Python写网络爬虫》
作者:澳RichardLawson(理查德劳森)
本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中抓取数据的三种方法,提取缓存中的数据,使用多个线程和进程来进行并发抓取,如何抓取动态页面中的内容,与表单进行交互,处理页面中的验证码问题,以及使用Scarpy和Portia来进行数据抓取,并在最后使用本书介绍的数据抓取技术对几个真实的网站进行了抓取,旨在帮助读者活学活用书中介绍的技术。
本书适合有一定Python编程经验,而且对爬虫技术感兴趣的读者阅读。
《贝叶斯思维:统计建模的Python学习法》
作者:美AllenBDowney
这本书帮助那些希望用数学工具解决实际问题的人们,仅有的要求可能就是懂一点概率知识和程序设计。而贝叶斯方法是一种常见的利用概率学知识去解决不确定性问题的数学方法,对于一个计算机专业的人士,应当熟悉其应用在诸如机器翻译,语音识别,垃圾邮件检测等常见的计算机问题领域。
Python自然语言处理》
作者:美StevenBird,EwanKlein,EdwardLoper
自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能够实现人与计算机之间用自然语言进行有效通信的各种理论和方法,涉及所有用计算机对自然语言进行的 *** 作。
《Python自然语言处理》是自然语言处理领域的一本实用入门指南,旨在帮助读者学习如何编写程序来分析书面语言。《Python自然语言处理》基于Python编程语言以及一个名为NLTK的自然语言工具包的开源库,但并不要求读者有Python编程的经验。全书共11章,按照难易程度顺序编排。第1章到第3章介绍了语言处理的基础,讲述如何使用小的Python程序分析感兴趣的文本信息。第4章讨论结构化程序设计,以巩固前面几章中介绍的编程要点。第5章到第7章介绍语言处理的基本原理,包括标注、分类和信息提取等。第8章到第10章介绍了句子解析、句法结构识别和句意表达方法。第11章介绍了如何有效管理语言数据。后记部分简要讨论了NLP领域的过去和未来。
本书的实践性很强,包括上百个实际可用的例子和分级练习。可供读者用于自学,也可以作为自然语言处理或计算语言学课程的教科书,还可以作为人工智能、文本挖掘、语料库语言学等课程的补充读物。
Python数据分析》
作者:印尼IvanIdris
Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式。Python已经成为数据科学家进行数据分析、可视化以及机器学习的一种理想编程语言,它能帮助你快速提升工作效率。
本书将会带领新手熟悉Python数据分析相关领域的方方面面,从数据检索、清洗、 *** 作、可视化、存储到高级分析和建模。同时,本书着重讲解一系列开源的Python模块,诸如NumPy、SciPy、matplotlib、pandas、IPython、Cython、scikit-learn和NLTK等。此外,本书还介绍了数据可视化、信号处理、时间序列分析、数据库、预测性分析和机器学习等主题。通过阅读本书,你将华丽变身数据分析高手。
以上就是关于python代码转化为sas代码全部的内容,包括:python代码转化为sas代码、怎么把python程序变成代码、vb程序转为exe软件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)