美文网首页Python我爱编程
手把手 | 哇!用R也可以跑Python了

手把手 | 哇!用R也可以跑Python了

作者: 大数据文摘 | 来源:发表于2018-04-19 15:29 被阅读56次
    image

    大数据文摘作品

    编译:大茜、钱天培

    R还是Python?

    真是个千古难题!

    如果你主要从事数据分析、统计建模和可视化,R大概是你的不二之选。但如果你还想来搞点深度学习,整个自然语言处理,那你可还真得用Python。

    如果你处于交叉领域,很可能就需要两种语言切换。后果是,写个for loop还出bug真的是家常便饭。报警!

    面对这种困境的绝不止你一个人!最近的KDnuggets Analytics的软件调查中,Python和R位居数据科学和机器学习软件的前两名。

    如果你真的想提高你在数据科学领域的能力,这两种语言你确实都应该学习。

    不过现在好消息来了!

    RStudio开发了一个名为reticulate的包。通过安装包,你现在可以在R上运行Python的安装包和函数了~

    今天文摘菌就来教教你咋用这个reticulate包。

    安装并加载reticulate包

    运行下面的命令来安装这个包、并导入到您的系统中。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    安装reticulate包

    install.packages("reticulate")

    加载reticulate包

    library(reticulate)

    </pre>

    检查您的系统是否安装过Python

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">py_available()</pre>

    返回值为TRUE或FALSE。如果返回的是TRUE,那恭喜你,您的系统已经有Python啦。FALSE的话就得先去装一下Python了。

    在R中导入一个python模块

    您可以使用函数import()来导入特定的包或模块。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    os <- import(“os”)
    os$getcwd()

    </pre>

    上面的命令返回工作目录。

    [1]"C:\Users\DELL\Documents"

    您可以使用os包中的listdir()函数来查看工作目录中的所有文件。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">os$listdir()</pre>

    image

    安装Python包

    第一步:创建新的工作环境;

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">conda_create(“r-reticulate”)</pre>

    第二步:在conda环境下安装“r-reticulate”和“numpy”;

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">conda_install(“r-reticulate”,“numpy”)</pre>

    如果“numpy”已经安装,您不必再次安装这个包。上面的代码只是给个例子而已。

    第三步:加载包。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">numpy <- import(“numpy”)</pre>

    使用numpy数组

    首先建立一个简单的numpy数组

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    y <- array(1:4, c(2, 2))
    x <- numpy$array(y)

    </pre>

      [,1] [,2]
    

    [1,] 1 3
    [2,] 2 4

    将数组进行转置

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">numpy$transpose(x)</pre>

      [,1] [,2]
    

    [1,] 1 2
    [2,] 3 4

    求特征根和特征向量

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">numpy$linalg$eig(x)</pre>

    一些数学函数

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    numpy$sqrt(x)
    numpy$exp(x)

    </pre>

    交互地使用Python

    您可以在R中创建交互式Python控制台。您在Python中创建的对象可在R中使用(反之亦然)。通过使用repl_python()函数,可以使Python和R交互。首先,下载以下程序中使用的数据集:

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    repl_python()

    加载“panda”数据集

    import pandas as pd

    载入数据集

    travel = pd.read_excel(“AIR.xlsx”)

    显示数据集的行列数

    travel.shape

    随机选取数据集中的行数

    travel.sample(n = 10)

    按某一标志分组

    travel.groupby(“Year”).AIR.mean()

    筛选数据个案

    t = travel.loc[(travel.Month >= 6) & (travel.Year >= 1955),:]

    回到R

    exit

    </pre>

    注意:您需要键入“exit”来返回到R会话

    怎样从R中获取在python中创建的对象

    你可以在利用py object获取python里的对象。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">summary(py$t)</pre>

    在这种情况下,我会用R的summary()函数并访问在python中创建的数据集T。此外,您可以使用ggplot2软件包绘制折线图。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    利用ggplot2绘制线图

    library(ggplot2)
    ggplot(py$t, aes(AIR, Year)) + geom_line()

    </pre>

    怎样从Python中获取在R中创建的对象

    您可以使用r object来解决这个问题。

    先在R中创建一个对象:

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">mydata = head(cars, n=15)</pre>

    在Python REPL中调用之前在R中所创建的对象:

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    repl_python()
    import pandas as pd
    r.mydata.describe()
    pd.isnull(r.mydata.speed)
    exit

    </pre>

    使用sklearn包构建Logistic回归模型

    sklearn软件包是python中最受欢迎的机器学习软件包之一,它支持各种统计和机器学习的算法。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">

    repl_python()

    加载包

    from sklearn import datasets
    from sklearn.linear_model import LogisticRegression

    加载数据库

    iris = datasets.load_iris()

    建立logit模型

    model = LogisticRegression()
    model.fit(iris.data, iris.target)

    进行预测

    actual = iris.target
    predicted = model.predict(iris.data)

    模型性能对比矩阵

    print(metrics.classification_report(actual, predicted))
    print(metrics.confusion_matrix(actual, predicted))

    </pre>

    其他有用的函数

    查看python的配置

    运行py_config()命令来查看系统中安装的R的版本。它还能显示anaconda和numpy的详细信息。

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">py_config()</pre>

    image

    检查某个包是否安装

    可以用以下命令来检查“pandas”是否安装:

    <pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; color: rgb(62, 62, 62); font-variant-numeric: normal; font-variant-east-asian: normal; line-height: 25.6px; widows: 1; overflow-x: auto; background-color: rgb(255, 255, 255);">py_module_available(“pandas”)</pre>

    原文链接:

    https://www.r-bloggers.com/run-python-from-r/

    相关文章

      网友评论

        本文标题:手把手 | 哇!用R也可以跑Python了

        本文链接:https://www.haomeiwen.com/subject/cxmwkftx.html