Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 30.05.2014
Сообщений: 35

Какую модель в sklearn использовать для кластеризации векторов doc2vec?

17.10.2019, 10:54. Показов 2298. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! У меня есть необходимость отсортировать тексты по тематикам. Я использую логическую регрессионную модель для обучения системы "LogisticRegression", и при этом, чтобы ее корректно обучить я должен подать на вход минимум два массива (например позитивные и негативные отзывы). Из классического примера все исправно работает, но если я подам на вход модели например новости спортивной тематики, то классификатор продолжит относить их либо к одному либо к другому классу (позитивным и негативным отзывам). Вопросов несколько:
1) Могу ли я таким образом обучить систему чтобы модель распознавала на входе другие темы и относила их к другому классу, или сообщала каким то образом что она не относиться ни к какому классу? (с учетом того чтобы заранее не обучать систему)
2) Если такой возможности нет, могу ли я как-то обучить систему на каждый из классов (т.е. создать 2 модели вместо одной) и в процентном соотношении измерять подходит ли конкретный текст к каждой модели?

Заранее извиняюсь за возможную путаницу в научных терминах
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2019, 10:54
Ответы с готовыми решениями:

Sklearn. Названия для кластеров и использование результатов кластеризации для последующей классификации
Можно ли как-то автоматизированно дать названия выделенным кластерам? Возможно ли использовать результаты кластеризации для создания...

Какую математическую модель использовать?
Всем, доброго времени суток, я долгое время ломаю голову над задачей: есть гидропонная установка на 30 месть, в которой садят 3 растения...

Какую модель связи отношений использовать? EF Core
Добрый день, уважаемые форумчане. У меня есть задача, где присутствуют два отношения Сотрудник и Выполненная работа. Текст задачи: -...

6
2742 / 1668 / 269
Регистрация: 19.02.2010
Сообщений: 4,415
17.10.2019, 11:26
Цитата Сообщение от gravity48 Посмотреть сообщение
Могу ли я таким образом обучить систему чтобы модель распознавала на входе другие темы и относила их к другому классу, или сообщала каким то образом что она не относиться ни к какому классу? (с учетом того чтобы заранее не обучать систему)
Можете.
К обычному класстерному анализу методом динамических ядер (k-means) надо пришить индикатор расстояния от вектора до кластера. Т.е. при "боевой работе" для вектора не просто определять ближайший кластер - но затем ещё и смотреть, чтобы расстояние не вышло за пределы типичного разброса точек этого кластера (и если получается сильно большое расстояние - то сигналить, что это какой-то новый случай).
Если же хочется/можется программировать метод с нуля самому - то можно посмотреть и в сторону растущих кластеризующих нейросеток, типа японских SOINN/ESOINN. У них тоже встроенный индикатор похожести/новизны векторов.
Метки же классов кластерам (хоть k-means'овским, хоть нейронным) и, затем, классифицируемым при "боевой работе" векторам вешать в соответствии с наиболее частым классом в каждом кластере (но можно и не скалярный ответ выдавать - а вероятности в соответствии с частотами классов, ранее попавших в кластер).

И, наверное, лучше будет предварительно сжать размерность данных - перейти хотя-бы в пространство нескольких десятков первых главных компонент (нелинейный вариант сжатия=проецирования - глубокий автоенкодер).
0
1 / 1 / 1
Регистрация: 30.05.2014
Сообщений: 35
17.10.2019, 14:28  [ТС]
Спасибо большое за быстрый ответ, суть я саму уловил, тогда встречный вопрос. Используя нейросети SOINN/ESOINN я так понимаю получу более качественный результат нежели вычисляя примитивное расстояние между векторами? В любом случае постораюсь потестировать на небольшой выборке отпишусь по результатам
0
2742 / 1668 / 269
Регистрация: 19.02.2010
Сообщений: 4,415
17.10.2019, 16:39
Цитата Сообщение от gravity48 Посмотреть сообщение
Используя нейросети SOINN/ESOINN я так понимаю получу более качественный результат нежели вычисляя примитивное расстояние между векторами?
Можно сказать, что именно так. Фишка этих нейронок в том, что они не просто кластеризуют - но и некоторые вектора данных могут при этом отсеять как случайный (нетипичный, статистически недостоверный) шум.
Т.е. на положения центров масс кластеров эти отсеянные "диссиденты" не повлияют (в отличие от k-means, где каждый выброс потянет ядро ближайшего к нему кластера на себя).

Но ведь и в k-means можно ввести (как при кластеризации, так и затем при "боевой работе") уникальное расстояние для каждого кластера.
Например, расстояние Махаланобиса на основе ковариационной матрицы попадающих в кластер точек - хорошо ловит геометрию эллипсоида рассеяния многомерного нормального распределения (в отличие от евклидова расстояния, которое "шарообразно"). Т.е. можно учитывать растянутость облака точек каждого кластера по его собственным "внутренним" осям, и одновременно иметь хороший порог для отсеивания нетипичных точек (если расстояние М. >3 - значит, точка отстоит от центра распределения более чем на 3 сигмы, и с точки зрения нормального распределения является очень нетипичной).


ЗЫ. Сорри, если немного свернул Ваши мысли в сторону от задачи обучения к задаче кластеризации без учителя (и навешивании меток классов уже на выявленные кластеры). Ибо всех смысловых/прикладных подробностей Вашей задачи Вы не описали - и приходится стрелять наугад (может быть, в совсем не ту сторону, которая Вам реально нужна/поможет).

ЗЗЫ. Ещё раз сорри - я с sklearn дела не имел, поэтому чисто насчёт вариантов постановки прикладной задачи даю советы. А можно ли (и как) эти советы с помощью sklearn реализовать... Понятно, что на питоне-то всё можно сделать, но в рамках возможностей конкретной библиотеки...
0
1 / 1 / 1
Регистрация: 30.05.2014
Сообщений: 35
17.10.2019, 17:01  [ТС]
Суть она правильная, обучение без учителя в моем случае выглядит предпочтительно, k-means я хотел бы использовать в крайнем случае раз есть реализации основанные на нейронных сетях .Единственное я не могу разобраться с практической точки зрения.
https://github.com/huagc/ESoin... er/demo.py
Выдает такую ошибку
Use the np.resize function or refcheck=False

Добавлено через 3 минуты
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
сжать размерность данных - перейти хотя-бы в пространство нескольких десятков первых главных компонент (нелинейный вариант сжатия=проецирования - глубокий автоенкодер).
Они как то критично относятся к размерности векторов?

Добавлено через 5 минут
Еще заметил одну особенность, незнаю с чем это связанно, когда запускаю год без точек остановок, код работает исправно, но стоит запускать через деббагер и ошибки выдает))
0
2742 / 1668 / 269
Регистрация: 19.02.2010
Сообщений: 4,415
20.10.2019, 21:58
Цитата Сообщение от gravity48 Посмотреть сообщение
Выдает такую ошибку
Use the np.resize function or refcheck=False
Увы, я чужих исходников не смотрю. Тем более, на питоне
В этом разделе я отвечаю чисто по мат.методам. Ибо питоном не владею. Вернее, прочитать-то (и понять логику чьей-то проги исходя из в т.ч. из названий функций) код смогу, но что/как делает какая-то функция - ХЗ в большинстве случаев.

Цитата Сообщение от gravity48 Посмотреть сообщение
Они как то критично относятся к размерности векторов?
Нет, просто я не знаю, сколько у Вас текстов (т.е. векторов).
А недоопределённую задачу (когда точек или условий меньше, чем размерность данных) не хочется иметь не только для обучения с учителем - но и для кластеризации тоже.
0
1 / 1 / 1
Регистрация: 30.05.2014
Сообщений: 35
25.10.2019, 14:39  [ТС]
Спасибо большое за ответ! Нейросети SOINN/ESOINN действительно достаточно интересная вещь, есть тонкости в плане кода, но это тема для отдельного вопроса.
Кроме того, я посмотрел открытый курс машинного обучения на хабре Открытый курс машинного обучения и там частично нашел решение для моей задачи, с помощью которого, можно подобрать оптимальное количество кластеров. На этом, вопрос можно считать закрытым.
Python
1
2
3
4
5
6
7
8
9
from sklearn.cluster import KMeans
inertia = []
for k in range(1, 8):
    kmeans = KMeans(n_clusters=k, random_state=1).fit(X)
    inertia.append(np.sqrt(kmeans.inertia_))
 
plt.plot(range(1, 8), inertia, marker='s');
plt.xlabel('$k$')
plt.ylabel('$J(C_k)$');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2019, 14:39
Помогаю со студенческими работами здесь

Какую систему управления использовать для лэндинг пейдж и нужно ли ее использовать?
Есть знания Joomla, есть резон надевать ее на лэндинг пэйдж?

Матрица несоответствия с использованием table в иерархической кластеризации и кластеризации к-средними
Здраствуйте! У меня проблемы с вычислением матрицы неcоответстий. Я создал три набора точек с многомерным нормальным распределением: ...

Какую использовать БД для программы
Делаю простенькую программу, для диплома, встал вопрос, какую БД использовать для delphi и как вообще это примерно реализовывается? БД...

Какую ОС использовать для Python
Привет! при просмотре(чтении) видеокурсов по python + django в основном используется Linux или Mac. И часто упоминается, что при...

Создать класс для обработки векторов разность векторов норму векторов
Создать класс для обработки векторов разность векторов норму векторов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru