- Memungkinkan Anda untuk menulis kode dalam bahasa yang sudah dikenal, tetapi pada saat yang sama menggunakan fungsi yang hanya ada dalam bahasa lain.
- Memungkinkan kolaborasi langsung dengan kolega yang membuat program dalam bahasa lain.
- Itu memungkinkan untuk bekerja dengan dua bahasa dan akhirnya belajar untuk menjadi fasih di dalamnya.
Apa yang kita butuhkan
Untuk bekerja, Anda membutuhkan komponen ini:
- R dan Python, tentu saja.
- IDE RStudio (Anda dapat melakukan ini di IDE lain, tetapi di RStudio lebih mudah).
- Manajer lingkungan Python favorit Anda (saya menggunakan conda di sini).
- Paket
rmarkdown
danreticulate
dipasang di R.
Saat menulis dokumen R Markdown, kami akan bekerja di RStudio, tetapi pada saat yang sama menavigasi antara cuplikan kode yang ditulis dalam R dan Python. Saya akan menunjukkan beberapa contoh sederhana.
Menyiapkan lingkungan Python
Jika Anda terbiasa dengan pemrograman dengan Python, maka Anda tahu bahwa pekerjaan apa pun yang dilakukan dengan Python harus mengacu pada lingkungan tertentu yang berisi semua paket yang diperlukan untuk pekerjaan tersebut. Ada banyak cara untuk mengelola paket dengan Python, dua yang paling populer adalah virtualenv dan conda. Di sini saya mengasumsikan bahwa kami menggunakan conda dan diinstal sebagai pengelola lingkungan Python.
Anda dapat menggunakan paket reticulate di R untuk mengatur lingkungan conda melalui baris perintah R jika Anda suka (menggunakan fitur seperti
conda_create()
), tetapi sebagai programmer Python biasa, saya lebih suka mengatur lingkungan saya secara manual.
Misalkan kita membuat lingkungan conda bernama
r_and_python
dan menginstal ke dalamnya
pandas
dan
statsmodels
... Jadi perintah di terminal:
conda create -name r_and_python conda activate r_and_python conda install pandas conda install statsmodels
Setelah menginstal
pandas
,
statsmodels
(dan paket lain yang mungkin Anda perlukan), pengaturan lingkungan selesai. Sekarang jalankan info conda di terminal dan pilih jalur ke lingkungan Anda. Anda akan membutuhkannya di langkah berikutnya.
Menyiapkan proyek R Anda untuk bekerja dengan R dan Python
Kami akan memulai proyek R di RStudio, tetapi kami ingin dapat menjalankan Python di proyek yang sama. Untuk memastikan bahwa kode Python berjalan di lingkungan yang kita inginkan, kita perlu mengatur variabel lingkungan sistem
RETICULATE_PYTHON
untuk Python yang dapat dieksekusi di lingkungan itu. Ini akan menjadi jalur yang Anda pilih di bagian sebelumnya, diikuti oleh
/bin/python3
.
Cara terbaik untuk memastikan bahwa variabel ini disetel secara permanen di proyek Anda adalah dengan membuat file teks bernama dalam proyek
.Rprofile
dan menambahkan baris ini ke dalamnya.
Sys.setenv(RETICULATE_PYTHON=”path_to_environment/bin/python3")
Ganti jalur ke lingkungan dengan jalur yang Anda pilih di bagian sebelumnya. Simpan file
.Rprofile
dan mulai ulang sesi R. Setiap kali Anda memulai ulang sesi atau proyek, itu dimulai
.Rprofile
, menyiapkan lingkungan Python Anda. Jika Anda ingin menguji ini, Anda dapat menjalankan baris Sys.getenv ("RETICULATE_PYTHON").
Menulis Kode - Contoh Pertama
Sekarang Anda dapat mengatur dokumen R Markdown dalam proyek Anda
.Rmd
dan menulis kode dalam dua bahasa berbeda. Pertama, Anda perlu memuat perpustakaan reticulate di bagian pertama kode Anda.
```{r} library(reticulate) ```
Sekarang, ketika Anda ingin menulis kode Python, Anda dapat membungkusnya dengan tanda kutip belakang normal, tetapi menandainya sebagai potongan kode Python dengan
{python}
, dan ketika Anda ingin menulis dalam R, gunakan
{r}
.
Untuk contoh pertama kita, misalkan Anda menjalankan model Python pada kumpulan data nilai ujian siswa.
```{python} import pandas as pd import statsmodels.api as sm import statsmodels.formula.api as smf # obtain ugtests data url = “http://peopleanalytics-regression-book.org/data/ugtests.csv" ugtests = pd.read_csv(url) # define model model = smf.ols(formula = “Final ~ Yr3 + Yr2 + Yr1”, data = ugtests) # fit model fitted_model = model.fit() # see results summary model_summary = fitted_model.summary() print(model_summary) ```
Ini bagus, tetapi katakanlah Anda harus keluar dari pekerjaan Anda karena sesuatu yang lebih mendesak dan menyerahkannya kepada kolega Anda, programmer R. Anda berharap dapat mendiagnosis model tersebut.
Jangan takut. Anda dapat mengakses semua objek python yang telah Anda buat dalam daftar umum yang disebut py. Jadi jika blok R dibuat di dalam dokumen R Markdown Anda, rekan kerja akan memiliki akses ke parameter model Anda:
```{r} py$fitted_model$params ```
atau beberapa sisa makanan pertama:
```{r} py$fitted_model$resid[1:5] ```
Sekarang Anda dapat dengan mudah melakukan beberapa diagnostik pada model, seperti memplot residual model kuantitatif-kuantitatif Anda:
```{r} qqnorm(py$fitted_model$resid) ```
Menulis kode - contoh kedua
Anda mengurai beberapa data penanggalan Python dan membuat bingkai data panda dengan semua data di dalamnya. Untuk mempermudah, mari muat data dan lihat:
```{python} import pandas as pd url = “http://peopleanalytics-regression-book.org/data/speed_dating.csv" speed_dating = pd.read_csv(url) print(speed_dating.head()) ```
Anda sekarang telah menjalankan model regresi logistik sederhana dengan Python untuk mencoba dan mengaitkan solusi des dengan beberapa variabel lain. Namun, Anda memahami bahwa data ini sebenarnya hierarkis dan individu yang sama dapat memiliki banyak kenalan.
Jadi Anda tahu bahwa Anda perlu menjalankan model regresi logistik efek campuran, tetapi Anda tidak dapat menemukan program Python yang melakukannya!
Dan sekali lagi, jangan takut, kirim proyek ke rekan kerja dan dia akan menulis solusinya di R.
```{r} library(lme4) speed_dating <- py$speed_dating iid_intercept_model <- lme4:::glmer(dec ~ agediff + samerace + attr + intel + prob + (1 | iid), data = speed_dating, family = “binomial”) coefficients <- coef(iid_intercept_model)$iid ```
Sekarang Anda bisa mendapatkan kodenya dan melihat peluangnya. Dimungkinkan juga untuk mengakses objek Python R di dalam objek r generik.
```{python} coefs = r.coefficients print(coefs.head()) ```
Kedua contoh ini menunjukkan bagaimana Anda dapat dengan mulus menavigasi antara R dan Python dalam dokumen R Markdown yang sama. Jadi lain kali Anda berpikir tentang mengerjakan proyek lintas bahasa, pikirkan tentang menjalankan semua langkah dalam R Markdown. Hal ini dapat menghemat banyak kerumitan untuk beralih antara dua bahasa dan membantu menyimpan semua pekerjaan Anda di satu tempat sebagai narasi berkelanjutan.
Anda dapat melihat dokumen R Markdown selesai dibangun di sekitar integrasi bahasa - dengan potongan R dan Python dan objek bergerak di antara mereka - diposting di sini . Repositori Github dengan kode sumber ada di sini .
Contoh data dalam dokumen ini dari my Referensi Pemodelan Regresi Analisis Orang .
Profesi dan kursus lainnya
PROFESI
KURSUS
- Profesi pengembang Java
- Profesi pengembang frontend
- Pengembang Web Profesi
- Profesi Ethical hacker
- Profesi pengembang C ++
- Pengembang Game Unity Profesi
- Profesi pengembang iOS dari awal
- Profesi pengembang Android dari awal
KURSUS
- Kursus Machine Learning
- Kursus Lanjutan "Machine Learning Pro + Deep Learning"
- «Python -»
- JavaScript
- « Machine Learning Data Science»
- DevOps