Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
29 / 29 / 5
Регистрация: 21.04.2012
Сообщений: 282

Классификация на основе решающих списков

17.11.2013, 14:35. Показов 2571. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый. Вопрос вот в чем, никто не встречал может где-то реализацию алгоритма классификации на основе решающих списков в среде Matlab? Или кто-то реализовывал?

А то надо либо найти, либо придется писать...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2013, 14:35
Ответы с готовыми решениями:

Классификация текста на основе нейронных сетей
Всем привет. У меня такая задача,на основе нейронных сетей написать прогу для классификации текста,с общей базой данных. Даже не знаю с...

Классификация изображений на основе онтологии
Здравствуйте! Есть такая задача – разработать систему распознавания изображений на основе онтологического подхода. Для меня это новая...

Тест на основе выпадающих списков
Доброго времени суток, уважаемые Форумчане! Вынуждена просить Вашей помощи в решении нескольких задач, так как сама на данный момент не...

6
319 / 258 / 30
Регистрация: 30.03.2013
Сообщений: 755
18.11.2013, 21:36
может это

http://www.robots.ox.ac.uk/~vg... cation.htm

Добавлено через 17 минут
Math and Statistical Analysis
Signal / Image Processing, Time-Frequency and Wavelet Analysis
Classification and Dimension Reduction Techniques
Visualization (Computer Vision and Data Smoothing)
Physics Sciences and Engineering Applications
Earth-Astorophysical Sciences and Civil Engineering Applications
Bio-Medical and Cognitive Sciences and Engineering Applications
Economics and Finance Applications
Utilities
Others (Link: Books with Reviews)

https://sites.google.com/site/... s#classify
0
29 / 29 / 5
Регистрация: 21.04.2012
Сообщений: 282
02.06.2014, 19:38  [ТС]
Поднимаю тему. Время прижало и надо дописать этот классификатор несчастный. Нашел вот теорию (во вложении). Использую алгоритм Агеева. Написал пока что только для правил из одного признака. У меня есть для обучения матрица data - матрица признак*текст. И вектор классов (к какому классу какой текст принадлежит). На нем я обучаю классификатор (формирую правила эти). И потом уже беру тестовые матрицы признак*текст и классифицирую эти тексты.

Обучение:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function Ded_List = Dedicated_List_Train(B,C,l)
%B - эталонная матрица признак - текст           
%C - эталонный вектор текст - класс(в ячейке номер класса)
%l - макс число элементов в формуле
%Ded_List - выходной параметр (матрица с признаками для класса)
 
%максимальное число элементов в формуле
k_max = l; 
%максимальное значение полноты
r_max = 0.1; 
%b и гамма для вычисления f
b = 1;
g = 0;
%сколько всего классов
Count_Of_Class = max(C);
%k - количество признаков (слов);n - количество текстов
[k,n] = size(B); 
 
%если есть признак, то единица(не важно сколько раз он встретился)
B(B > 1) = 1;
 
%создадим матрицу, где строки - классы, столбцы - тексты
cl = sparse(C, 1:n, ones(1,n));
 
%матрица со списком признаков для каждого класса
List = zeros(Count_Of_Class,k_max);
 
%ПОКА БЕЗ ПРОВЕРКИ НА ТОЧНОСТЬ
for j = 1:Count_Of_Class
    %Тексты с признаками и в 1 классе
    B2 = B(:,find(cl(j,:)));
    for i = 1:k_max
        %смотрим список признаков и зануляем те, которые уже занесены туда
        if i ~= 1
            B2(List(j,i-1),:) = 0;
        end
 
        %матрица числителей для полноты и точности
        n11 = sum(B2');
 
        %точность
        p = n11 ./ sum(B');
 
        %полнота
        r = n11 ./ sum(cl(j,:));
 
        %F-мера
        F = (0.5*(p.^(-1) + r.^(-1))).^(-1);
 
        %значимая функция fq
        f = (1 + b + g) ./ ((b ./ p) + (1 ./ r) + (g ./ r));
 
        [~,List(j,i)] = max(f); 
    end
end
 
%преобразуем итоговый List
Ded_List = zeros(Count_Of_Class,k);
 
for i = 1:Count_Of_Class
    for j = 1:k_max
        Ded_List(i,List(i,j)) = 1;
    end
end
end
И сама классификация:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function cl = Dedicated_List(Ded_List,A)
%List - список правил после обучения
%А - матрица, которую классифицируем
 
[~,Count_Of_Text] = size(A);
%если есть признак, то единица(не важно сколько раз он встретился)
A(A > 1) = 1;
%матрица со значениями для каждого текста
ololo = Ded_List * A;
%вектор классов
cl = zeros(1,Count_Of_Text);
for i = 1:Count_Of_Text
    [~,cl(i)] = max(ololo(:,i));
end
end
Теперь вопрос встал как реализовать классификацию когда множество конъюнктов формируется из двух термов...
Дабы немного упростить задачу я выкинул все признаки, которые встречаются только в одном тексте, сформировал матрицу признак*признак, где в ячейке количество текстов, в которых встретились признак i и j. Сделал ее верхнетреугольной (оставил главную диагональ, т.к. на диагонали по сути стоят конъюнкты из 1 терма) и получил список с двумя признаками. Но их в нем более 2000000. Хотел также создать матрицу признак*текст (только по строкам уже будет не один признак а два) но боюсь что очень долго все будет работать...

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function f = test( data, data_cl )
 
%сколько всего классов
Count_Of_Class = max(data_cl);
%длина списка
k_max = 10;
 
%словарь пар слов
%получили матрицу признаки*признаки, где в ячейке количество текстов, в
%которых встретились признаки i и j
data2 = data * data';
%убираем те признаки, которые только в одном тексте
data2(data2 <= 1) = 0;
%матрица симметричная, делаем ее верхнетреугольной, оставляя главную
%диагональ
data2 = triu(data2);
%вектора с такими признаками
[i,j] = find(data2);
%получаем список с двумя признаками. в строке хранятся номера двух
%признаков
spis = [i,j];
end
Вложения
Тип файла: pdf Классификация на основе решающих списков.pdf (449.0 Кб, 16 просмотров)
0
319 / 258 / 30
Регистрация: 30.03.2013
Сообщений: 755
03.07.2014, 00:16
Вообще с 2 000 000 объектами для классификации лучше не связываться, это очень много, ни в каком "обычном" компе найти в лоб оптимальные кластеры не получиться

Нужно как то уменьшать количество объектов для классификации.

Можно использовать двумерные частоты встречаемости, чтобы оценить есть ли там вообще отчетливо выраженные классы.
Если есть- тем более что признаков всего два - то работать с центрами этих максимумов частот встречаемости

Добавлено через 29 минут
Примерно так :

Matlab M
1
2
3
x=rand(2000000,2); %  генерация данных 2 000 000 * 2
n = hist3(x,[50 50]); % получаем гистограмму частот встречаемости с сеткой например 50*50
figure, contourf(n), colorbar;% рисуем полученные частоты встречаемости на сетке 50*50
это позволяет хотя бы увидеть наличие-отсутствие кластеров в очень больших данных
но только парами по две переменные
0
29 / 29 / 5
Регистрация: 21.04.2012
Сообщений: 282
03.07.2014, 05:41  [ТС]
Может я выразился так коряво?) у меня 699 текстов. И есть 14000 признаков. Исходные данные-матрица признак*текст и вектор классов для этих текстов для обучения. И вот в соответствии с алгоритмом мне надо создать решающие правила в котором каждый элемент - это наличие сразу двух признаков в тексте. Длина такого правила может быть любой, но одинаковой для всех классов. То есть если длина правила 10, то надо проверить Нальчие 10 пар признаков в тексте. А потом вообще надо проверять тройки признаков...
0
319 / 258 / 30
Регистрация: 30.03.2013
Сообщений: 755
03.07.2014, 11:11
Что нужно классифицировать - тексты ?
и их 699 штук ?

Добавлено через 1 час 41 минуту
рекомендую посмотреть эту ссылку :

http://stats.stackexchange.com... f-clusters
0
29 / 29 / 5
Регистрация: 21.04.2012
Сообщений: 282
03.07.2014, 16:39  [ТС]
sergsh, да. И их 699. Классифицировать надо методом решающих списков. А вашей ссылке метод к средних. Если я не ошибаюсь это вообще классификатор без учителя
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2014, 16:39
Помогаю со студенческими работами здесь

Формирование таблицы на основе списков
Задание такое: Сформировать таблицу из списка. Массив в данной программе является Индексом. Т.е добавляется запись у которой...

Сформировать однонаправленный спискок S3 на основе списков S1 и S2
Сформировать два однонаправленные списки S1 и S2, сформировать список S3, куда войдут только нечетные элементы обоих списков. Вывести все...

Бинарное дерево на основе многоуровневых списков
(defun tst() (setq tree (list t &quot;tree&quot; (list (list 1 1 (list (list 1 11 (list nil nil)) (list 2 12 (list nil nil)))) (list 2 2 (list (list...

Линейные списки. Создание списков на основе имеющегося
Всем привет! Есть задача: используя линейные списки создать функции: 1. Создания списка, элементы которого будут вводиться с клавиатуры...

Сравнение двух списков, на основе vector <string>
# include &lt;iostream&gt; # include &lt;string&gt; # include &lt;fstream&gt; # include &lt;vector&gt; # include &lt;iterator&gt; # include &lt;algorithm&gt; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru