为什么有了SAS,WEKA等功能强大的数据分析挖掘软件,还需要R,PYTHON?

回复内容:

为什么有了R和python,还需要SAS和WEKA。。。说得好像SAS、SPSS不要钱似的……

说得好像SAS、SPSS除了做数据分析还可以做界面做服务分发出去似的……

说得好像Python只能做数据分析似的……

说得好像Python就没有功能类似WEKA的模块似的……

说得好像R没啥库可以用似的……

说得好像做数据分析不用SAS之类就是耍流氓似的……

……

算了吐槽结束……我就不加入大家吐槽的大军了。
我觉得各有所长吧。
首先,Python的自然语言式的代码真的很适合维护和阅读(那群科学家又不是程序猿,你让他们看什么C系列,Java就跟让他们证明哥德巴赫猜想一样),但是掣肘于其无比慢的速度(C,Fortran扩展大法好)。
其次,Python作为一种通用的,高级语言,基于Python众多的第三方库和程序API,在和外部环境进行数据交换的时候具有很大的优势,举个例子,许许多多的CAE软件都有Python接口,这个大大提高了自动化效率。
最后,Python作一个开源的语言,相比于MATLAB,真的是很便宜(虽然MATLAB具有很多很神奇的优化),而且Python也被国外许许多多研究机构所使用。这也是Python在科学计算领域独占一席的原因。

当然,Python也有很多槽点,比如Python没有仿真库,计算速度还是不够快,但是作为典型的胶水语言,Python做的已经很不错了。SAS员工,数据管理部门,利益相关啊。

我猜你们说的是SAS Base,和在SAS Base或者WebStudio上运行的proc

宣传啊,还是不够。

SAS Base在整个产品线里挺核心的,但是,随便一个方案里面大概会有几十倍其他的应用。

大型企业里面不会有人把数据都规规矩矩整理好了放到你面前请您跑PROC的,一般情况是:

要分析用户地址,年龄,性别分布:

30个数据源,异构,比如其中有10个DB2, 两个Oracle,1个Excel,7个txt,其中Excel是个Web连接,txt有三个在共享磁盘上,4个在DVD上,正走EMS往中心寄。

你开开心心打开这30个数据源,TMD每个表的结构都不一样,还有用拼音做列名的,还有fu建人用错误的拼音做列名的。

你给每个数据源的owner打电话要来表定义,仔细探查每个表,找出所有的地址列,定义了一个复杂的job来做数据导入。

job失败,提示年龄插入失败,一看,Excel里面用全角写的年龄,甚至还有汉字。
job失败,性别插入失败,G/B/1/0/男/女/F/M不是true/false。
job失败,数据库连接密码过期

在心里问候了一万遍数据源后,拿到了抽取后的数据,先抽样看看大致分布。

60%的性别是missing,年龄的中值是0

重新设定Job,根据用户ID进行性别估计,年龄估计。抽样看分布。

地址90% 都是unique

再问候一万遍数据源,找算法切分地址,做正规化,Beijing/首都/帝都/北平/燕京一律整成北京,按照城市/区/街道/门牌号重整输出。

这次抽样终于差不多符合直觉了。

开始调整各种参数来观察数据,每次一个小时。一天过去了。

开始出图,出报告,给老板看。

老板说这个和我的感觉不太一样,为什么?这个阈值为什么设定这么高,我要看低的。

调整参数观察数据,又一天,出报告。老板开会去了。老板回来了,我前几天说了要调低阈值了吗?调回来。

老板这次满意了,好,我们可以根据这份报告调整促销规则了,你把这个报告给销售讲下。

销售表示给你的数据是两个月前的,这个月有很大变化,你重新出个报告呗?

ETL,SAS DM会负责,有DM全系产品提供对数据源元数据的管理,explore;有FederationServer以逻辑视图直接提供对异构数据库的透视功能。QKB直接根据具体领域,具体年份,具体国家,具体语言,比如汉语-新加坡-2015年上半年-客户联系资料进行数据清洗和质量评估

SAS VA,提供可视化的秒级的分析相应速度,支持Web/Mobile,可交互,可钻取。

以上是我接触过的,还有很多其他的例子,比如专门针对银行,保险业的用户管理系统,反欺诈系统,反洗钱,企业内容管理等。

还有刚才刚公布的Viya,新一代的cloud-ready系统。

个人感觉SAS和R的区别在于工业级生产和实验室级生产,真实领域的数据,清洗过程可能是最复杂和最消耗时间和人力的,再牵扯到各种模型的存储,版本化(这个我做的!是所有做过里面被接受最广泛的!)等等,SAS对企业级的支持要很好多,而且你们考虑过人沙特土豪的界面是什么样的?考虑到美国政府508法案对jQuery库选型的影响?所以对我们最极端的测试用户大概就是一个说阿拉伯语的只有一根手指的弱视数据科学家在美国政府用SAS系统进行工作。我上个月刚做完这培训来在产品里提供支持…这些软件都是标准产品,但是很多时候的你的需求并不是标准的。 标准需求用标准产品解决,不标准需求就需要开发来解决。 一切都是基于解决问题,你应该相信,存在就是合理,没有为什么, 就是为了解决问题。sas和weka没有的方法你自己实现一个看下。哪怕就算是有,但是哪怕只是改一点,sas iml/macro什么的都会教做人-对了,sas还是个黑箱子,用的都是黑科技,内部代码算法是看不到的;weka在你说的两个语言里都有port,所以都可以算他们的子集。数据采集清洗分析报告这些步骤在r/python等语言里可以一起做;sas部分可以(因为很多新模型根本没有proc),weka还是算了吧。
然后,你让scala scheme julia这些怎么面对你的问题……体主给我买个sas,我就卸载r首先各有优势和缺点!
针对你的问题,说点后两者的优势:当你发现SAS EM竟然没有随机森林算法的时候就知道R做挖掘真的是很好用;当你在学术或者其它不需要面对很大数据量的工作时,发现SAS能做的R都可以做,干嘛要花这么多钱去买这么一个占硬盘的软件?
等你用过Python的pandas sklearn nltk等库,或者当你用Python实现过算法的时候,你会发现Python真的比前面那些工具爽多了!这个问题反过来问更合理,因为后面的组合明显要强于前面的组合俺一般拿SAS当SQL使,把数据洗成想要的结构或者合适的大小(比如小于1GB),然后再扔到R/MATLAB/python中各取所需。小于100GB的数据SAS单机版本地处理无压力,大于100gb的话扔到公司sever上跑也OK。俺现在接触的数据大小很少有超过100GB的。上一份工作接触得数据也基本没有超过200GB的。

虽然通用的模型SAS基本都有proc,但难免还是会碰到一些奇技淫巧的模型。在SAS中写macro造轮子开发算法实在过于反人类。于是,调用R做一个调包帝就成了一种偷懒捷径。如果SAS中没有相应的模型proc或者macro,我估计matlab或者python中也不会有类似的函数或者库。如果连R也没有相应的包,那么就只有自己用matlab或者python或者c++造轮子了吧。

就回测交易策略这种涉及大量矩阵化向量化操作或者for loop的工作,当然首推matlab或者Python.不过俺发现Python的读入中文时的乱码问题一直得不到很好解决,每次都是老同志遇到新问题。所以以后回测的活就扔给matlab干了。至于python嘛,就回归其码农工具的本质,向用python的交易员学习,试着提高用Python封装CTP的姿势水平。

最后,SAS画图挺丑的,ggplot2是王道

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2301953.html

(0)
上一篇 2025年2月28日 05:53:43
下一篇 2025年2月28日 05:57:02

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 轻松掌握 Java Apache Camel,打造云时代下的集成利器

    php小编香蕉推出了一篇精彩文章,介绍如何轻松掌握 Java Apache Camel,并利用其打造云时代下的集成利器。文章内容涵盖了详细的使用方法和技巧,帮助读者快速掌握相关知识,更好地应用于实际项目开发中。通过这篇文章,读者可以深入了解…

    2025年3月30日
    100
  • Oracle11g和Oracle12c的功能对比

    Oracle数据库是世界上最受欢迎的关系型数据库管理系统之一。近年来,Oracle公司相继推出了Oracle11g和Oracle12c两个版本,它们在功能上有许多共同之处,同时也有一些显著的区别。本文将对这两个版本的功能进行对比分析,并提供…

    2025年3月30日
    100
  • 解锁 Java JSON 处理的强大功能

    php小编苹果为您详细介绍如何解锁Java JSON处理的强大功能。JSON是一种轻量级数据交换格式,广泛应用于Web开发和移动应用程序中。Java通过各种库和工具提供了强大的JSON处理功能,能够快速解析和生成JSON数据,实现数据传输和…

    2025年3月30日
    100
  • java怎么读入一个数据

    在Java中,读取数据的方式取决于数据来源和格式。常见方法包括:- **从控制台读取数据:**使用 Scanner 类读取用户输入的数据。- **从文件中读取数据:**使用 BufferedReader 和 FileReader 类读取文本…

    2025年3月30日
    100
  • sublime怎么输出

    在 Sublime Text 中输出内容有三种方法:在“控制台”面板中使用 print() 语句输出。设置断点并通过调试器的“控制台”选项卡查看输出。重定向 stdout 并通过输出面板查看输出。 如何在 Sublime Text 中输出内…

    2025年3月30日
    100
  • sublime怎么变为中文版

    要将 Sublime Text 切换为中文界面,需要安装中文语言包并启用。步骤如下:1. 安装语言包;2. 在用户设置文件中启用语言包;3. 重新启动 Sublime Text。之后,界面语言将变更为中文。 如何将 Sublime 文本编辑…

    2025年3月30日
    100
  • sublime如何运行json代码

    在 Sublime 中运行 JSON 代码需要:1. 安装 Packages(JSONTools 和 Nodejs);2. 创建一个 .json 文件;3. 编写 JSON 代码;4. 打开 Node.js 控制台;5. 载入 JSON 文…

    2025年3月30日
    100
  • 如何使用Jackson进行Java序列化?

    使用jackson进行java序列化可以分为以下步骤:添加jackson依赖项:com.fasterxml.jackson.core:jackson-databind。创建pojo对象:定义一个包含与json结构对应的getter和sett…

    2025年3月30日
    100
  • mysql中提供了哪几种数据类型

    MySQL 中提供了多种数据类型,包括数值类型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL)、字符类型(CHAR、VARCHAR、TEXT、BLOB)、时间类型(DA…

    2025年3月30日
    100
  • Java函数如何促进物联网和云计算之间的互操作性?

    java 函数通过提供通用语言,作为 iot 和云计算互操作性的桥梁。它可以:转换 iot 设备数据格式。适配通信协议。处理 iot 设备事件。实战案例:一个 java 函数监听 mqtt 代理中的温度数据,将其转换为 json 格式,并存…

    2025年3月30日
    100

发表回复

登录后才能评论