R 还是 Python?
真是个千古难题!
如果你主要从事数据分析, 统计建模和可视化, R 大概是你的不二之选. 但如果你还想来搞点深度学习, 整个自然语言处理, 那你可还真得用 Python.
如果你处于交叉领域, 很可能就需要两种语言切换. 后果是, 写个 for loop 还出 bug 真的是家常便饭. 报警!
面对这种困境的绝不止你一个人! 最近的 KDnuggets Analytics 的软件调查中, Python 和 R 位居数据科学和机器学习软件的前两名.
如果你真的想提高你在数据科学领域的能力, 这两种语言你确实都应该学习.
不过现在好消息来了!
RStudio 开发了一个名为 reticulate 的包. 通过安装包, 你现在可以在 R 上运行 Python 的安装包和函数了~
今天文摘菌就来教教你咋用这个 reticulate 包.
安装并加载 reticulate 包
运行下面的命令来安装这个包, 并导入到您的系统中.
- # 安装 reticulate 包
- install.packages("reticulate")
- # 加载 reticulate 包
- library(reticulate)
检查您的系统是否安装过 Python
py_available()
返回值为 TRUE 或 FALSE. 如果返回的是 TRUE, 那恭喜你, 您的系统已经有 Python 啦. FALSE 的话就得先去装一下 Python 了.
在 R 中导入一个 python 模块
您可以使用函数 import()来导入特定的包或模块.
- os <- import("os")
- os$getcwd()
上面的命令返回工作目录.
[1]"C:\\Users\\DELL\\Documents"
您可以使用 os 包中的 listdir()函数来查看工作目录中的所有文件.
os$listdir()
安装 Python 包
第一步: 创建新的工作环境;
conda_create("r-reticulate")
第二步: 在 conda 环境下安装 "r-reticulate" 和 "numpy";
conda_install("r-reticulate","numpy")
如果 "numpy" 已经安装, 您不必再次安装这个包. 上面的代码只是给个例子而已.
第三步: 加载包.
numpy <- import("numpy")
使用 numpy 数组
首先建立一个简单的 numpy 数组
y <- array(1:4, c(2, 2))
- x <- numpy$array(y)
- [,1] [,2]
- [1,] 1 3
- [2,] 2 4
将数组进行转置
numpy$transpose(x)
- [,1] [,2]
- [1,] 1 2
- [2,] 3 4
求特征根和特征向量
numpy$linalg$eig(x)
一些数学函数
- numpy$sqrt(x)
- numpy$exp(x)
交互地使用 Python
您可以在 R 中创建交互式 Python 控制台. 您在 Python 中创建的对象可在 R 中使用 (反之亦然). 通过使用 repl_python() 函数, 可以使 Python 和 R 交互. 首先, 下载以下程序中使用的数据集:
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
注意: 您需要键入 "exit" 来返回到 R 会话
怎样从 R 中获取在 python 中创建的对象
你可以在利用 py object 获取 python 里的对象.
summary(py$t)
在这种情况下, 我会用 R 的 summary()函数并访问在 python 中创建的数据集 T. 此外, 您可以使用 ggplot2 软件包绘制折线图.
- #利用 ggplot2 绘制线图
- library(ggplot2)
ggplot(py$t, aes(AIR, Year)) + geom_line()
怎样从 Python 中获取在 R 中创建的对象
您可以使用 r object 来解决这个问题.
先在 R 中创建一个对象:
mydata = head(cars, n=15)
在 Python REPL 中调用之前在 R 中所创建的对象:
repl_python()
- import pandas as pd
- r.mydata.describe()
- pd.isnull(r.mydata.speed)
- exit
使用 sklearn 包构建 Logistic 回归模型
sklearn 软件包是 python 中最受欢迎的机器学习软件包之一, 它支持各种统计和机器学习的算法.
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))
其他有用的函数
查看 python 的配
运行 py_config()命令来查看系统中安装的 R 的版本. 它还能显示 anaconda 和 numpy 的详细信息.
py_config()
检查某个包是否安装
可以用以下命令来检查 "pandas" 是否安装:
py_module_available("pandas")
来源: https://yq.aliyun.com/articles/583311