vkantor / mipt_data_mining_in_action_2016 Goto Github PK
View Code? Open in Web Editor NEW"Data Mining in Action Course", Moscow Institute of Physics and Technologies
"Data Mining in Action Course", Moscow Institute of Physics and Technologies
Нужно ли при построении рекомендации в списке просмотренных товаров выбирать уникальные элементы, чтобы не рекомендовать один и тот же товар несколько раз?
Резултат для precision@5 и recall@5 отличается больше, чем на 0.01.
Привет!
Можете, пожалуйста, разблокировать форму сдачи дз? Я начал заполнять значения, потом, видимо по ошибке засабмитил полупустую форму и теперь заполнить заново не даёт.
привязана к мэйлу : [email protected]
спасибо
Здравствуйте. У меня Mac OS X El Capitan. На попытку установить pylab терминал выдаёт: Collecting pylab:
Collecting pylon Could not find a version that satisfies the requirement pylab (from versions: )
No matching distribution found for pylab.
Либо если через Анаконду:
Jayms17-2:~ Anna$ conda install pylab
Fetching package metadata ......
Solving package specifications: .
PackageNotFoundError: Package not found: '' Package missing in current osx-64 channels:
Close matches found; did you mean one of these?
pylab: impyla
You can search for packages on anaconda.org with
anaconda search -t conda pylab
И я не знаю как это обойти. Подскажите, пожалуйста, что делать?
Здравствуйте. Когда считаем Precision@5 и recall@5 в сессии, где меньше 5 просмотренных товаров, мы рекомендуем все просмотренные товары и считаем точность и полноту на них, или вообще не учитываем такие сессии, ничего на них не считаем и в оценках средних точности и полноты их не учитываем?
Уберите почту учащихся, желательно чтобы данные не были доступны из коммитов
https://github.com/vkantor/MIPT_Data_Mining_In_Action_2016/blob/master/rating/all_students.json
В task_template.ipynb (у индустрии в hw0) в recommend_by_ при равных частотах не учитывается порядок, в котором просматривались товары. В условии сказано, что нужно учитывать.
В задании по бустингу необходимо каждый раз обучать новое дерево и добавлять его в список estimators. Обучать одно и тоже дерево (base_estimator) естественно неправильно, поэтому должен быть способ копировать это дерево, за этим я предполагаю и импортится deepcopy.
Я пишу вот так:
estimator=deepcopy(self.base_regressor)
estimator.fit(X,grad)
self.estimators_.append(estimator)
Но ничего не работает, потому что если вместе deepcopy(..) писать просто DecisionTreeRegressor, то всё работает прекрасно.
Что я делаю не так?
Сверточная нейронная сеть с парой слоев (элементарный пример) при обучении начинает линейно увеличивать потребление оперативной памяти (вплоть до 16гб + 10 гб файла подкачки). Слышал от ребят, что такая проблема встречалась, может кто знает, в чем дело?
Стоит ubuntu 16.04 (под windows данной проблемы нет).
Anaconda 2.7 64 bit
Последние версии lasagne и theano.
Добрый день! Помогите, пожалуйста, разобраться с ошибкой.
Перед разделением выборки на обучающую и тестовую строка
from sklearn.model_selection import train_test_split
выдает такую ошибку:
from ..utils.extmath import stable_cumsum
ImportError: cannot import name 'stable_cumsum'
sklearn у меня установлен. Что я сделал не так?
Заранее спасибо!
Здравствуйте, возникает проблема при попытке использования LaTex в matplotlib: графики 3х элементарных функций из задания по Python рисуются отлично до тех пор, пока не используется LaTex. Если написать:
rc('text', usetex=True),
то возникает ошибка
RuntimeError: LaTeX was not able to process the following string:
'lp'
Here is the full report generated by LaTeX:
<matplotlib.figure.Figure at 0x11501bf90>,
от которой спасает только перенесение всего кода в новый ноутбук. В чем может быть причина?
Ошибка в логрегрессии в задании по theano. Не представляю, что с этим делать :(
UnicodeEncodeError Traceback (most recent call last)
in ()
2
3 for i in range(5):
----> 4 loss_i = train_function(X_train,y_train)
5 print "loss at iter %i:%.4f"%(i,loss_i)
6 print "train auc:",roc_auc_score(y_train,predict_function(X_train))
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/theano/compile/function_module.pyc in call(self, *args, **kwargs)
869 node=self.fn.nodes[self.fn.position_of_error],
870 thunk=thunk,
--> 871 storage_map=getattr(self.fn, 'storage_map', None))
872 else:
873 # old-style linkers raise their own exceptions
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/theano/gof/link.pyc in raise_with_op(node, thunk, exc_info, storage_map)
176 for subtr in tr:
177 traceback.print_list(subtr, sio)
--> 178 detailed_err_msg += str(sio.getvalue())
179 else:
180 hints.append(
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1486-1498: ordinal not in range(128)
На каком шаге в градиентном бустинге добавляется коэффициент learning_rate: до последнего шага, в котором оптимизируется коэффициент перед добавляемым новым деревом или после этого шага?
Я использую сверточную нейросеть со следующей архитектурой:
input_layer = lasagne.layers.InputLayer(shape=(None, 3, 32, 32), input_var=input_X)
conv1 = lasagne.layers.Conv2DLayer(input_layer, num_filters = 16, filter_size = (10, 10))
pool1 = lasagne.layers.MaxPool2DLayer(conv1, pool_size = (2, 2))
dense1 = lasagne.layers.DenseLayer(pool1, num_units = 50, nonlinearity = sigmoid)
dense_output = lasagne.layers.DenseLayer(dense1, num_units = 10, nonlinearity=softmax)
Все функции для обучения скопированы с домашки 3 (mnist). Там свертка с примерно такой же архитектурой работает прекрасно (98.5-98.6%).
Когда ставлю ее обучаться на датасете cifar, loss меняется лишь в пределах 10^(-4), а качество на трейне и тесте не меняется за 100 эпох никак, оставаясь на уровне около 10%. Правильность передачи данных на вход нейросети проверял (когда передача была неправильной, качество скакало на уровне 10 +- 1%, а как исправил - перестало меняться). Не подскажете, с чем это может быть связано?
На 3м питоне функция load_CIFAR_batch
def load_CIFAR_batch(filename):
""" load single batch of cifar """
with open(filename, 'rb') as f:
datadict = pickle.loads(f, fix_imports=True, encoding="bytes", errors="strict")
X = datadict['data']
Y = datadict['labels']
X = X.reshape(10000, 3, 32, 32).transpose(0,2,3,1).astype("float")
Y = np.array(Y)
return (X, Y)
выдает ошибку 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)
Что делать?
Добрый вечер, пара вопросов насчет вот этой функции, вопросы помечены в комментах:
def loss(self, X_batch, y_batch, reg):
"""Logistic Regression loss function
Inputs:
- X: N x D array of data. Data are D-dimensional rows
- y: 1-dimensional array of length N with labels 0-1, for 2 classes
Returns:
a tuple of:
- loss as single float
- gradient with respect to weights w; an array of same shape as w
"""
dw = np.zeros_like(self.w) # initialize the gradient as zero
loss = 0
# Compute loss and gradient. Your code should not contain python loops.
pred = self.predict(X_batch)
loss = hl(y_batch , pred) #hamming function
dw = X_batch.transpose() * (pred - y_batch).transpose()
dw /= X_batch.shape[0]
# Right now the loss is a sum over all training examples, but we want it
# to be an average instead so we divide by num_train.
# Note that the same thing must be done with gradient.
<-----Что здесь вообще надо сделать и зачем это??? Почему моя ошибка - это сумма по всем выборкам?
# Add regularization to the loss and gradient.
# Note that you have to exclude bias term in regularization.
<--------------Как исключить "термин смещения"?
loss *= reg
dw *= reg
return loss, dw
Насколько я понимаю принципы тренировки любого классификатора с обучением, мы берем тренировочную выборку данных с классами (обучающую), запускаем классификатор и сравниваем выданный им класс для строки выборки с реально записанным классом для этой строки. Т.е. мы подбираем функцию F(X_train)->Y_train, так, чтобы в правой части максимально близко было равно левой части.
Я не понял, что у нас является Train_Y в в коде обучения автоэнкодера. Я плохо разбираюсь в коде lasagne и theano, но здесь
http://joxi.ru/gmvRYX0hx7nv7m у нас 2 раза X_train
и в коде http://joxi.ru/823OLYaf6o38G2
здесь вроде бы target_x похоже на y_train, но я не нашел выше указания, что target_x = y_train.
Т.е. если не понятно написал, где у нас в коде автоэнкодера заданы реальные лэйблы обучающей выборки, на которых и тренируем нашу сеть?
При выполнении задания 4 по трендам выдает такую ошибку:
ImportError: No module named 'cPickle'
Пытаюсь через pip установить или проапгрейдить cPickle:
pip install --upgrade cPickle
pip install cPickle
Выдает такой результат:
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-o0zr4qpl/cPickle/
При этом другие модули ставятся и апгрейдятся нормально.
Дело в том, что у меня питон 3?
Хочу уточнить условие.
Я правильно понимаю, что мы не рассматриваем окна, выходящие за границу потока, и получившийся поток получается короче на 999 элементов?
Не работает метод,а вообще не работает sparse.hstack()
`X_train_sample = X_train[:10000]
y_train_sample = y_train[:10000]
clf = LogisticRegression()
clf.w = np.random.randn(X_train_sample.shape[1]+1) * 2
LogisticRegression.append_biases(X_train_sample)`
ValueError: could not broadcast input array from shape (10000,2000) into shape (10000)
Всем привет!
Долго мучался с установкой vowpal_wabbit отсюда (так и не получилось) на Ubuntu:
https://github.com/JohnLangford/vowpal_wabbit#compiling
В итоге с легкостью установил отсюда:
https://github.com/mokelly/wabbit_wappa
вместе с какой-то надстройкой для python (Wabbit Wappa). Не знаю как это повлияет на работу, поэтому и завёл эту тему. С другой стороны, я не вижу проблемы, и это облегчит многим страдальцам установку этого пакета. А заодно, если верить их словам, и работу улучшит.
from sklearn.model_selection import train_test_split
ImportError: cannot import name cluster
Как с этим жить? или надо train_test_split брать из какой-то другой библиотеки?
Что означает, применительно к нашему дз, последняя фраза в домашке №1 про обрезку деревьев?
Может стоит добавлять эту строчку в файлы домашки? а то люди, выросшие на python 3 мучаются, не понимая, почему у них какой-нибудь check_grad() не сходится.
Есть ли способ считать производные от выражения с матрицами прямо в матричном виде? Например производную от log loss.
Автоэнкодер бесконечно обрабатывает код, хотя на другом компе этот же код выдает результаты довольно быстро. jupiter notebook на macOS
Какие должны быть ориентировочные желательные времена подсчета? В задании написано "в течении часа", но вроде как это очень много, самый простой алгоритм без учета особенностей каждого из потоков выдает мне ~25 минут по каждому.
"Мы хотим сделать нейросеть, которая будет принимать картинку (вектор 28 x 28) и сжимать ее в вектор длины 10 (к примеру). Нашим основным инструментом будет lasagne.layers.DenseLayer."
а где можно получить информацию о том, как описывается нейросеть в lasagne? Курс ориентирован на тех, кто уже делал нейросети на Python?
http://joxi.ru/YmEVy5WSZd9PQ2
тут поставил средний слой "тупо по аналогии", взяв его из примеров в http://lasagne.readthedocs.io/en/latest/modules/layers/dense.html
почему у нас в последнем слое как вводный слой берется первый слой (net), а не средний (mid)?
Вообще, хотелось бы понять, на слушателей с какой подготовкой ориентированы эти семинары...
Пока что на первой лекции нам рассказали все в самых общих чертах, а здесь уже требуется разбираться в коде нейросетей, хотя про них ничего не говорилось...
Я один такой "тупой" или все остальные просто молчат?:)
Если я правильно понял, после того как мы разделили исходную выборку на тренировочную и тестовую, нам необходимо в logistic_regression.py разбить X_train и y_train на батчи размером 200 и высчитывать функцию ошибки на каждом батче, а не на каждом элементе. np.random.choice принимает на вход вектор. Собственно, вопрос: как обучающие sparse-матрицы преобразовать в вектор?
При попытке работы с блокнотом получаю вот такую ошибку:
ImportError: No module named utils
Где можно найти этот модуль utils
?
Поиск приводит на mlxtend, но мне кажется, это немного не то.
Как определить сколько потребуется времени на обучение сети?
Сколько должно занимать в среднем?
Какие есть варианты ускорения обучения, если у меня есть только ноут с виндой? Будет ли принципиально лучше, если поставить юбунту?
Интересует задача для трека "Тренды" - стоит уже более 3х часов, даже 1 эпоха не прошла.
ImportError: cannot import name load_mnist
Как с этим жить?
Если я правильно понял, то в задачке на выдачу рекомендаций у нас есть два алгоритма - рекомендовать из просмотренных по общей статистике просмотров, и рекомендовать из просмотренных по общей статистике покупок.
В форму требуется внести average recall и average precision для двух параметров (1 и 5), но для какого метода?
Случайно в гугле наткнулся на файл create_all_students.py, в котором есть личные данные участников. Стоит его убрать из открытого доступа. Спасибо!
Добрый день, а эти данные проверяются на kaggle, нужно самим их создать или они где-то есть? Я не могу найти на kaggle.
При запуске Cell с TSNE происходит ошибка. mid_func
до этого и правда не определен, зато определен в Cell'е "Сдачи домашки". Не уверен как это было задумано, но надо либо определить её до TSNE, либо закинуть визуализацию TSNE уже после сдачи домашки.
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-2683586f782c> in <module>()
----> 1 X_mid = mid_func(X_train)[0]
2 X_tsne = TSNE(n_components=2, n_iter=200).fit_transform(X_mid[:2000])
3 pylab.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y_train[:2000], cmap=pylab.cm.hot)
NameError: name 'mid_func' is not defined
Использую нейросеть с простой архитектурой:
input_layer = lasagne.layers.InputLayer(shape=(None,3, 32, 32), input_var=input_X)
nnet = Conv2DLayer(input_layer, num_filters=7, filter_size=(5,5))
dense_output = lasagne.layers.DenseLayer(nnet,num_units = 10, nonlinearity=softmax)
Когда начинаю процесс обучения (код обучения уже был дан) возникает ошибка:
BaseCorrMM: Failed to allocate output of 50 x 7 x 28 x -1
Подскажите, что не так.
( Ссылка на ноутбук https://github.com/Ahan05/MIPT_Data_Mining_In_Action_2016/blob/master/trends/hw4/cifar.ipynb )
Добрый день!
Пробовал бенчмар по спортивной секции и скачал xgboost. Почему-то получаю следующую ошибку. Пытался ее гуглить, но ничего особо не понял.
AttributeError Traceback (most recent call last)
in ()
----> 1 Xdatatrain = xgboost.DMatrix(data = xtrain, label = ytrain)
2 Xdatatest = xgboost.DMatrix(data = xval, label = yval)
3
4 plst = list(param.items())
5 watchlist = [(Xdatatrain, 'train'), (Xdatatest, 'eval')]
AttributeError: module 'xgboost' has no attribute 'DMatrix'
что делать?
Всем привет!
Получила результаты, проверила вручную на коротких входных данных, тут все ок. Проблема в том, что итоговые ответы по выборкам train и test после запятой имеют 3-4 нуля. То есть м.б. я получила неправильный результат/ не поняла условия или определения/ так и должно быть, хотелось бы получить комментарий.
при подклчении библиотек после строчки from utils import load_mnist консоль сообщает об ошибке в импорте переменной load_mnist из utils,
с чем это связано? :(
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.