Daha yeni akademik amaçlı bir makine öğrenme uygulaması geliştirmeye başladım . Şu anda R kullanıyorum ve kendimi eğitiyorum. Ancak birçok yerde Python'u kullanan insanlar gördüm .
Akademi ve endüstride insanlar ne kullanıyor ve tavsiye nedir?
Daha yeni akademik amaçlı bir makine öğrenme uygulaması geliştirmeye başladım . Şu anda R kullanıyorum ve kendimi eğitiyorum. Ancak birçok yerde Python'u kullanan insanlar gördüm .
Akademi ve endüstride insanlar ne kullanıyor ve tavsiye nedir?
Yanıtlar:
Birbirinden R veya Python seçerken göz önünde bulundurmanız gereken bazı önemli farklılıklar :
Yani, her iki dil de eşit derecede iyi. Bu nedenle, etki alanınıza ve çalıştığınız yere bağlı olarak, doğru dili akıllıca seçmeniz gerekir. Teknoloji dünyası genellikle tek bir dil kullanmayı tercih ediyor. Ticari kullanıcılar (pazarlama analitiği, perakende analitiği) genellikle R gibi istatistiksel programlama dilleri ile birlikte gelir, çünkü sıklıkla hızlı prototipleme yaparlar ve görselleştirmeler yaparlar (R'de Python'dan daha hızlı yapılır).
"Python daha iyi" ya da "R, x'ten daha iyi" gibi bir şey yoktur.
Bildiğim tek gerçek, endüstride insanların her yerinin pitona sadık kalması çünkü üniversitede öğrendikleri şey bu. Python topluluğu gerçekten aktiftir ve ML ve veri madenciliği vb. İçin birkaç harika çerçeveye sahiptir.
Ama dürüst olmak gerekirse, iyi bir c programcısı elde ederseniz, o insanlar python veya r ile aynı şeyi yapabilir, eğer iyi bir java programcısı varsa, java'daki her şeyi de (yakın) yapabilir.
Bu yüzden sadece rahat olduğunuz dili kullanın.
Bazı ek düşünceler.
'Per se' programlama dili sadece bir araçtır. Tüm diller, bazı yapı türlerini diğerlerinden daha kolay inşa etmek için tasarlanmıştır. Bir programlama dilinin bilgisi ve ustalığı, diğerlerine kıyasla o dilin özelliklerinden daha önemli ve etkilidir.
Görebildiğim kadarıyla bu sorunun iki boyutu var. İlk boyut, kavramların veya modellerin hızlı bir şekilde keşfedilmesi, kanıtlanması, sonunda ne olup bittiğini incelemek için yeterli araçlara sahip olmaktır (istatistiksel testler, grafikler, ölçüm araçları vb.). Bu tür faaliyetler genellikle araştırmacılar ve veri bilimcileri tarafından tercih edilir (bunun ne anlama geldiğini merak ediyorum ama bu terimi gevşek tanımı için kullanıyorum). Kanıtlar veya argümanlar için kullanılabilecek iyi bilinen ve doğrulanmış araçlara güvenme eğilimindedirler.
İkinci boyut, araçları, algoritmaları veya modelleri genişletme, değiştirme, iyileştirme ve hatta oluşturma yeteneğidir. Bunu başarmak için uygun bir programlama diline ihtiyacınız var. Kabaca hepsi aynıdır. Bir şirket için çalışıyorsanız, şirketin altyapısına çok fazla bağımlı olduğunuzdan, iç kültür ve seçimleriniz önemli ölçüde azalır. Ayrıca, üretim kullanımı için bir algoritma uygulamak istediğinizde, uygulamaya güvenmeniz gerekir. Üstat olmayan başka bir dilde uygulamak size pek yardımcı olmaz.
R ekosisteminin ilk faaliyet türü için lehte olma eğilimindeyim. Harika bir topluluğunuz var, çok büyük bir araç seti, bu araçların beklendiği gibi çalıştığını kanıtlıyorsunuz. Ayrıca, güvenilir aday olan Python, Octave (birkaç isim) düşünebilirsiniz.
İkinci görev için, daha önce gerçekten ne istediğinizi düşünmek zorundasınız. Sağlam üretime hazır araçlar istiyorsanız, C / C ++, Java, C # mükemmel adaylardır. Python'u Scala ve arkadaşlarıyla birlikte bu kategoride ikinci bir vatandaş olarak görüyorum. Bir alev savaşı başlatmak istemiyorum, bu sadece benim görüşüm. Ancak bir geliştirici olarak 17 yıldan fazla bir süre sonra, aklınıza gelebilecek her şeyi yapma özgürlüğünden ziyade katı bir sözleşmeyi ve bilgimi tercih etme eğilimindeyim (birçok dinamik dilde olduğu gibi).
Şahsen mümkün olduğu kadar çok şey öğrenmek istiyorum. Zor yolu seçmem gerektiğine karar verdim, bu da her şeyi sıfırdan uygulamak anlamına geliyor. R'yi model ve ilham kaynağı olarak kullanıyorum. Kütüphanelerde büyük hazineleri ve damıtılmış birçok deneyimi var. Ancak, programlama dili olarak R benim için bir kabustur. Bu yüzden Java'yı kullanmaya karar verdim ve ek bir kütüphane kullanmadım. Bu sadece benim deneyimimden başka bir şey değil.
Vaktiniz varsa, yapabileceğiniz en iyi şey, bunlarla biraz zaman geçirmek. Bu şekilde kendiniz için mümkün olan en iyi cevabı kazanacaksınız. Dijkstra, araçların düşünce biçiminizi etkilediğini, bu yüzden nasıl düşündüğünüzü modellemelerine izin vermeden önce araçlarınızı tanımanız önerilir. The Humble Programmer adlı ünlü makalesinde bunun hakkında daha fazla bilgi edinebilirsiniz.
Şimdiye kadar başkalarının söylediklerini de eklerdim. Bir dilin diğerinden daha iyi olduğuna dair tek bir cevap yoktur.
Bunu söyledikten sonra, R veri keşfi ve öğrenme için daha iyi bir topluluğa sahiptir. Kapsamlı görselleştirme yeteneklerine sahiptir. Python ise pandaların tanıtılmasından bu yana veri işlemede daha iyi bir hale geldi. Python'da öğrenme ve gelişme süresi, R'ye göre çok düşüktür (R, düşük seviye bir dildir).
Sonunda içinde bulunduğun çevre sistemine ve kişisel tercihlere bağlı. Daha fazla ayrıntı için bu karşılaştırmaya buradan bakabilirsiniz .
Verilerle ilgili her sorunu çözmek için kullanılabilecek bir gümüş kurşun dili yoktur. Dil seçimi problemin içeriğine, verilerin boyutuna bağlıdır ve bir işyerinde çalışıyorsanız, kullandıklarına bağlı kalmak zorundasınız.
Şahsen, görselleştirme kütüphaneleri ve etkileşimli stili nedeniyle R'yi Python'dan daha sık kullanıyorum. Ancak daha fazla performans veya yapısal koda ihtiyacım olursa, kesinlikle Python kullanıyorum çünkü SciKit-Learn, numpy, scipy vb. Gibi en iyi kütüphanelerden bazılarına sahip. Projelerimde hem R hem de Python kullanıyorum.
Eğer veri bilimi çalışmasına başlıyorsanız, her ikisini de öğrenmenizi öneririm, çünkü Python da R'lere Panda'larla benzer bir arayüz sağlıyor. .
Daha büyük veri kümeleriyle uğraşmak zorundaysanız, Java (Hadoop, Pig, Hbase vb.) İle oluşturulmuş eko sistemlerden kaçamazsınız.
"Daha iyi" bir dil yok. İkisini de denedim ve Python konusunda rahatım, bu yüzden sadece Python ile çalışıyorum. Hala bir şeyler öğreniyorum, ancak şimdiye kadar Python ile barikatla karşılaşmadım. Python ile ilgili iyi bir şey topluluktur çok iyi ve kolayca internette çok yardım alabilirsiniz. Bunun dışında, insanların tavsiye etmediği bir dile gitmek istediğini söyleyebilirim.
Tecrübelerime göre cevap eldeki projeye bağlı. Saf araştırma için, iki nedenden dolayı R'yi tercih ederim: 1) çok çeşitli kütüphaneler ve 2) veri bilimi literatürünün çoğunda R örnekleri bulunur.
Proje meslekten olmayanlar tarafından kullanılmak üzere etkileşimli bir arayüz gerektiriyorsa, R'nin çok sınırlı olduğunu gördüm. Parlaklık harika bir başlangıç, ancak henüz yeterince esnek değil. Bu durumlarda, R çalışmamın Python veya js ile taşınmasına bakmaya başlayacağım.
Diğer tüm cevapların ele almaması sorunu lisanslamadır .
Yukarıda belirtilen harika R kütüphanelerinin çoğu GPL'dir (örneğin, ggplot2 , data.table ). Bu , yazılımınızı özel bir biçimde dağıtmanızı önler .
Bu kitaplıkların birçok kullanımı, yazılımın dağıtılmasını gerektirmese de (örneğin, modelleri çevrimdışı olarak eğitmek için), GPL, şirketleri kullanmaktan kendi başlarına uzaklaştırabilir. En azından benim deneyimimde.
Python aleminde ise çoğu kütüphanede BSD veya MIT gibi işletme dostu dağıtım lisansları bulunmaktadır.
Akademi'de lisans sorunları normalde sorun değildir.
Sağlanan yorumlara eklemek için çok fazla. Tek şey belki de bu veriyi R vs Python ile veri bilimi amacıyla karşılaştıran http://blog.datacamp.com/r-or-python-for-data-analysis/
R, ile karşılaştığım en büyük zorluklardan biri, farklı sürümlerle uyumlu farklı paketler. versiyon ..
R denemedim (peki, biraz, ama iyi bir karşılaştırma yapmak için yeterli değil). Ancak, işte bazı Pythons güçlü yönleri:
element in a_list
, for element in sequence
, matrix_a * matrix_b
(matriks çoğalması için), ...Python'u R yerine Python'u tercih ediyorum çünkü Python tam bir programlama dilidir, böylece Python'da yazılmış bir HTTP sunucusunu kullanarak veri toplama, ileri düzey ML görevleri gerçekleştirme ve sonuçları çevrimiçi yayınlama gibi makine öğrenme görevlerini sona erdirebilirim. Bunların hepsi Python'da yapılabilir. Aslında R'yi öğrenmenin daha zor olduğunu ve Python'u öğrenmenin getirilerini çok daha fazla bulduğum için, hemen hemen her türlü programlama işi için kullanılabildiğini gördüm.
R: R, Açık kaynak meslektaşıdır. geleneksel olarak akademisyenler ve araştırmalarda kullanılmıştır. Açık kaynaklı olması nedeniyle en yeni teknikler hızla serbest bırakılıyor. İnternet üzerinden birçok dokümantasyon mevcuttur ve bu çok uygun maliyetli bir seçenektir. Python: Açık kaynaklı bir betik dili olarak oluşturulmuş olan Python kullanımı zamanla artmıştır. Bugün, kütüphaneleri (numpy, scipy ve matplotlib) spor yapıyor ve yapmak isteyebileceğiniz hemen hemen tüm istatistiksel işlem / model oluşturma işlevlerini yerine getiriyor. Pandaların tanıtılmasından bu yana, yapılandırılmış veri operasyonlarında çok güçlendi.
Python Kodu
sklearn'den içe aktarma linear_model
x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets
linear = linear_model.LinearRegression ()
linear.fit (x_train, y_train) linear.score (x_train, y_train)
print ('Katsayısı: \ n', linear.coef_) print ('Intercept: \ n', linear.intercept_)
tahmini = linear.predict (x_test) R Kodu
x_train <- input_variables_values_training_datasets y_train <- target_variables_values_training_datasets x_test <- input_variables_values_test_datasets x_test <- input_variables_values_test_datasets x <- cbind (x_train, y_train)
doğrusal <- lm (y_train ~., veri = x) özeti (doğrusal)
tahmini = tahmin (doğrusal, x_test)
Bu görüntüyü linkedin yazılarında aldım. Ne zaman python veya R kullandığımdan şüphelensem, onu inceliyorum ve çok faydalı olduğunu kanıtlıyor.