Яку мову програмування ви рекомендуєте для прототипування проблеми машинного навчання?


12

Зараз працюю в Octave, але через погану документацію прогрес дуже повільний.

Яку мову легко вивчити та використовувати та добре задокументовану для вирішення проблем машинного навчання? Я шукаю прототип на невеликому наборі даних (тисячі прикладів), тому швидкість не важлива.

EDIT: Я розробляю систему рекомендацій. Отже, мені цікаво використовувати регульовану лінійну регресію, нейронні мережі, SVN або спільну фільтрацію.


1
Я колись починав також з Octave, оскільки мій професор був у матлабі (так, це було цікаво під час виконання курсової роботи з використанням бібліотеки проф, оскільки matlab та октава не зовсім однаковий синтаксис), але потім я перейшов на R і просто здувся своєю чудовою документацією та різноманітністю бібліотек.
steffen

9
Зрозуміло, Python дуже простий у вивченні та читанні, тому я думаю, це питання смаку. Я пропоную ці посилання: python-stat-workbench , що-мова-програмування-для статистичного виводу , машинне навчання-використання-python , clojure
steffen

1
Я рекомендую R, Python або Matlab. З причин, занадто обширних для вирішення, я б відмовився від Matlab. Для статистики я пішов би з R, для програміста - з Python. Для внутрішніх циклів я б перейшов із C / C ++. При достатньому масштабі витрати Matlab перевищують будь-які переваги.
Ітератор

1
або, подивіться на
Джулію

Відповіді:


7

Якщо ви хочете використати щось нестандартно, Weka може стати чудовою відправною точкою. Не потрібно нічого програмувати. Ви імпортуєте свої дані, візуалізуєте їх і граєте з різними моделями.

Наступним ланцюгом буде Р. Існує деяка крива навчання, особливо з приведенням даних у відповідність до структур даних R, але, як тільки ви переберете це, у вас є безліч бібліотек, які пропонують усі можливості машинного навчання без особливих зусиль.

Далі буде ручне програмування алгоритмів машинного навчання. Оскільки ви вже використовуєте Octave і шукаєте альтернативи, можливо, вам потрібно не передавати алгоритми коду в іншій системі, а просто використовувати бібліотеки, написані іншими людьми.

Якщо ви спускаєтесь на шлях R, то, можливо, вам стане дуже корисною книга Луїса Торго («Робота даних з R: навчання за допомогою кейсів») (розкриття: немає приналежності). У ньому детально описані приклади, які ви можете адаптувати до вашої проблеми.


15

Ви можете отримати кращі відповіді, якщо вкажете конкретні алгоритми, які вас цікавлять. Я використовую R для подібних речей (хоча я займаюся економетрикою часових рядів, хоча не машинним навчанням); ви можете побачити існуючу функціональність тут:

http://cran.r-project.org/web/views/MachineLearning.html

і є код R для здійснення аналізу в елементах статистичного навчання Хасті, Тібширані та Фрідмана :

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

Система упаковки R досить чудова і підштовхує людей до документування свого коду, і це відкритий код, тому ви завжди можете переглядати реалізацію. Я не використовував Matlab протягом декількох років і не використовував його для багато машинного навчання - їх скриньки інструментів, як правило, добре задокументовані, але можуть бути дорогими, але приведений користувачем код буде так само погано задокументований, як і будь-який інший.


11

У своєму онлайн-курсі машинного навчання Ендрю Нг пропонує використовувати Octave / Matlab.

Я рекомендую записатись у наступне видання цього курсу: це дійсно корисно, і ви дізнаєтесь багато речей про Octave та про різні алгоритми машинного навчання.

EDIT 1 : Я погоджуюся з іншими людьми, які вважають за краще працювати в Р. Однак, вирішуючи проблеми машинного навчання, більшість ваших розрахунків буде проводитись у матричній формі, і як зазначають мови @Wayne, Matlab або Octave дуже популярні через їх силу. Ви можете ознайомитись із рішеннями вправ з машинного навчання, запропонованими іншими студентами; напевно, ви можете дізнатися деякі речі з них:

Gkokaisel Github

Мерван Гітхуб


1
Я зарахований до цього видання курсу! Проблема полягає в тому, що робити найпростіші речі поза курсом не виходить! Документація марна.
B Сім

3
Треба сказати, що Matlab (таким чином, Octave) - жахлива мова програмування. Це дуже популярно в галузі машинобудування та машинного навчання, але це пов’язано з його потужністю і використовується в школах, а не тому, що це сучасна мова програмування. Однак, з більшою ймовірністю ви зіткнетесь з текстами машинного навчання, які використовують його, ніж ти, де ти будеш використовувати R або Python.
Уейн

1
Я роблю всю свою роботу в MATLAB, це не найкраща мова програмування у світі (я б сказав, що R була ще гірша; o), але варто наполегливо наполегливо працювати, оскільки це дуже добре для машинного навчання. Для нейронних мереж шукайте бібліотеку NETLAB, а також досліджуйте Гауссовий процес з бібліотекою GPML, обидва - це відмінні біти набору, а IIRC обидва працюють з октавою. Для регульованої лінійної регресії це лише один рядок MATLAB, для нелінійних моделей існує панель інструментів GKM , theoval.cmp.uea.ac.uk/projects/gkm (вибачте, ще не щорічно).
Дікран Марсупіал

1
Матричні обчислення можна робити і в R, хоча позначення, наприклад t(A) %*% B, є менш інтуїтивними, ніж у Matlab.
Ітамар

1
Чи не є хороших матричних бібліотек для всіх мов високого рівня, таких як C #, Java, Python та Perl?
B Сім

10

Scikit-Learn (тепер sklearn) повинні відповідати кілька критеріїв , описаних вами (швидкість, добре розроблені класи для обробки даних, моделі і результати), в тому числі цільових програм (L1 / L2 порушує регресії, SVM, і т.д.). Він постачається з багатим набором документації та безліччю прикладів . Дивіться також його опис у статті, опублікованій в JMLR.

Альтернативна рамка в Python - це Orange , яку можна використовувати через ніжний графічний інтерфейс або безпосередньо в командному рядку. Для спільної фільтрації pyrsvd може бути цікавим, але я ніколи цього не пробував. Однак Apache Mahout, безумовно, може бути використаний для спільної фільтрації .


1

Якщо ви посилаєтесь на промисловий прототип (тобто щось, що робиться для використання реальними людьми, а не для чистого дослідження), пітон на даний момент є єдиним шляхом.

Якщо ви використовуєте Matlab, Octave або R, ви отримаєте просте у використанні середовище для дослідження ML, але це буде кошмаром, щоб поставити модель на роботу з користувальницьким інтерфейсом або за допомогою веб-сервісу.

У python нам пощастило мати як розгалужену наукову екосистему ( sklearn для ML, панди для перебору даних, matplotlib / seaborn для візуалізації), так і екосистему додатків (подумайте про django та її спокій ).

Python - це легка мова для вивчення. В майбутньому я сподіваюся, що екосистема Javascript стане науково обгрунтованою як пітон, але, незважаючи на деякі чудові проекти, я не бачу цього найближчим часом.

Не загортайте себе в коробку, використовуйте загальну мову!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.