Saya baru mulai mengembangkan aplikasi pembelajaran mesin untuk tujuan akademik. Saat ini saya menggunakan R dan melatih diri saya di dalamnya. Namun, di banyak tempat, saya telah melihat orang menggunakan Python .
Apa yang digunakan orang di dunia akademis dan industri, dan apa rekomendasinya?
machine-learning
r
python
Peter Mortensen
sumber
sumber
Jawaban:
Beberapa perbedaan penting yang perlu dipertimbangkan ketika Anda memilih R atau Python satu sama lain:
Jadi, kedua bahasa sama baiknya. Karena itu, tergantung pada domain Anda dan tempat Anda bekerja, Anda harus dengan cerdas memilih bahasa yang tepat. Dunia teknologi biasanya lebih suka menggunakan satu bahasa. Pengguna bisnis (analitik pemasaran, analitik ritel) biasanya menggunakan bahasa pemrograman statistik seperti R, karena mereka sering melakukan prototyping cepat dan membangun visualisasi (yang lebih cepat dilakukan dalam R daripada Python).
sumber
Tidak ada yang seperti "python lebih baik" atau "R jauh lebih baik daripada x".
Satu-satunya fakta yang saya tahu adalah bahwa dalam industri ini banyak orang yang menggunakan python karena itulah yang mereka pelajari di universitas. Komunitas python sangat aktif dan memiliki beberapa kerangka kerja hebat untuk ML dan data mining dll.
Tetapi jujur, jika Anda mendapatkan c programmer yang baik, ia dapat melakukan hal yang sama seperti yang dilakukan orang dalam python atau r, jika Anda mendapatkan programmer java yang baik, ia juga dapat melakukan (hampir) semua yang ada di java.
Jadi tetap dengan bahasa yang Anda sukai.
sumber
Beberapa pemikiran tambahan.
Bahasa pemrograman 'per se' hanya alat. Semua bahasa dirancang untuk membuat beberapa jenis konstruksi lebih mudah dibangun daripada yang lain. Dan pengetahuan dan penguasaan bahasa pemrograman lebih penting dan efektif daripada fitur bahasa itu dibandingkan dengan yang lain.
Sejauh yang saya bisa lihat ada dua dimensi dari pertanyaan ini. Dimensi pertama adalah kemampuan untuk mengeksplorasi, membangun bukti konsep atau model dengan cepat, akhirnya memiliki alat yang cukup untuk mempelajari apa yang sedang terjadi (seperti tes statistik, grafik, alat pengukuran, dll). Jenis kegiatan ini biasanya disukai oleh para peneliti dan ilmuwan data (saya selalu bertanya-tanya apa artinya itu, tetapi saya menggunakan istilah ini untuk definisi yang longgar). Mereka cenderung mengandalkan instrumen yang terkenal dan diverifikasi, yang dapat digunakan untuk bukti atau argumen.
Dimensi kedua adalah kemampuan untuk memperluas, mengubah, meningkatkan atau bahkan membuat alat, algoritma atau model. Untuk mencapai itu, Anda memerlukan bahasa pemrograman yang tepat. Kira-kira semuanya sama. Jika Anda bekerja untuk sebuah perusahaan, daripada Anda banyak bergantung pada infrastruktur perusahaan, budaya internal dan pilihan Anda berkurang secara signifikan. Juga, ketika Anda ingin menerapkan algoritma untuk penggunaan produksi, Anda harus memercayai implementasinya. Dan menerapkan dalam bahasa lain yang tidak Anda kuasai tidak akan banyak membantu Anda.
Saya cenderung menyukai jenis aktivitas pertama ekosistem R. Anda memiliki komunitas yang hebat, seperangkat alat yang sangat besar, bukti bahwa alat ini berfungsi seperti yang diharapkan. Juga, Anda dapat mempertimbangkan Python, Oktaf (untuk beberapa nama), yang merupakan kandidat yang dapat diandalkan.
Untuk tugas kedua, Anda harus berpikir sebelumnya pada apa yang benar-benar Anda inginkan. Jika Anda ingin alat siap produksi yang kuat, maka C / C ++, Java, C # adalah kandidat yang hebat. Saya menganggap Python sebagai warga negara kedua dalam kategori ini, bersama dengan Scala dan teman-teman. Saya tidak ingin memulai perang api, itu pendapat saya saja. Tetapi setelah lebih dari 17 tahun sebagai pengembang, saya cenderung memilih kontrak yang ketat dan pengetahuan saya, daripada kebebasan untuk melakukan apa pun yang Anda pikirkan (seperti yang terjadi dengan banyak bahasa dinamis).
Secara pribadi, saya ingin belajar sebanyak mungkin. Saya memutuskan bahwa saya harus memilih cara yang sulit, yang berarti menerapkan semuanya dari awal sendiri. Saya menggunakan R sebagai model dan inspirasi. Ia memiliki banyak harta di perpustakaan dan banyak pengalaman yang disuling. Namun, R sebagai bahasa pemrograman adalah mimpi buruk bagi saya. Jadi saya memutuskan untuk menggunakan Java, dan tidak menggunakan perpustakaan tambahan. Itu hanya karena pengalaman saya, dan tidak ada yang lain.
Jika Anda punya waktu, hal terbaik yang dapat Anda lakukan adalah meluangkan waktu dengan semua hal ini. Dengan cara ini Anda akan mendapatkan jawaban terbaik untuk diri Anda, cocok untuk Anda. Dijkstra pernah berkata bahwa alat memengaruhi cara Anda berpikir, jadi disarankan untuk mengetahui alat Anda sebelum membiarkan mereka membuat model bagaimana Anda berpikir. Anda dapat membaca lebih lanjut tentang itu di makalahnya yang terkenal bernama The Humble Programmer
sumber
Saya akan menambahkan apa yang dikatakan orang lain sampai sekarang. Tidak ada jawaban tunggal bahwa satu bahasa lebih baik dari yang lain.
Karena itu, R memiliki komunitas yang lebih baik untuk eksplorasi dan pembelajaran data. Ini memiliki kemampuan visualisasi yang luas. Python, di sisi lain, telah menjadi lebih baik dalam menangani data sejak diperkenalkannya panda. Waktu belajar dan pengembangan sangat kurang dalam Python, dibandingkan dengan R (R menjadi bahasa tingkat rendah).
Saya pikir itu pada akhirnya bermuara pada eko-sistem Anda dan preferensi pribadi. Untuk detail lebih lanjut, Anda dapat melihat perbandingan ini di sini .
sumber
Tidak ada bahasa bullet perak yang dapat digunakan untuk memecahkan masing-masing dan setiap masalah terkait data. Pilihan bahasa tergantung pada konteks masalah, ukuran data dan jika Anda bekerja di tempat kerja Anda harus tetap pada apa yang mereka gunakan.
Secara pribadi saya menggunakan R lebih sering daripada Python karena perpustakaan visualisasi dan gaya interaktif. Tetapi jika saya membutuhkan lebih banyak kinerja atau kode terstruktur saya pasti menggunakan Python karena memiliki beberapa perpustakaan terbaik seperti SciKit-Learn, numpy, scipy dll. Saya menggunakan R dan Python dalam proyek-proyek saya secara bergantian.
Jadi jika Anda memulai pekerjaan sains data, saya sarankan Anda untuk mempelajari keduanya dan itu tidak sulit karena Python juga menyediakan antarmuka yang mirip dengan R dengan Pandas .
Jika Anda harus berurusan dengan kumpulan data yang jauh lebih besar, Anda tidak dapat melarikan diri dari sistem ramah lingkungan yang dibangun dengan Java (Hadoop, Pig, Hbase dll).
sumber
Tidak ada bahasa "lebih baik". Saya telah mencoba keduanya dan saya merasa nyaman dengan Python jadi saya bekerja dengan Python saja. Meskipun saya masih belajar hal-hal, tetapi saya belum menemukan hambatan dengan Python sampai sekarang. Hal yang baik tentang Python adalah komunitas terlalu bagus dan Anda bisa mendapatkan banyak bantuan di Internet dengan mudah. Selain itu, saya akan mengatakan pergi dengan bahasa yang Anda suka bukan yang direkomendasikan orang.
sumber
Dalam pengalaman saya, jawabannya tergantung pada proyek yang dihadapi. Untuk penelitian murni, saya lebih suka R karena dua alasan: 1) berbagai perpustakaan dan 2) banyak literatur ilmu data termasuk sampel R.
Jika proyek ini membutuhkan antarmuka interaktif untuk digunakan oleh orang awam, saya merasa R terlalu terbatas. Shiny adalah awal yang baik, tetapi belum cukup fleksibel. Dalam kasus ini, saya akan mulai melihat porting pekerjaan R saya ke Python atau js.
sumber
Masalah yang tidak dapat diatasi oleh semua jawaban lainnya adalah perizinan .
Sebagian besar R perpustakaan indah tersebut adalah GPL (misalnya ggplot2 , data.table ). Ini mencegah Anda dari mendistribusikan perangkat lunak Anda dalam bentuk hak milik.
Meskipun banyak penggunaan perpustakaan tersebut tidak menyiratkan distribusi perangkat lunak (misalnya untuk melatih model offline), GPL dengan sendirinya memikat perusahaan untuk menggunakannya. Setidaknya dalam pengalaman saya.
Di dunia python, di sisi lain, sebagian besar perpustakaan memiliki lisensi distribusi yang ramah bisnis, seperti BSD atau MIT.
Di dunia akademis, masalah perizinan biasanya bukan masalah.
sumber
Tidak banyak menambahkan komentar yang diberikan. Satu-satunya yang mungkin infografis ini membandingkan R vs Python untuk keperluan ilmu data http://blog.datacamp.com/r-or-python-for-data-analysis/
sumber
Salah satu tantangan nyata, saya berhadapan dengan R adalah paket yang berbeda kompatibel dengan versi yang berbeda .. cukup banyak paket R tidak tersedia untuk versi terbaru dari R .. Dan R beberapa kali memberikan kesalahan karena perpustakaan atau paket ditulis untuk yang lebih tua versi..
sumber
Saya belum mencoba R (well, sedikit, tetapi tidak cukup untuk membuat perbandingan yang baik). Namun, berikut adalah beberapa kekuatan Python:
element in a_list
,for element in sequence
,matrix_a * matrix_b
(untuk perkalian matriks), ...sumber
Saya lebih suka Python daripada R karena Python adalah bahasa pemrograman yang lengkap sehingga saya bisa melakukan tugas-tugas pembelajaran mesin ujung ke ujung seperti mengumpulkan data menggunakan server HTTP yang ditulis dengan Python, melakukan tugas-tugas ML tingkat lanjut dan kemudian menerbitkan hasilnya secara online. Ini semua bisa dilakukan dengan Python. Saya benar-benar menemukan R lebih sulit untuk dipelajari dan imbalan untuk belajar Python jauh lebih besar karena dapat digunakan untuk hampir semua tugas pemrograman.
sumber
R: R adalah mitra sumber terbuka. yang secara tradisional telah digunakan dalam bidang akademik dan penelitian. Karena sifatnya yang open source, teknik terbaru bisa dirilis dengan cepat. Ada banyak dokumentasi yang tersedia melalui internet dan ini merupakan pilihan yang sangat hemat biaya. Python: Dengan originasi sebagai bahasa scripting open source, penggunaan Python telah berkembang seiring waktu. Hari ini, itu perpustakaan olahraga (numpy, scipy dan matplotlib) dan fungsi untuk hampir semua operasi statistik / bangunan model yang mungkin ingin Anda lakukan. Sejak diperkenalkannya panda, panda menjadi sangat kuat dalam operasi data terstruktur.
Kode Python
Impor Perpustakaan
Impor perpustakaan lain yang diperlukan seperti panda, numpy ...
dari sklearn import linear_model
Muat dataset Train dan Test
Identifikasi fitur dan variabel respon dan nilai harus berupa array numerik dan numpy
x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets
Buat objek regresi linier
linear = linear_model.LinearRegression ()
Latih model menggunakan set pelatihan dan periksa skor
linear.fit (x_train, y_train) linear.score (x_train, y_train)
Koefisien persamaan dan Intercept
print ('Koefisien: \ n', linear.coef_) print ('Intercept: \ n', linear.intercept_)
Prediksi Output
diprediksi = linear.predict (x_test) R Code
Muat dataset Train dan Test
Identifikasi fitur dan variabel respon dan nilai harus berupa array numerik dan numpy
x_train <- input_variables_values_training_datasets y_train <- target_variables_values_training_datasets x_test <- input_variables_values_test_datasets x <- cbind (x_train, y_train)
Latih model menggunakan set pelatihan dan periksa skor
ringkasan <- lm (y_train ~., data = x) (linear)
Prediksi Output
prediksi = prediksi (linear, x_test)
sumber
Saya tidak berpikir Python memiliki GUI titik-klik yang mengubahnya menjadi SPSS dan SAS. Bermain-main dengan itu benar-benar menyenangkan.
sumber
Saya mendapat gambar ini di pos yang tertaut. Setiap kali saya ragu menggunakan python atau R, saya melihatnya dan terbukti sangat berguna.
sumber