【大数据初学者必看】当下作为主流热门的Python与R,究竟该怎么选?谁更胜一筹?

Python 与 R 的争锋:大数据初学者该怎样选?

在当下,人工智能的浪潮席卷而来。从 AlphaGo、无人驾驶技术、人脸识别、语音对话,到商城推荐系统,金融业的风控,量化运营、用户洞察、企业征信、智能投顾等,人工智能的应用广泛渗透到各行各业,也让数据科学家们供不应求。Python 和 R 作为机器学习的主流语言,受到了越来越多的关注。数据学习领域的新兵们经常不清楚如何在二者之间做出抉择,本文就语言特性与使用场景为大家对比剖析。

一.Python 和 R 的概念与特性

Python 是一种面向对象、解释型免费开源高级语言。它功能强大,有活跃的社区支持和各式各样的类库,同时具备简洁、易读以及可扩展等优点,在近几年成为高人气的编程语言。

Python 的优势:

1、Python 的使用场景非常多,不仅和 R 一样可以用于统计分析,更广泛应用于系统编程、图形处理、文本处理、数据库编程、网络编程、Web 编程、网络爬虫等,非常适合那些想深入钻研数据分析或者应用统计技术的程序员。

2、目前主流的大数据和机器学习框架对 Python 都提供了很好的支持,比如 Hadoop、Spark、Tensorflow;同时,Python 也有着强大的社区支持,特别是近年来随着人工智能的兴起,越来越多的开发者活跃在 Python 的社区中。

3、Python 作为一种胶水语言,能够和其他语言连结在一起,比如你的统计分析部分可以用 R 语言写,然后封装为 Python 可以调用的扩展类库。

R 语言是一种用来进行数据探索、统计分析和作图的解释型语言,但更像一种数学计算的环境。它模块丰富,为数学计算提供了极为方便的编程方式,特别是针对矩阵的计算。

R 语言的优势:

1、R 语言拥有许多优雅直观的图表,常见的数据可视化的工具包有:

· 交互式图表 rCharts、Plotly,交互时序图 dygraphs,交互树状图 TreeMap

· ggplot2-一个基于图形语法的绘图系统

· lattice-R 语言格子图形

· rbokeh-针对 Bokeh 的 R 语言接口

· RGL-使用了 OpenGL 的 3D 可视化

· Shiny-用于创建交互式应用和可视化的框架

· visNetwork-交互式网络可视化

散点图

时序图

词云图

2、拥有大量专门面向统计人员的实用功能和丰富的数学工具包。自带 base 一 R 的基础模块、mle 一极大似然估计模块、ts 一时间序列分析模块、mva 一多元统计分析模块、survival 一生存分析模块等,同时用户可以灵活使用数组和矩阵的操作运算符,及一系列连贯而又完整的数据分析中间工具。

3、语言简洁上手快,不需要明确定义变量类型。比如下面简简单单三行代码,就能定义一元线性回归,是不是很酷炫:

x <- 1:10 y <- x+rnorm(10, 0, 1) fit <- lm(y ~ x)

同时,R 语言对向量化的支持程度高,通过向量化运算,数据在计算过程中前后不依赖,是一种高度并行计算的实现,也避免了许多循环结构的使用。

当然了,相比于 Python 它也存在着一些劣势。比如内存管理问题,在大样本的回归中,如使用不当就会出现内存不足的情况,但目前 spark 也提供了对 R 的支持,开发者可以使用 sparkR 进行大数据的计算处理。

二.Python 和 R 在文本信息挖掘和时序分析方面的区别

Python 和 R 都有非常强大的代码库,Python 有 PyPi,R 有 CRAN。但两者方向不同,Python 使用的范围更加广泛,涉及到方方面面;R 更专注统计方面,但在数据量大时运行速度很慢。下面我针对数据分析中的两种使用场景来比较 Python 和 R:

1. 文本信息挖掘:

文本信息挖掘的应用非常广泛,例如根据网购评价、社交网站的推文或者新闻进行情感极性分析等。这里我们用例子分析比较一下。

Python 有良好的程序包帮助我们进行分析。比如 NLTK,以及专门针对中文的 SnowNLP,包含了中文分词、词性标注、情感分析,文本分类、TextRank、TF-IDF 等模块。

在用 Python 做情感极性分析时,首先需要将句子分解为单词,这里我们可以使用 Python 中 jieba 分词,使用起来也非常简单:

word=jieba.cut(m,cut_all=False)

然后操作特征提取,可以利用 NLTK 中的 stopwords 先去除停用词。如果有需要,可以对文本进行向量化处理,这里我们可以采用 Bag of Words,选择 TF-IDF 进行基于权重的向量转化,也可以使用 Word2Vec 进行基于相似度的转化。接下来,使用 sklearn 包中的 pca 进行降维:

pca=PCA(n_components=1)

newData=pca.fit_transform(data)

除了 pca,还可以选择使用互信息或者信息熵等其他方法。

之后,我们进行分类算法模型训练和模型评估,可以使用朴素贝叶斯(NaiveBayes),决策树(Decision Tree)等 NLTK 自带的机器学习方法。

使用 R 进行情感极性分析

首先需要对数据进行预处理,安装 Rwordseg/rJava(其中有不少坑)两个包;

进行数据清理清除掉没用的符号后,进行分词:Rwordseg 中的 segmentCN 方法可以对中文进行分词。当然,也可以使用 jiebaR;

接下来构建单词 - 文档 - 标签数据集,去除停用词;

创建文档 - 词项矩阵,可以选择 TermDocumentMatrix,使用 weightTfIdf 方法得到 tf-idf 矩阵;

最后用 e1071 包中的贝叶斯方法进行文本分类,或者可以用 RTextTools 包中的其他机器学习算法来完成分类,其中包含九种算法:BAGGING(ipred:bagging):bagging 集成分类

BOOSTING (caTools:LogitBoost):Logit Boosting 集成分类

GLMNET(glmnet:glmnet):基于最大似然的广义线性回归

MAXENT(maxent:maxent):最大熵模型

NNET(nnet:nnet) :神经网络

RF(randomForest:randomForest):随机森林

SLDA(ipred:slda):scaled 线性判别分析

SVM(e1071:svm) :支持向量机

TREE (tree:tree):递归分类树

2.时序分析:

时间序列分析是根据系统观察得到的时间序列数据,通过曲线拟合和参数估计来建立数学模型的理论和方法,通常用于金融领域、气象预测、市场分析领域等。R 语言拥有许多程序包可用于处理规则和不规则时间序列,因而更有优势。

Python 进行时序分析的时常用 ARIMA(p,d,q) 模型,其中 d 指的是差分项,p 和 q 分别代表自回归项和移动平均项。构建 ARIMA 模型使用最多的就是 statsmodels 模块,该模块可以用来进行时间序列的差分,建模和模型的检验。这里例举一个周期性预测的例子:

下面是一组数据,代表美国某公交公司发布的五十年中每年的乘客相关数据(比如 1950-2000):

data = [9930, 9318, 9595, 9972, 6706, 5756, 8092, 9551, 8722, 9913, 10151, 7186, 5422, 5337, 10649, 10652, 9310, 11043, 6937, 5476, 8662, 8570, 8981, 8331, 8449, 5773, 5304, 8355, 9477, 9148, 9395, 10261, 7713, 6299, 9424,9795, 10069, 10602, 10427, 8095, 6707, 9767, 11136, 11812, 11006, 11528, 9329, 6818, 10719, 10683]

1).首先,使用 pandas 进行处理和存储数据:

data=pd.Series(data)

2).然后需要对数据进行平稳性检验,一般利用单位根检验,常用的方法有 ADF、DFGLS、PP 等等:

Python 中直接用 ADF(data), DFGLS(data) 就可以得出 pvalue 的结果

3).序列平稳性是进行时间序列分析的前提条件,如果上一个步骤显示结果不平稳,就需要对时间序列做平稳性处理,一般用差分法最多:

diff1 = data.diff(2)

其中 diff(object)表示差分的阶数,这里我们使用 2 阶,当然你也可以用 1 阶、3 阶、4 阶等等

4).进行白噪声检验:

value=acorr_ljungbox(data,lags=1)

5).现在,我们的 ARIMA(p,d,q) 中的 d=2,接下来我们进行模型选择。第一步是计算出 p 和 q,首先检查平稳时间序列的自相关图和偏自相关图,通过 sm.graphics.tsa.plot_acf (data) 和 sm.graphics.tsa.plot_pacf(data),然后通过系数情况进行模型选择,可供选择的有 AR,MA,ARMA,ARIMA。

6).模型训练:model=sm.tsa.ARMA(data,(p,d,q)).fit(),此处用 ARMA 模型计算出 p 和 q,从而训练出模型。

用 R 来构建时间序列模型

R 针对时间序列有各式各样的工具包,比如:

library(xts),library(timeSeires),library(zoo)—时间基础包

library(urca)–进行单位根检验

library(tseries)–arma 模型

library(fUnitRoots)–进行单位根检验

library(FinTS)–调用其中的自回归检验函数

library(fGarch)–GARCH 模型

library(nlme)–调用其中的 gls 函数

library(fArma)–进行拟合和检验

library(forecast)—arima 建模

下面我介绍一下 R 语言中 forecast 工具包里面两个很强大的工具:ets 和 auto.arima。用户什么都不需要做,这两个函数会自动挑选一个最恰当的算法去分析数据。比如用 ets 来处理:

fit<-ets(train)

accuracy(predict(fit,12),test)

或者用 auto.arima 处理:

fit<-auto.arima(train)

accuracy(forecast(fit,h=12),test)

除此之外,forecast 包中有针对增长或者降低趋势并且存在季节性波动的时间序列算法 Holt-Winters。Holt-Winters 的思想是把数据分解成三个成分:平均水平(level),趋势(trend),周期性(seasonality)。R 里面一个简单的函数 stl 就可以把原始数据进行分解。

本文主要从各自优势及具体例子中分析了 Python 与 R 两种编程语言。不难看出,二者在“综合实力”上难分伯仲,具体选择哪一种深入学习,依然需要考虑自己实际期望解决的问题、应用的领域等等方面。最后欢迎大家就大数据编程语言相关问题与我沟通交流~

最后,编程资料、学习路线图、源代码、软件安装包等!都可以【点击这里】领取!码文不易,求各位看官动动小手给个关注吧~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 的开发工具有很多种,常用的有 IDLE、PyCharm、VSCode 等。对于初学者来说,建议使用 IDLE 和 VSCode。 IDLE 是 Python 自带的简单 IDE,它很适合初学者练习编写 Python 代码。 VSCode 是微软推出的免费、开源、跨平台的代码编辑器,它具有良好的用户界面和丰富的插件,能满足初学者的大部分需求。 ### 回答2: 初学者学习Python时,可以使用各种不同的开发工具来提高编程效率和方便学习。以下是几个常用的开发工具: 1. Python IDLE:Python自带的集成开发环境,简单易用,适合初学者快速上手。它提供了代码编辑器和交互式解释器,可以直接执行代码并查看结果,帮助理解和调试程序。 2. PyCharm:JetBrains开发的一款强大的Python集成开发环境。它具有丰富的功能和插件,包括代码自动补全、调试器、版本控制等,可以提高编码效率和开发质量。 3. Visual Studio Code:微软提供的轻量级跨平台代码编辑器,支持多种编程语言,包括Python。它具有IntelliSense代码补全、调试器、Git集成等功能,而且可以通过插件扩展更多功能。 4. Jupyter Notebook:一种交互式的编程环境,特别适合用于数据分析和科学计算。它将代码、文档和可视化结果集成在一个网页上,方便展示和分享代码。 无论择哪个开发工具,初学者应该根据自己的需求和喜好来进行择。同时,可以多尝试使用不同的工具,探索更适合自己的学习方式和开发体验。 ### 回答3: 初学者学习Python可以使用许多开发工具来进行编码和调试。以下是几个常用的开发工具推荐: 1. PyCharm:PyCharm是一个强大的Python集成开发环境(IDE),拥有丰富的功能和直观的界面。它提供了自动补全、调试、代码分析和版本控制等功能,使得编码过程更加高效和便捷。 2. Jupyter Notebook:Jupyter Notebook是一种基于Web的交互式开发工具,可以将代码、文档和可视化内容集成在一起。初学者可以在Notebook中逐步编写和运行代码,同时还可以添加注释和说明,便于学习和理解。 3. Visual Studio Code:VS Code是一个轻量级的代码编辑器,支持多种编程语言,包括Python。它具有丰富的插件生态系统,可以根据需要自定义和扩展功能。 4. Anaconda:Anaconda是一个数据科学和机器学习的开发环境,它提供了Python和许多常用的科学计算库的集成。初学者可以安装Anaconda,获得Python和常用库的一站式解决方案。 不论使用哪种工具,初学者应该根据自己的需求和偏好择适合自己的开发环境。重要的是熟悉所工具的基本功能和特性,并且继续学习和掌握Python的语法和编程技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值