Автоматический прокси из другого языка к Python (летняя практика) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии 2 участников)
Строка 4: Строка 4:
 
|mentor_login={{URLENCODE:Katya|WIKI}}
 
|mentor_login={{URLENCODE:Katya|WIKI}}
 
|organization=Лаборатория методов анализа больших данных (LAMBDA)
 
|organization=Лаборатория методов анализа больших данных (LAMBDA)
|email1=, alex.rogozhnikov@yandex.ru
+
|hse_profile=-
|email2=axelr@yandex-team.ru
+
|email=axelr@yandex-team.ru
 
|thesis=
 
|thesis=
 
|year=2015
 
|year=2015
Строка 15: Строка 15:
  
 
Схема:
 
Схема:
1. веб-сервер на питоне. Он умеет а) принимать json запросы и б) отдавать листинг доступных классов и информацию об их конструкторах (IPython, например, так работает)  
+
# веб-сервер на питоне. Он умеет а) принимать json запросы и б) отдавать листинг доступных классов и информацию об их конструкторах (IPython, например, так работает)  
2. ""клиент"" на другом языке, скажем, на R или Ruby. Ожидаемое поведение в другом языке:
+
# ""клиент"" на другом языке, скажем, на R или Ruby. Ожидаемое поведение в другом языке:
box = PythonProxy('http://гдесервер')  
+
box = PythonProxy('http://гдесервер')  
clf = box.sklearn.ensemble.AdaBoostClassifier(base_estimator=box.sklearn.ensemble.GradientBoostingClassifier())
+
clf = box.sklearn.ensemble.AdaBoostClassifier(base_estimator=box.sklearn.ensemble.GradientBoostingClassifier())
clf.fit(X, y)
+
clf.fit(X, y)
  
 
В первой строке произошло подключение к серверу, выкачка данных о доступных классах (она может происходить лениво, как в IPython), во второй конструируется объект с использованием проксей к этим классам (использовались классы из библиотеки sklearn), в третьей вызывается метод, на сервер передается json-представление текущего объекта и параметры X,y. На сервере происходит обучение и возвращается обратно новый clf.
 
В первой строке произошло подключение к серверу, выкачка данных о доступных классах (она может происходить лениво, как в IPython), во второй конструируется объект с использованием проксей к этим классам (использовались классы из библиотеки sklearn), в третьей вызывается метод, на сервер передается json-представление текущего объекта и параметры X,y. На сервере происходит обучение и возвращается обратно новый clf.
 
На второй и третьей строках должно работать автодополнение (intellisense).
 
На второй и третьей строках должно работать автодополнение (intellisense).
  
Зачем это надо?
+
=== Зачем это надо? ===
 
Чтобы классификаторы, которые есть на питоне (или имеются питон-обертки), легко было использовать из других языков.
 
Чтобы классификаторы, которые есть на питоне (или имеются питон-обертки), легко было использовать из других языков.
  
Строка 35: Строка 35:
 
*Python + второй язык
 
*Python + второй язык
 
*Понимание работы pickle
 
*Понимание работы pickle
;Веб-фреймворк (django, например)
+
*Веб-фреймворк (django, например)
 
*Библиотека sklearn будет выступать в роли пробного камня.
 
*Библиотека sklearn будет выступать в роли пробного камня.

Текущая версия на 20:24, 4 июня 2015

Автор Рогожников Алексей Михаилович
[- Профиль на сайте ВШЭ]
Электронная почта
Организация Лаборатория методов анализа больших данных (LAMBDA)
Учебный год 2015


Задание

Разработать минималистичный автоматический прокси из другого языка к Python.

Схема:

  1. веб-сервер на питоне. Он умеет а) принимать json запросы и б) отдавать листинг доступных классов и информацию об их конструкторах (IPython, например, так работает)
  2. ""клиент"" на другом языке, скажем, на R или Ruby. Ожидаемое поведение в другом языке:
box = PythonProxy('http://гдесервер') 
clf = box.sklearn.ensemble.AdaBoostClassifier(base_estimator=box.sklearn.ensemble.GradientBoostingClassifier())
clf.fit(X, y)

В первой строке произошло подключение к серверу, выкачка данных о доступных классах (она может происходить лениво, как в IPython), во второй конструируется объект с использованием проксей к этим классам (использовались классы из библиотеки sklearn), в третьей вызывается метод, на сервер передается json-представление текущего объекта и параметры X,y. На сервере происходит обучение и возвращается обратно новый clf. На второй и третьей строках должно работать автодополнение (intellisense).

Зачем это надо?

Чтобы классификаторы, которые есть на питоне (или имеются питон-обертки), легко было использовать из других языков.

Какие начальные требования?

  • знать python (знакомство с IPython желательно),
  • быть знакомым с R или Ruby или F#,
  • минимальный опыт работы с веб-сервисами.

Какие будут использоваться технологии?

  • Python + второй язык
  • Понимание работы pickle
  • Веб-фреймворк (django, например)
  • Библиотека sklearn будет выступать в роли пробного камня.