Matlab ve Python arasında genel istatistiksel veri analizi için hangi dil iyidir? Her biri için erişilebilirlik dışında artıları ve eksileri nelerdir?
Matlab ve Python arasında genel istatistiksel veri analizi için hangi dil iyidir? Her biri için erişilebilirlik dışında artıları ve eksileri nelerdir?
Yanıtlar:
Son 10 yıldan beri diehard Matlab kullanıcısı olarak, Python öğrenmenizi tavsiye ederim. Bir dilde yeterince yetenekli olduğunuzda, öğrendiğiniz bir dilde çalışırken, yeterince üretken olmamanız gibi görünecek ve varsayılan en iyi dilinizi kullanmaya geri döneceksiniz. En azından, birkaç dilde eşit derecede yetkin olmaya çalışmanızı öneririm (R'yi de öneririm).
Matlab hakkında sevdiğim:
Matlab hakkında sevmediğim şeyler:
median
işlevidir . 70'lerden beri bu yanlış algoritma.-nojvm
yardımcı gibi görünüyor ...
shuffle
bir araç kutusunda olabilir, stok matlab değildir. randperm
rastgele bir vektörün sıralama indeksini döndüren yerleşmeden daha kötü olamazdı . Yine, bu muhtemelen yanlış algoritma (Ben sadece burada Knuth-Fisher-Yates shuffle istatistiklerini öğrendim.SE) ..
randperm
, tohumlamadan etkilenmesidir randn
, oysa Knuth-Fisher-Yates'in mex'ed versiyonu belki de 'dahili olarak' süslü tohuma erişemez ve muhtemelen saf bir .m versiyonu shuffle'ın çok yavaş ol.
Programlamanın istatistiklerle buluştuğu üç alana (başımın üstünden) ayıralım: veri uyuşmazlığı, sayısal rutinler (optimizasyon ve benzeri) ve istatistiksel kütüphaneler (modelleme, vb.).
Birincisi, en büyük fark Python'un genel amaçlı bir programlama dili olmasıdır. Matlab, dünyanız kabaca bir nümerik sayısal diziye izomorfik olduğu sürece harika. Veri ayıklama ve ilgili sorunlarla uğraşmaya başladığınızda, Python Matlab'ı geride bırakıyor. Örneğin, Greg Wilson'ın şu kitabına bakın: Veri Sıkıştırma: Java, Python ve daha fazlasını kullanarak Gündelik Sorunları Çözme .
İkincisi, Matlab gerçekten sayısal çalışmalarla parlıyor. Araştırma topluluğunun çoğu bunu kullanıyor ve örneğin, sıkıştırılmış algılamadaki bir kağıtla ilgili bazı algoritmalar arıyorsanız , Matlab'da bir uygulama bulma olasılığınız çok daha yüksek. Öte yandan, Matlab bir çeşit bilimsel hesaplama PHP'sidir - güneşin altındaki her şey için bir fonksiyona sahip olmaya çalışır. Ortaya çıkan estetik ve mimari, bir programlama dili meraklısıysanız çıldırıyor, ancak faydacı terimlerle işi hallediyor. Bunların çoğu Numpy / Scipy'nin yükselişiyle daha az ilgili hale geldi, Python için mevcut optimizasyon ve makine öğrenme kütüphanelerini bulma olasılığınız da yüksek. C ile arayüz kurmak her iki dilde de kolaydır.
Modelleme ve benzeri için istatistiksel kütüphanelerin mevcudiyeti üzerine, her ikisi de R gibi bir şeyle karşılaştırıldığında biraz eksiktir. (Her ikisinin de istatistiksel çalışma yapan insanların% 80'inin ihtiyaçlarını karşılayacağından şüpheleniyorum.) : İstatistik tezgahı olarak Python . Matlab tarafı için, bir istatistik araç kutusu olduğunu biliyorum, ancak boşlukları daha bilgili bir kişinin doldurmasına izin vereceğim (Matlab ile ilgili deneyimim istatistiklerle ilgili olmayan sayısal çalışmalarla sınırlıdır).
Ayrıca 10 yıldan fazla süredir hevesli bir Matlab kullanıcısıyım. O yıllar boyunca işim için yarattığım araç kutusunun ötesinde çalışmak için hiçbir nedenim yoktu. Bir araç kutusu için birçok işlev oluşturulmuş olsa da, genellikle hızlı geri dönüş analizi için algoritmalar oluşturmam gerekiyordu. Bu algoritmalar genellikle matris matematiğini kullandığından Matlab işim için ideal bir adaydı. Matlab araç koduma ek olarak, grubumdaki diğer diller, diller arasında açık birlikte çalışabilirlik olduğundan Java'da kapsamlı bir şekilde çalıştı. Yıllarca Matlab'dan tamamen memnun kaldım, ancak yaklaşık 3 yıl önce Matlab'dan yavaş geçişe başlamaya karar verdim ve yaklaşık bir yıl içinde açmadım demekten mutluyum. İşte hamlemin nedeni:
-nodesktop
Seçeneği kullanmak çoğu zaman iyidir, ancak sorunları vardır.Bu, Matlab ile olan birçok tutkumdan sadece birkaçı. Parlayan bir özellik: kolay, hızlı bir şekilde kod yazmak çok kolay (çirkin değilse). Yine de bıraktım ve görevim beni Clojure-> JavaScript-> Python <-> Julia'ya yönlendirdi; Evet, her yerde bulundum.