Архив метки: orange

Python + Orange

# ​https://orange3.readthedocs.io/projects/orange-data-mining-library/en/latest/tutorial/classification.html Документация по работе с моделями Orange для классификации из кода на Python
# ​https://stackoverflow.com/questions/63060587/deploying-orange-3-models рецепт по загрузке готовой модели из файла 

>>> import Orange
>>> iris = Orange.data.Table('Iris')  # Загрузка данных для модели, имя файла
>>> iris  # как выглядят загруженные данные
[[5.1, 3.5, 1.4, 0.2 | Iris-setosa],
 [4.9, 3.0, 1.4, 0.2 | Iris-setosa],
 [4.7, 3.2, 1.3, 0.2 | Iris-setosa],
 [4.6, 3.1, 1.5, 0.2 | Iris-setosa],
 [5.0, 3.6, 1.4, 0.2 | Iris-setosa],
 ...
]
>>> iris.domain  # колонки загруженной таблицы
[sepal length, sepal width, petal length, petal width | iris]
>>> tr = Orange.classification.TreeLearner()  # выбор типа классификатора
>>> classifier = tr(iris)  # обучение модели на загруженных данных
>>> printed_tree = classifier.print_tree()  # просмотр, чему модель на данных научилась (не обязательно смотреть)
>>> for i in printed_tree.split('\n'):
...   print(i)
...
       [50.  0.  0.] petal length ≤ 1.9
       [ 0. 50. 50.] petal length > 1.9
       [ 0. 49.  5.]     petal width ≤ 1.7
       [ 0. 47.  1.]         petal length ≤ 4.9
          [0. 2. 4.]         petal length > 4.9
          [0. 0. 3.]             petal width ≤ 1.5
          [0. 2. 1.]             petal width > 1.5
          [0. 2. 0.]                 sepal length ≤ 6.7
          [0. 0. 1.]                 sepal length > 6.7
       [ 0.  1. 45.]     petal width > 1.7
>>> iris[2]  # просмотр произвольной записи из данных для обучения
[4.7, 3.2, 1.3, 0.2 | Iris-setosa]
>>> classifier(iris[2])  # предсказание класса для записи из данных для обучения
0  # индекс предсказанного класса
>>> classifier(iris)  # предсказание классов для всех записей из данных для обучения
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], dtype=int64)
>>> classifier([1,1,1,1])  # предсказание по произвольным значениям от пользователя
0  # индекс предсказанного класса
>>> classifier([3,3,3,3])
2
>>> classifier([3,3,3,0])
1
>>> classifier([3,0,3,0])
1
>>> classifier([3,0,0,0])
0
>>>

Ходовые модули Python для анализа данных и машинного обучения

== CNTK

  • # The Microsoft Cognitive Toolkit
  • «A free, easy-to-use, open-source, commercial-grade toolkit that trains deep learning algorithms to learn like the human brain.»
  • pip install cntk
  • «CNTK is no longer actively developed»

== deap

  • для использования генетических алгоритмов
  • есть хорошая книжка про генетические алгоритмы с использованием этого модуля, название не помню, но хорошая

== jupyter

  • среда для выполнения кода на питоне и просмотра результатов в браузере
  • можно перезапускать с изменениями только выбранные куски кода
  • можно выводить графики matplotlib

== keras

  • для нейронных сетей
  • может работать поверх theano, tensorflow или CNTK

== matplotlib

  • рисование графиков

== numpy

  • многомерные массивы, матрицы
  • удобная загрузка данных из бинарных файлов
  • библиотека используется во многих других (pandas, …)

== nvidia-…

  • nvidia-cublas-cu12
  • nvidia-cuda-cupti-cu12
  • nvidia-cuda-nvcc-cu12
  • nvidia-cuda-nvrtc-cu12
  • nvidia-cuda-runtime-cu12
  • nvidia-cuda-sanitizer-api-cu12
  • nvidia-cufft-cu12
  • nvidia-curand-cu12
  • nvidia-cusolver-cu12
  • nvidia-cusparse-cu12
  • nvidia-npp-cu12
  • nvidia-nvjitlink-cu12
  • nvidia-nvjpeg-cu12
  • nvidia-nvml-dev-cu12
  • nvidia-nvtx-cu12
  • nvidia-pyindex

== opencv-python

  • pip install opencv-python
  • машинное зрение, распознавание объектов на изображениях и т.п.

== orange3

  • графический интерфейс для создания пайплайнов анализа данных
  • код можно вообще не писать
  • загрузка csv-файлов
  • куча всяких удобных интерактивных графиков
  • можно легко создавать предсказательные модели на деревьях, бустинге, простых нейросетях и прочих готовых алгоритмах

== pandas

  • для извлечения и подготовки данных
  • похоже на электронные таблицы, можно задавать и использовать имена колонок и индексы для строк
  • на базе numpy
  • загрузка данных из excel, csv, json, sql
  • группировка и фильтрация данных
  • применение функций ко всем значениям в выбранных колонках — в разы быстрее чем использовать циклы на чистом питоне
  • надо внимательно следить при работе с данными, когда они нормально скопированы, а когда ссылаются на источник, чтоб изменяя значения в одном месте, не испортить их в другом

== pillow

  • работа с изображениями
  • можно попиксельно

== plotly

  • интерактивные графики в браузере
  • pip install plotly

== pyodbc

  • для выполнения запросов к разным базам данных (MSSQL, PG и т.п.)
  • для разных баз данных изредка работает с разными ошибками (изредка случалось, результаты из модуля не совпадали с результатами через нативные клиенты), но в большинстве случаев всё хорошо

== pytorch

  • библиотека для машинного обучения
  • нейронные сети
  • тензорные вычисления
  • может работать с GPU
  • говорят, что замена для numpy
  • вроде поддерживает динамические графики

== scikit-learn

  • библиотека всяких алгоритмов машинного обучения — кластеризации, регрессии, классификации, …
  • на основе numpy и scipy

== scipy

  • для статистики, линейной алгебры, числовых процедур и оптимизации
  • на основе numpy

== seaborn

  • библиотека построения графиков и визуализации данных
  • основана на matplotlib

== spyder

  • интерактивный редактор кода с автодополнением
  • можно выполнять код прямо внутри редактора
  • можно сразу выводить графики matplotlib

== sympy

  • для символьных вычислений — не только получения значений, а сокращения формул и т.п.
  • для уравнений в решении умеет возвращать несколько корней, как положено
  • хорошая статья с примерами на хабре https://habr.com/ru/post/680258/

== tensorflow

  • для нейронных сетей

== theano

  • для нейронных сетей
  • может использовать GPU

Ещё не написал про модули от nvidia для работы с GPU

Если кто ещё знает полезные модули по теме — пишите в коментариях, тоже соберём в кучу