Saya melihat berkali-kali dalam deskripsi pekerjaan untuk ilmuwan data yang meminta pengalaman Python / Java dan mengabaikan R. Di bawah ini adalah email pribadi yang saya terima dari ilmuwan data kepala perusahaan yang saya lamar melalui linkedin.
X, Terima kasih telah menghubungkan dan mengekspresikan minat. Anda memiliki Keterampilan Analisis yang baik. Namun, semua ilmuwan data kami harus memiliki keterampilan pemrograman yang baik dalam Java / Python karena kami adalah organisasi internet / seluler dan semua yang kami lakukan adalah online.
Sementara saya menghormati keputusan ilmuwan data kepala, saya tidak bisa mendapatkan gambaran yang jelas tentang apa tugas-tugas yang dapat dilakukan Python yang tidak bisa dilakukan R. Adakah yang bisa peduli untuk menjelaskan? Saya sebenarnya tertarik untuk belajar Python / Java, asalkan saya mendapatkan sedikit lebih detail.
Sunting: Saya menemukan diskusi yang menarik tentang Quora. Mengapa Python merupakan bahasa pilihan bagi para ilmuwan data?
Edit2: Blog dari Udacity pada Bahasa dan Perpustakaan untuk Pembelajaran Mesin
sumber
Jawaban:
Jadi Anda dapat berintegrasi dengan basis kode lainnya. Tampaknya perusahaan Anda menggunakan campuran Java dan python. Apa yang akan Anda lakukan jika sudut kecil situs membutuhkan pembelajaran mesin; meneruskan data dengan database, atau cache, drop ke R, dan sebagainya? Mengapa tidak melakukan semuanya dalam bahasa yang sama? Lebih cepat, lebih bersih, dan lebih mudah dirawat.
Tahu ada perusahaan online yang hanya menjalankan R? Saya juga tidak...
Semua yang mengatakan bahwa Java adalah bahasa terakhir yang saya gunakan dalam ilmu data.
sumber
Mungkin ada banyak alasan seperti:
Fleksibilitas tenaga kerja: Satu programmer Java / Python dapat dipindahkan ke tugas atau proyek lain dengan mudah.
Kandidat ketersediaan: ada banyak programmer Java / Python. Anda tidak ingin memperkenalkan bahasa pemrograman baru untuk kemudian mengetahui bahwa tidak ada pekerja yang memenuhi syarat atau mereka terlalu mahal.
Integrasi dan ETL: Terkadang mendapatkan data dengan kualitas yang tepat adalah bagian tersulit dari proyek. Jadi wajar untuk menggunakan bahasa yang sama dengan sistem lainnya.
Definisi model bisnis: Sebagian besar aturan bisnis dan model bisnis sudah ditulis dalam bahasa ini.
Hanya menjaga hal-hal sederhana. Sudah cukup sulit untuk memperbarui teknologi. Basis bahasa yang beragam bisa kacau. R untuk ini, Ruby untuk itu, Scala, Clojure, F #, Swift, Dart ... Mereka mungkin membutuhkan server yang berbeda, jalur yang berbeda, neraka untuk dikelola. Semua memiliki IDE sendiri dengan alat dan plugin (tidak selalu gratis). Lihat beberapa poin Paman Bob tentang pilihan bahasa dan teknologi baru
Jadi, bahkan jika Anda memiliki keunggulan produktivitas 5% - 15% menggunakan R untuk tugas tertentu, mereka mungkin lebih suka alat yang hanya melakukan pekerjaan bahkan jika tidak dengan cara yang paling efisien.
sumber
.csv
file - yang tujuannya R sebenarnya adalah alat yang paling cocok di pasar. Kandidat ketersediaan: bahwa ada lebih banyak programmer Java daripada programmer R tidak menyiratkan bahwa Anda harus membuang kandidat R jika Anda memilikinya. Tidak masalah bagaimana ilmuwan melakukan latihan mereka selama mereka menggunakan kode yang dapat dibaca yang dapat dijalankan oleh beberapa server (atau hal lain yang dijalankan perusahaan).Secara umum memang benar bahwa untuk murni ilmu data dan latihan statistik, R menawarkan
data.table
alat dan metode terbaik dan tercepat (terutama jika menggunakan paket), yang sebaliknya akan lebih berat untuk diimplementasikan dalam Python (saya berasumsi oleh Python kita semua berarti Panda, meskipun ). Kebanyakan ilmuwan data memang menggunakan R untuk melakukan model dan perhitungan mereka, atau hanya untuk melihat bagaimana data berperilaku.Setelah latihan selesai, inilah saatnya untuk membuatnya tersedia untuk semua orang yang harus menggunakannya (yaitu untuk menyebarkan); untuk tujuan ini, seringkali lebih disukai untuk mengirimkan kode dengan Python karena dua alasan utama:
Kata di atas, masih benar bahwa seseorang dapat dengan mudah menerjemahkan kode R ke dalam bahasa lain, asalkan metode, pustaka dan paket tersedia (dengan Python kebanyakan dari mereka, sehingga tidak ada masalah sama sekali). Banyak infrastruktur dan database mendukung kode R yang mendasarinya, maka portabilitas sebenarnya bukan masalah, terutama jika seseorang hanya perlu menyerahkan hasil perhitungan (untuk perluasan itu, toh tidak ada yang benar-benar melihat kode yang mendasarinya).
Java hampir tidak ada gunanya untuk ilmu data murni itu sendiri (meskipun Universitas Stanford memiliki koleksi mesin belajar perpustakaan NLP yang ditulis di Jawa, sejauh yang saya ingat - tapi tolong periksa). Satu-satunya alasan mengapa hal itu diperlukan adalah hanya bahwa sisa perusahaan menggunakannya sampai pada taraf yang besar dan mereka tidak ingin menggantinya dengan sesuatu yang baru.
sumber
data.table
ditawarkan; scikit-belajar, seperti yang Anda sebutkan, adalah contoh lain, tetapi ada banyak lagi sesuai dengan kasus yang dihadapi.Saya telah melihat beberapa perusahaan menggunakan judul Data Scientist untuk peran tipe "Data Engineer". Terutama di ruang data besar.
Jika perusahaan menggunakan Hadoop atau kerangka kerja terdistribusi seperti Spark untuk melakukan analitiknya di kemudian Java atau Python (atau mungkin Scala) akan menjadi bahasa yang paling masuk akal.
sumber
Jawa
Saya harus tidak setuju dengan poster lain tentang pertanyaan java. Ada beberapa database noSQL (seperti hadoop) yang perlu dituliskan pekerjaan mapreduce di java . Sekarang Anda dapat menggunakan HIVE untuk mencapai hasil yang sama.
Python
Debat python / R berlanjut. Keduanya merupakan bahasa yang dapat dikembangkan, sehingga keduanya berpotensi memiliki kemampuan yang sama untuk memproses. Saya hanya tahu R dan pengetahuan python saya cukup dangkal. Berbicara sebagai pemilik usaha kecil, Anda ingin tidak memiliki terlalu banyak alat dalam bisnis Anda, jika tidak akan ada kedalaman yang kurang dalam di dalamnya, dan kesulitan mendukungnya. Saya pikir itu akan turun ke kedalaman pengetahuan alat dalam tim. Jika tim fokus pada python, maka mempekerjakan ilmuwan data python lain akan masuk akal karena mereka dapat terlibat dengan basis kode yang ada dan kode eksperimen historis.
sumber
Setidaknya untuk tim saya saat ini (~ 80 ilmuwan dan insinyur data), kami tidak memiliki preferensi seperti itu. Setengah dari data para ilmuwan di sini menggunakan R dan setengah lainnya menggunakan Python. Banyak yang bisa mengkodekan keduanya. Kami menggunakan kode Python dan R dalam produksi.
Saya tidak berpikir data ilmuwan kita menggunakan Java sama sekali. Jika mereka perlu berurusan dengan data besar, mereka dapat menggunakan SparkSQL atau PySpark. Tim rekayasa data menggunakan campuran Java / Scala / Python / Go.
Jika Anda adalah salah satu dari sedikit orang data di sebuah perusahaan kecil, saya dapat memahami mengapa mereka memerlukan keterampilan bahasa tertentu sehingga Anda dapat melakukan kedua ilmu data dan teknik. Tapi tbh, saya pikir sebagian besar perusahaan kecil tidak akan memiliki data yang cukup besar sehingga Python atau R tidak dapat menangani dalam produksi.
sumber
Pandangan saya sebagai programmer tujuan umum dengan sedikit pengalaman R: R sangat baik untuk ilmu data, tetapi itu diarahkan untuk orang-orang yang secara manual menafsirkan data. Jika Anda ingin menggunakan hasil untuk sesuatu yang otomatis, Anda harus berinteraksi dengan sesuatu yang lain, dan sesuatu yang lain akan sulit dilakukan dalam bahasa yang spesifik masalah seperti R. Bisakah Anda membuat situs web di R? :) Di sisi lain, python memang sudah siap membuat pustaka untuk hal-hal peningkatan data dan merupakan bahasa pemrograman tujuan umum yang tidak menghalangi Anda melakukan hal lain dengannya. Sedangkan untuk Java, bagus untuk proyek pemrograman besar dengan ratusan ribu hingga jutaan baris kode. Jika bagian ilmu data perlu berinteraksi dengan itu, mungkin masuk akal untuk melakukan semuanya di Jawa.
Rengekan acak: Mengapa saya harus masuk ke setiap situs StackExchange secara terpisah?
sumber
Alat-alat dalam Python hanya lebih baik daripada komunitas R. Ther R cukup stagnan sementara komunitas Python berkembang sangat cepat. Terutama dalam alat untuk Ilmu Data.
Python juga bekerja lebih mudah dengan segala sesuatu di sekitarnya. Anda dapat dengan mudah mengikis web, terhubung ke database, dan sebagainya. Itu membuat prototyping sangat cepat.
Dan jika Anda memiliki prototipe yang berfungsi dan peduli untuk membuatnya lebih cepat atau mengintegrasikannya ke dalam alur kerja perusahaan, biasanya akan diterapkan kembali di Jawa.
R memiliki beberapa alat dan visualisasi yang rapi tetapi tidak terlalu bagus untuk membangun barang baru di dalamnya.
sumber