Tra Matlab e Python, quale lingua è buona per l'analisi generale dei dati statistici? Quali sono i pro e contro, oltre all'accessibilità, per ciascuno?
Tra Matlab e Python, quale lingua è buona per l'analisi generale dei dati statistici? Quali sono i pro e contro, oltre all'accessibilità, per ciascuno?
Risposte:
Come utente irriducibile di Matlab negli ultimi 10 anni, ti consiglio di imparare Python. Una volta che sei sufficientemente esperto in una lingua, quando lavori in una lingua che stai imparando, sembrerà che non sei abbastanza produttivo e tornerai a utilizzare la tua lingua migliore predefinita. Per lo meno, ti suggerirei di provare a diventare altrettanto competente in diverse lingue (suggerirei anche R).
Cosa mi piace di Matlab:
Cosa non mi piace di Matlab:
median
funzione di Matlab , che esegue una sorta di dati, quindi assume il valore medio . Questo è stato l'algoritmo sbagliato dagli anni '70.-nojvm
sembra aiutare ...
shuffle
potrebbe essere in una cassetta degli attrezzi, non è una matrice di scorta. difficilmente potrebbe essere peggio di builtin randperm
che restituisce l'indice di ordinamento di un vettore casuale. Ancora una volta, questo è probabilmente l'algoritmo sbagliato (ho appena appreso della confusione Knuth-Fisher-Yates qui su stats.SE) ..
randperm
è che è influenzato dal seeding di randn
, mentre una versione messicana di Knuth-Fisher-Yates forse non può accedere al seme randn "internamente", e probabilmente una versione pura .m di shuffle essere troppo lento.
Consente di suddividerlo in tre aree (dalla parte superiore della mia testa) in cui la programmazione incontra le statistiche: scricchiolio dei dati, routine numeriche (ottimizzazione e simili) e librerie statistiche (modellazione, ecc.).
Sul primo, la differenza più grande è che Python è un linguaggio di programmazione generico. Matlab è eccezionale fintanto che il tuo mondo è approssimativamente isomorfo a una matrice numerica fortran. Una volta che inizi a gestire il munging dei dati e i problemi correlati, Python supera Matlab. Ad esempio, vedi il libro di Greg Wilson: Data Crunching: Risolvi problemi quotidiani usando Java, Python e altro .
Nel secondo, Matlab brilla davvero con il lavoro numerico. Gran parte della comunità di ricerca lo utilizza e, se stai cercando, alcuni algoritmi relativi a un documento nel rilevamento compresso, è molto più probabile trovare un'implementazione in Matlab. D'altra parte, Matlab è una specie di PHP dell'informatica scientifica - si sforza di avere una funzione per tutto sotto il sole. L'estetica e l'architettura risultanti sono esasperanti se sei un fanatico del linguaggio di programmazione, ma in termini utilitaristici, fa il lavoro. Gran parte di questo è diventato meno vantaggioso con l'ascesa di Numpy / Scipy, è altrettanto probabile trovare librerie di ottimizzazione e apprendimento automatico disponibili per Python. L'interfaccia con C è altrettanto facile in entrambe le lingue.
Sulla disponibilità di librerie statistiche per la modellistica e simili, entrambe sono in qualche modo carenti rispetto a qualcosa come R. (Anche se sospetto che entrambi soddisferanno i bisogni dell'80% delle persone che fanno lavoro statistico.) Per il lato Python, vedi questa domanda : Python come workbench statistico . Per quanto riguarda Matlab, so che esiste una cassetta degli attrezzi per le statistiche, ma permetterò a qualcuno più esperto di riempire gli spazi vuoti (la mia esperienza con Matlab è limitata al lavoro numerico non correlato alle statistiche).
Sono anche un appassionato utente di Matlab da oltre 10 anni. Per molti di quegli anni non avevo motivo di lavorare oltre la cassetta degli attrezzi che avevo creato per il mio lavoro. Sebbene siano state create molte funzioni per una cassetta degli attrezzi, spesso avevo bisogno di creare algoritmi per una rapida analisi di inversione di tendenza. Poiché questi algoritmi utilizzano spesso la matematica matriciale, Matlab era il candidato ideale per il mio lavoro. Oltre al mio toolbox Matlab di codice, altri nel mio gruppo hanno lavorato ampiamente in Java poiché c'era una chiara interoperabilità tra le lingue. Per anni sono stato completamente contento di Matlab, ma circa 3 anni fa ho deciso di iniziare la lenta transizione da Matlab e felice di dire che non l'ho aperto da circa un anno. Ecco il motivo della mia mossa:
-nodesktop
dell'opzione è buono per la maggior parte del tempo, ma presenta dei problemi.Queste sono solo alcune delle mie molte lamentele con Matlab. È un attributo brillante: è facile, davvero facile scrivere codice rapidamente (se non brutto). L'ho lasciato però, e la mia ricerca mi ha guidato attraverso Clojure-> JavaScript-> Python <-> Julia; si, sono stato dappertutto.