Julia dan Python lebih baik bersama

 – Beragampengetahuan
6 mins read

Julia dan Python lebih baik bersama – Beragampengetahuan

Oleh: Blog Bogumił Kamiński

Repost dari:

Banyak ilmuwan data yang saya diskusikan mengatakan bahwa mereka menyukai Julia, tetapi
ada beberapa fungsi di Python yang mereka sukai dan inginkan
terus digunakan.

Dalam posting ini, saya ingin menunjukkan bahwa jika Anda berada dalam situasi ini, jawabannya adalah:
tidak apa-apa – Anda dapat bekerja dengan Julia dan tetap menggunakan paket Python yang Anda suka
sebagai bagian dari alur kerja Julia Anda.

Pos diperiksa di bawah Julia 1.8.5 dan Status PyCall.jl 1.95.1,
Conda.jl 1.8.0, PyPlot.jl 2.11.0 dan GLM.jl 1.8.1.

Banyak paket Python (jika tidak sebagian besar) ditulis dalam bahasa lain (seperti
C++) dan Python hanyalah pembungkus di sekitar mereka. Sebagian besar pengguna Python tidak peduli
(atau bahkan memikirkannya) tentang itu – mereka fokus untuk menyelesaikan proyek mereka.

Pendekatan yang sama dapat digunakan di Julia. Secara khusus, paket Julia bisa jadi adil
pembungkus di sekitar beberapa paket Python. Contoh paket populer tersebut adalah:

Ini adalah skrip yang mudah karena yang perlu Anda lakukan hanyalah menginstal paket Julia
dan Anda siap menggunakan paket Python favorit Anda.

Di sini saya akan memberikan contoh dari dokumentasi Matplotlib. saya ingin mereproduksi
Kode python diberikan di sini:

# Python code
fig, ax = plt.subplots(figsize=(5, 2.7))
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2 * np.pi * t)
ax.plot(t, s, lw=2)
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor="black", shrink=0.05))
ax.set_ylim(-2, 2)

Sekarang mari lakukan hal yang sama dengan Julia menggunakan PyPlot.jl:

# Julia code
using PyPlot
fig, ax = plt.subplots(figsize=(5, 2.7))
t = 0.0:0.01:4.99
s = cos.(2 * π * t)
ax.plot(t, s, lw=2)
ax.annotate("local max", xy=(2, 1), xytext=(3, 1.5),
            arrowprops=Dict("facecolor" => "black", "shrink" => 0.05))
ax.set_ylim(-2, 2)

Seperti yang Anda lihat, kodenya hampir identik. Satu-satunya perbedaan yang relevan
ke sintaks. Misalnya ' digantikan oleh " Dan dict melalui Dict.

Kedua kode menghasilkan plot berikut:

Contoh petak

Tidak semua paket Python menyertakan pembungkus Julia. Juga, dalam beberapa kasus Anda bisa
ingin bekerja dengan versi atau konfigurasi paket Python yang berbeda
dari yang disediakan oleh pembungkus. Apakah ini benar? Tidak, ini bukan masalah di
semua:

Anda dapat mengunduh dan menggunakan paket Python apa pun dari Julia.

Ada dua paket Julia yang memungkinkan PyCall.jl ini dan
PythonCall.jl. Kedua paket menawarkan panggilan langsung dan
Sepenuhnya kompatibel dengan Python dari bahasa Julia. Ada beberapa
Perbedaan teknis di antara mereka dijelaskan di sini
Anda dapat memutuskan mana yang Anda suka.

Di bawah ini saya akan memberikan contoh penggunaan PyCall.jl.

Katakanlah Anda suka menggunakan paket statsmodels dari Python dan ingin
menyalin contoh ini dari dokumentasinya:

# Python code
import numpy as np
import statsmodels.api as sm
spector_data = sm.datasets.spector.load()
spector_data.exog = sm.add_constant(spector_data.exog, prepend=False)
mod = sm.OLS(spector_data.endog, spector_data.exog)
res = mod.fit()
print(res.summary())

Izinkan saya menunjukkan cara mereproduksinya selangkah demi selangkah di Julia.

Kami mulai dengan memuat paket:

using PyCall
sm = pyimport("statsmodels.api")

Perhatikan bahwa menggunakan PyCall.jl kita dapat memuat paket Python apa pun menggunakan
pyimport fungsi. Baris kedua mungkin memberikan kesalahan berikut:

julia> sm = pyimport("statsmodels.api")
ERROR: PyError (PyImport_ImportModule
...

Ini bukan masalahnya. Ini hanya informasi bahwa statsmodels .package
tidak diinstal dengan Python. Dalam hal ini, Anda dapat dengan mudah menginstalnya dari
Julia. Lakukan saja:

using Conda
Conda.add("statsmodels")

dan Anda siap untuk pergi. Saat ini sm = pyimport("statsmodels.api") akan bekerja.

Kami siap membangun model di Julia menggunakan pemodelan statistik:

# Julia code
spector_data = sm.datasets.spector.load()
spector_data["exog"] = sm.add_constant(spector_data["exog"], prepend=false)
mod = sm.OLS(spector_data["endog", spector_data["exog"])
res = mod.fit()
res.summary()

dan Anda mendapatkan hasil yang sama seperti pada dokumen model statistik:

PyObject <class 'statsmodels.iolib.summary.Summary'>
"""
                            OLS Regression Results
==============================================================================
Dep. Variable:                  GRADE   R-squared:                       0.416
Model:                            OLS   Adj. R-squared:                  0.353
Method:                 Least Squares   F-statistic:                     6.646
Date:                Fri, 17 Feb 2023   Prob (F-statistic):            0.00157
Time:                        14:41:35   Log-Likelihood:                -12.978
No. Observations:                  32   AIC:                             33.96
Df Residuals:                      28   BIC:                             39.82
Df Model:                           3
Covariance Type:            nonrobust
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
GPA            0.4639      0.162      2.864      0.008       0.132       0.796
TUCE           0.0105      0.019      0.539      0.594      -0.029       0.050
PSI            0.3786      0.139      2.720      0.011       0.093       0.664
const         -1.4980      0.524     -2.859      0.008      -2.571      -0.425
==============================================================================
Omnibus:                        0.176   Durbin-Watson:                   2.346
Prob(Omnibus):                  0.916   Jarque-Bera (JB):                0.167
Skew:                           0.141   Prob(JB):                        0.920
Kurtosis:                       2.786   Cond. No.                         176.
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors
is correctly specified.

Perhatikan bahwa perbedaan kodenya minimal. Sekali lagi saya harus menyesuaikan diri
Sintaks Julia dengan mengubah False TIBA false dan lakukan akses kamus menggunakan
tanda kurung siku seperti pada spector_data["exog"]. Semua hal lainnya identik (dan untuk
untuk alasan ini saya memberikan komentar di atas yang menunjukkan bahasa apa yang digunakan sebaik mungkin
membingungkan).

Namun, Anda mungkin bertanya apakah mungkin menggunakan data dari Python di Julia (atau
data dari Julia dengan Python). Ya – ini juga didukung. Satu-satunya hal untuk
ingat bahwa konversi otomatis nilai antara Python dan Julia sudah selesai
untuk daftar jenis paling umum yang telah ditentukan sebelumnya (seperti larik, kamus).

Biarkan saya memberi contoh bagaimana ini dilakukan dengan memperkirakan regresi yang sama menggunakan
GLM.jl. Yang akan saya lakukan adalah memindahkan data sebagai larik dari Python ke Julia
(Saya memilih kasing ini karena ini yang paling umum digunakan menurut pengalaman saya).

using GLM
lm(spector_data["exog"].to_numpy(), spector_data["endog"].to_numpy())

Dan Anda mendapatkan hasilnya:

LinearModel{GLM.LmResp{Vector{Float64}}, GLM.DensePredChol{Float64,
LinearAlgebra.CholeskyPivoted{Float64, Matrix{Float64}, Vector{Int64}}}}:

Coefficients:
───────────────────────────────────────────────────────────────────
         Coef.  Std. Error      t  Pr(>|t|)   Lower 95%   Upper 95%
───────────────────────────────────────────────────────────────────
x1   0.463852    0.161956    2.86    0.0078   0.132099    0.795604
x2   0.0104951   0.0194829   0.54    0.5944  -0.0294137   0.0504039
x3   0.378555    0.139173    2.72    0.0111   0.0934724   0.663637
x4  -1.49802     0.523889   -2.86    0.0079  -2.57115    -0.42488
───────────────────────────────────────────────────────────────────

Seperti yang Anda lihat, hasilnya sama, kecuali kami kehilangan kolomnya
nama. Alasannya adalah kami menggunakan array untuk mengangkut data dari Python ke
Julia (nama kolom juga bisa dikirim, tapi saya tidak mau
memperumit contoh).

Kesimpulan singkat (tapi sangat kuat) hari ini:

Dari Julia Anda memiliki semua paket Julia dan semua paket Python tersedia untuk digunakan
proyek Anda.

Jika Anda mengetahui beberapa paket dengan Python dan ingin terus menggunakannya di Julia, itu adalah
mudah. Dalam kebanyakan kasus, Anda cukup menyalin-tempel kode Python Anda ke Julia dan melakukannya
penyesuaian sintaks kecil dan selesai.

Saya menemukan interoperabilitas Julia dan Python ini sangat hebat.

Software Terbaru Saat Ini



Aplikasi yang sedang trend saat ini

object oriented programming, programming language, programming adalah, web programming, belajar programming, tournament software, software, software adalah, contoh software, apa itu software, pengertian software, aplikasi, aplikasi penghasil uang, aplikasi bokep, aplikasi video, programming

#Julia #dan #Python #lebih #baik #bersama

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *