Какой из языков Matlab и Python хорош для общего статистического анализа данных? Каковы плюсы и минусы, кроме доступности, для каждого?
Какой из языков Matlab и Python хорош для общего статистического анализа данных? Каковы плюсы и минусы, кроме доступности, для каждого?
Ответы:
Как несгибаемый пользователь Matlab за последние 10 с лишним лет, я рекомендую вам изучить Python. Если вы достаточно хорошо владеете языком, когда вы работаете на языке, который вы изучаете, вам покажется, что вы недостаточно продуктивны, и вы вернетесь к использованию вашего лучшего языка по умолчанию. По крайней мере, я бы посоветовал вам попытаться стать одинаково хорошо владеющим несколькими языками (я бы также предложил R).
Что мне нравится в Matlab:
Что мне не нравится в Matlab:
median
функция Matlab , которая выполняет сортировку данных, а затем принимает среднее значение . Это был неправильный алгоритм с 70-х годов.-nojvm
похоже, поможет ...
shuffle
может быть в наборе инструментов, это не фондовый matlab. вряд ли может быть хуже встроенного, randperm
который возвращает индекс сортировки случайного вектора. Опять же, это, вероятно, неправильный алгоритм (я только что узнал о перестановке Кнута-Фишера-Йейтса здесь на stats.SE) ..
randperm
том, что на него влияет randn
засевание, в то время как мексиканская версия Knuth-Fisher-Yates, возможно, не может получить доступ к семейству randn «изнутри», и чистая .m версия shuffle, вероятно, будет быть слишком медленным
Давайте разберем его на три области (вне головы), где программирование встречается со статистикой: анализ данных, числовые процедуры (оптимизация и т. Д.) И статистические библиотеки (моделирование и т. Д.).
Первое, самое большое отличие в том, что Python - это язык программирования общего назначения. Matlab великолепен, если ваш мир примерно изоморфен числовому массиву на Фортране. Как только вы начинаете заниматься манипулированием данными и связанными с этим проблемами, Python затмевает Matlab. Например, см. Книгу Грега Уилсона: Обработка данных : решение повседневных проблем с использованием Java, Python и других .
Во-вторых, Matlab действительно сияет числовой работой. Многие сообщества исследователей использует его , и если вы ищете говорят, некий алгоритм относится к работе в сжатом зондированию, вы гораздо больше шансов найти реализацию в Matlab. С другой стороны, Matlab - это своего рода PHP научных вычислений - он стремится иметь функцию для всего, что находится под солнцем. Получающаяся эстетика и архитектура сводят с ума, если вы фанат языка программирования, но с практической точки зрения, он выполняет свою работу. Многое из этого стало менее актуальным с появлением Numpy / Scipy, вы также можете найти библиотеки оптимизации и машинного обучения для Python. Взаимодействие с C примерно так же легко на любом языке.
Что касается доступности статистических библиотек для моделирования и тому подобного, то и того, и другого в некоторой степени не хватает по сравнению с чем-то вроде R. : Python , как статистика Workbench . Что касается Matlab, я знаю, что есть набор инструментов для статистики, но я позволю кому-то более знающему заполнить пробелы (мой опыт работы с Matlab ограничен численной работой, не связанной со статистикой).
Я также был заядлым пользователем Matlab более 10 лет. В течение многих из этих лет у меня не было причин работать за пределами набора инструментов, который я создал для своей работы. Хотя для набора инструментов было создано много функций, мне часто приходилось создавать алгоритмы для быстрого анализа обработки. Поскольку в этих алгоритмах часто используется матричная математика, Matlab был идеальным кандидатом для моей работы. В дополнение к моему набору инструментов Matlab, другие в моей группе много работали на Java, так как между языками было явное взаимодействие. В течение многих лет я был полностью доволен Matlab, но около 3 лет назад я решил начать медленный переход от Matlab и с радостью могу сказать, что не открывал его около года. Вот причина моего переезда:
-nodesktop
опции полезно в большинстве случаев, но имеет свои проблемы.Это всего лишь несколько из моих многочисленных проблем с Matlab. Это один из ярких атрибутов: это легко, действительно легко писать код быстро (если не безобразно). Я все же оставил его, и мой квест провел меня через Clojure-> JavaScript-> Python <-> Julia; да, я был повсюду.