k-medoids кластеризация
выполняет k-medoids, Кластеризирующийся, чтобы разделить наблюдения за n-by-p матричный idx
= kmedoids(X
,k
)X
в k
кластеры, и возвращают n-by-1 векторный idx
содержа кластерные индексы каждого наблюдения. Строки X
соответствуйте точкам, и столбцы соответствуют переменным. По умолчанию, kmedoids
использование придало квадратную форму Евклидовой метрике расстояния и k - средние значения ++ алгоритм для выбора начального кластера medoid положения.
дополнительные опции использования заданы одним или несколькими idx
= kmedoids(X
,k
,Name,Value
)Name,Value
парные аргументы.
Случайным образом сгенерируйте данные.
rng('default'); % For reproducibility X = [randn(100,2)*0.75+ones(100,2); randn(100,2)*0.55-ones(100,2)]; figure; plot(X(:,1),X(:,2),'.'); title('Randomly Generated Data');
Данные группы в два кластера с помощью kmedoids
. Используйте cityblock
метрика расстояния.
opts = statset('Display','iter'); [idx,C,sumd,d,midx,info] = kmedoids(X,2,'Distance','cityblock','Options',opts);
rep iter sum 1 1 209.856 1 2 209.856 Best total sum of distances = 209.856
info
struct, который содержит информацию о том, как алгоритм выполнялся. Например, bestReplicate
поле указывает на реплицирование, которое использовалось, чтобы произвести конечное решение. В этом примере использовался реплицировать номер 1, поскольку количество по умолчанию реплицирует, 1 для алгоритма по умолчанию, который является pam
в этом случае.
info
info = struct with fields:
algorithm: 'pam'
start: 'plus'
distance: 'cityblock'
iterations: 2
bestReplicate: 1
Постройте кластеры и кластер medoids.
figure; plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',7) hold on plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',7) plot(C(:,1),C(:,2),'co',... 'MarkerSize',7,'LineWidth',1.5) legend('Cluster 1','Cluster 2','Medoids',... 'Location','NW'); title('Cluster Assignments and Medoids'); hold off
Этот пример использует "Грибной" [3][4][5] [6][7] набора данных из архива машинного обучения UCI [7], описанный в http://archive.ics.uci.edu/ml/datasets/Mushroom. Набор данных включает 22 предиктора для 8 124 наблюдений за различными грибами. Предикторы являются типами категориальных данных. Например, форма дна категоризирована с функциями 'b'
для колоколообразного дна и 'c'
для конического. Грибной цвет также категоризирован с функциями 'n'
для коричневого и 'p'
для розового. Набор данных также включает классификацию для каждого гриба или съедобного или ядовитого.
Поскольку функции грибного набора данных являются категориальными, не возможно задать среднее значение нескольких точек данных, и поэтому широко используемый k - означает кластеризироваться, алгоритм не может быть обоснованно применен к этому набору данных. k-medoids является связанным алгоритмом, что данные о разделах в k отличные кластеры, путем нахождения medoids, которые минимизируют сумму несходств между точками в данных и их самом близком medoid.
medoid набора является членом того набора, среднее несходство которого с другими членами набора является самым маленьким. Подобие может быть задано для многих типов данных, которые не позволяют среднему значению быть вычисленным, позволяя k-medoids использоваться в более широкой области значений проблем, чем k - средние значения.
Используя k-medoids, этот пример кластеризирует грибы в две группы, на основе обеспеченных предикторов. Это затем исследует отношение между теми кластерами и классификациями грибов или как съедобное или как ядовитое.
Этот пример принимает, что вы загрузили "Грибной" [3][4][5] [6][7] набора данных с базы данных UCI (http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/) и сохраненный он в вашем текущем каталоге как текстовый файл под названием agaricus-lepiota.txt. Нет никаких заголовков столбцов в данных, таким образом, readtable
использует имена переменных по умолчанию.
clear all data = readtable('agaricus-lepiota.txt','ReadVariableNames',false);
Отобразите первые 5 грибов с их первыми несколькими функциями.
data(1:5,1:10)
ans = Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10 ____ ____ ____ ____ ____ ____ ____ ____ ____ _____ 'p' 'x' 's' 'n' 't' 'p' 'f' 'c' 'n' 'k' 'e' 'x' 's' 'y' 't' 'a' 'f' 'c' 'b' 'k' 'e' 'b' 's' 'w' 't' 'l' 'f' 'c' 'b' 'n' 'p' 'x' 'y' 'w' 't' 'p' 'f' 'c' 'n' 'n' 'e' 'x' 's' 'g' 'f' 'n' 'f' 'w' 'b' 'k'
Извлеките первый столбец, маркированные данные для съедобных и ядовитых групп. Затем удалите столбец.
labels = data(:,1); labels = categorical(labels{:,:}); data(:,1) = [];
Сохраните имена предикторов (функции), которые описаны в http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.names.
VarNames = {'cap_shape' 'cap_surface' 'cap_color' 'bruises' 'odor' ... 'gill_attachment' 'gill_spacing' 'gill_size' 'gill_color' ... 'stalk_shape' 'stalk_root' 'stalk_surface_above_ring' ... 'stalk_surface_below_ring' 'stalk_color_above_ring' ... 'stalk_color_below_ring' 'veil_type' 'veil_color' 'ring_number' .... 'ring_type' 'spore_print_color' 'population' 'habitat'};
Установите имена переменных.
data.Properties.VariableNames = VarNames;
Существует в общей сложности 2 480 отсутствующих значений, обозначенных как '?'
.
sum(char(data{:,:}) == '?')
ans = 2480
На основе контроля набора данных и его описания, отсутствующие значения принадлежат только 11-й переменной (stalk_root
). Удалите столбец из таблицы.
data(:,11) = [];
kmedoids
только принимает числовые данные. Необходимо бросить категории, которые вы имеете в числовой тип. Функция расстояния, которую вы будете использовать, чтобы задать несходство данных, будет основана на двойном представлении категориальных данных.
cats = categorical(data{:,:}); data = double(cats);
kmedoids
может использовать любую метрику расстояния, поддержанную pdist2, чтобы кластеризироваться. Для этого примера вы будете кластеризировать данные с помощью Расстояния Хемминга, потому что это - соответствующая метрика расстояния для категориальных данных, как проиллюстрировано ниже. Расстояние Хемминга между двумя векторами является процентом векторных компонентов, которые отличаются. Например, рассмотрите эти два вектора.
v1 = [1 0 2 1]
;
v2 = [1 1 2 1]
;
Они равны в 1-й, 3-й и 4-й координате. Начиная с 1 из 4 координат отличаются, Расстояние Хемминга между этими двумя векторами.25.
Можно использовать функциональный pdist2
измерять Расстояние Хемминга между первой и второй строкой данных, числовым представлением категориальных грибных данных. Значение.2857 средних значений, что 6 из 21 функции гриба отличаются.
pdist2(data(1,:),data(2,:),'hamming')
ans = 0.2857
В этом примере вы кластеризируете грибные данные в два кластера на основе функций, чтобы видеть, соответствует ли кластеризация съедобности. kmedoids
функция, как гарантируют, будет сходиться к локальной переменной минимумы кластеризирующегося критерия; однако, это не может быть глобальным минимумом для проблемы. Это - хорошая идея кластеризировать проблему несколько раз с помощью 'replicates'
параметр. Когда 'replicates'
установлен в значение, n, больше, чем 1, k-medoids алгоритм является запуском времена n, и лучший результат возвращен.
Запускать kmedoids
к кластерным данным в 2 кластера, на основе Расстояния Хемминга и возвратить лучший результат 3 реплицирует, вы запускаете следующее.
rng('default'); % For reproducibility [IDX, C, SUMD, D, MIDX, INFO] = kmedoids(data,2,'distance','hamming','replicates',3);
Давайте примем, что грибы в предсказанной группе 1 ядовиты, и группа 2 все съедобны. Чтобы определить производительность кластеризации результатов, вычислите, сколько грибов в группе 1 действительно ядовито, и группа 2 съедобны на основе известных меток. Другими словами, вычислите количество ложных положительных сторон, ложных отрицательных сторон, а также истинных положительных сторон и истинных отрицательных сторон.
Создайте матрицу беспорядка (или соответствие с матрицей), где диагональные элементы представляют количество истинных положительных сторон и истинных отрицательных сторон, соответственно. Недиагональные элементы представляют ложные отрицательные стороны и ложные положительные стороны, соответственно. Для удобства используйте confusionmat
функция, которая вычисляет матрицу беспорядка, данную известные метки и предсказанные метки. Получите предсказанную информацию метки от IDX
переменная. IDX
содержит значения 1 и 2 для каждой точки данных, представляя ядовитые и съедобные группы, соответственно.
predLabels = labels; % Initialize a vector for predicted labels. predLabels(IDX==1) = categorical({'p'}); % Assign group 1 to be poisonous. predLabels(IDX==2) = categorical({'e'}); % Assign group 2 to be edible. confMatrix = confusionmat(labels,predLabels)
confMatrix = 4176 32 816 3100
Из 4 208 съедобных грибов, 4176 были правильно предсказаны, чтобы быть в группе 2 (съедобная группа), и 32 были неправильно предсказаны, чтобы быть в группе 1 (ядовитая группа). Точно так же из 3 916 ядовитых грибов, 3100 были правильно предсказаны, чтобы быть в группе 1 (ядовитая группа), и 816 были неправильно предсказаны, чтобы быть в группе 2 (съедобная группа).
Учитывая эту матрицу беспорядка, вычислите точность, которая является пропорцией истинных результатов (и истинные положительные стороны и истинные отрицательные стороны) против полных данных и точности, которая является пропорцией истинных положительных сторон против всех положительных результатов (истинные положительные стороны и ложные положительные стороны).
accuracy = (confMatrix(1,1)+confMatrix(2,2))/(sum(sum(confMatrix)))
accuracy = 0.8956
precision = confMatrix(1,1) / (confMatrix(1,1)+confMatrix(2,1))
precision = 0.8365
Результаты показали, что применение k-medoids алгоритма к категориальным функциям грибов привело к кластерам, которые были сопоставлены со съедобностью.
X
данныеДанные, заданные как числовая матрица. Строки X
соответствуйте наблюдениям, и столбцы соответствуют переменным.
k
— Количество medoidsКоличество medoids в данных, заданных как положительное целое число.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Distance','euclidean','Replicates',3,'Options',statset('UseParallel',1)
указывает, что Евклидово расстояние, три реплицируют medoids в различных начальных значениях, и использовать параллельные вычисления.'Algorithm'
— Алгоритм, чтобы найти medoids'pam'
| 'small'
| 'clara'
| 'large'
Алгоритм, чтобы найти medoids, заданный как разделенная запятой пара, состоящая из 'Algorithm'
и 'pam'
, 'small'
, 'clara'
, или 'large'
. Алгоритм по умолчанию зависит от количества строк X
.
Если количество строк X
меньше 3000, 'pam'
алгоритм по умолчанию.
Если количество строк между 3 000 и 10000, 'small'
алгоритм по умолчанию.
Для всех других случаев, 'large'
алгоритм по умолчанию.
Можно заменить выбор по умолчанию путем явного утверждения алгоритма. Эта таблица суммирует доступные алгоритмы.
Алгоритм | Описание |
---|---|
'pam' |
Разделение вокруг Medoids (PAM) является классическим алгоритмом для решения k-medoids проблема, описанная в [1]. После применения функции инициализации, чтобы выбрать начальную букву medoid положения, программа выполняет шаг подкачки алгоритма PAM, то есть, это ищет по всем возможным подкачкам между medoids и non-medoids, чтобы видеть, понижается ли сумма medoid к кластерным членским расстояниям. Можно задать, какую инициализацию функционируют, чтобы использовать через Алгоритм продолжает можно следующим образом.
Алгоритм выполняет итерации сборки - и шаги подкачки, пока medoids не изменяются, или другим критериям завершения соответствуют. Алгоритм может произвести лучшие решения, чем другие алгоритмы в некоторых ситуациях, но это может быть предельно длительно. |
'small' |
Используйте алгоритм, похожий на алгоритм k-средних значений, чтобы найти Алгоритм продолжает можно следующим образом.
Алгоритм повторяет эти шаги, пока никакие дальнейшие обновления не происходят, или другим критериям завершения соответствуют. Алгоритм имеет дополнительную подобную PAM онлайновую фазу обновления (заданный |
'clara' |
Кластеризация Крупных приложений (CLARA) [1] неоднократно выполняет алгоритм PAM на случайных подмножествах данных. Это стремится преодолевать масштабирующиеся проблемы, поставленные алгоритмом PAM посредством выборки. Алгоритм продолжает можно следующим образом.
Алгоритм повторяет эти шаги, пока medoids не изменяются, или другим критериям завершения соответствуют. Для лучшей производительности рекомендуется, чтобы вы выполнили, несколько реплицируют. По умолчанию программа выполняет пять, реплицирует. Каждый реплицирует выборки |
'large' |
Это похоже на |
Пример: 'Algorithm','pam'
'OnlinePhase'
— Отметьте, чтобы выполнить подобную PAM онлайновую фазу обновления'on'
(значение по умолчанию) | 'off'
Флаг, чтобы выполнить подобную PAM онлайновую фазу обновления, заданную как разделенная запятой пара, состоящая из 'OnlinePhase'
и 'on'
или 'off'
.
Если это - on
, затем kmedoids
выполняет подобное PAM обновление medoids после итераций Ллойда в small
и large
алгоритмы. Во время этой онлайновой фазы обновления алгоритм выбирает небольшое подмножество точек данных в каждом кластере, которые являются самыми далекими от и самыми близкими к medoid. Для каждой выбранной точки это повторно присваивает кластеризацию целого набора данных и проверку, если это создает меньшую сумму расстояний, чем самое известное.
Другими словами, факторы подкачки ограничиваются точками около medoids и далекие от medoids. Близкие вопросы рассматриваются для того, чтобы совершенствовать кластеризацию. Далекие вопросы рассматриваются для того, чтобы выйти из локальных минимумов. Включение этой функции имеет тенденцию улучшать качество решений, сгенерированных обоими алгоритмами. Общее время выполнения имеет тенденцию увеличиваться также, но увеличение обычно меньше одной итерации PAM.
Пример: OnlinePhase,'off'
'Distance'
— Метрика расстояния'sqeuclidean'
(значение по умолчанию) | 'euclidean'
| 'seuclidean'
| 'cityblock'
| 'minkowski'
| 'chebychev'
| 'mahalanobis'
| 'cosine'
| 'correlation'
| 'spearman'
| 'hamming'
| 'jaccard'
| пользовательская функция расстоянияМетрика расстояния, в p-мерном-пространстве, заданном как отдельная от запятой пара, состоящая из 'Distance'
и 'euclidean'
, 'seuclidean'
, 'cityblock'
, 'minkowski'
, 'chebychev'
, 'mahalanobis'
, 'cosine'
Корреляция
, 'spearman'
, 'hamming'
, 'jaccard'
, или пользовательская функция расстояния.
kmedoids
минимизирует сумму medoid к кластерным членским расстояниям. Смотрите pdist
для определения каждой метрики расстояния. kmedoids
поддержки все метрики расстояния поддержаны pdist
.
Пример: 'Distance','hamming'
'Options'
— Опции, чтобы управлять итеративным алгоритмом, чтобы минимизировать подходящие критерии[]
(значение по умолчанию) | массив структур, возвращенный statset
Опции, чтобы управлять итеративным алгоритмом, чтобы минимизировать подходящие критерии, заданные как разделенная запятой пара, состоящая из 'Options'
и массив структур, возвращенный statset
. Поддерживаемые поля массива структур задают опции для управления итеративным алгоритмом. Эта таблица суммирует поддерживаемые поля.
Поле | Описание |
---|---|
Display | Level of display выводится. Выбором является 'off' (значение по умолчанию) и 'iter' . |
MaxIter | Максимальное количество итераций позволено. Значением по умолчанию является 100 . |
UseParallel | Если true , вычислите параллельно. Если Parallel Computing Toolbox™ не доступен, то расчет происходит в последовательном режиме. Значением по умолчанию является false , значение последовательного расчета. |
UseSubstreams | Установите на true вычислить параллельно восстанавливаемым способом. Значением по умолчанию является false . Чтобы вычислить восстанавливаемо, необходимо также установить Streams к типу, позволяющему подпотоки: 'mlfg6331_64' или 'mrg32k3a' . |
Streams | RandStream объектный массив или массив ячеек таких объектов. Для получения дополнительной информации об этих опциях и параллельных вычислениях в Statistics and Machine Learning Toolbox™, смотрите, Ускоряют Статистические Расчеты или вводят help parallelstats в командной строке. |
Пример: 'Options',statset('Display','off')
'Replicates'
— Число раз, чтобы повторить кластеризацию с помощью нового начального кластера medoid положенияЧисло раз, чтобы повторить кластеризацию с помощью нового начального кластера medoid положения, заданные как положительное целое число. Значение по умолчанию зависит от выбора алгоритма. Для pam
и small
, значение по умолчанию равняется 1. Для clara
, значение по умолчанию равняется 5. Для large
, значение по умолчанию равняется 3.
Пример: 'Replicates',4
'NumSamples'
— Количество выборок, чтобы взять из данных при выполнении clara алгоритма40+2*k
(значение по умолчанию) | положительное целое числоКоличество выборок, чтобы взять из данных при выполнении clara
алгоритм, заданный как положительное целое число. Количество по умолчанию выборок вычисляется как 40+2*k
.
Пример: 'NumSamples',160
'PercentNeighbors'
— Процент набора данных, чтобы исследовать использующий большой алгоритмПроцент набора данных, чтобы исследовать использование large
алгоритм, заданный как положительное число.
Программа исследует percentneighbors*size(X,1)
количество соседей к medoids. Если нет никакого улучшения суммы в кластере расстояний, то алгоритм останавливается.
Значение этого параметра между 0 и 1, где значение ближе к 1 имеет тенденцию давать более высокие качественные решения, но алгоритм занимает больше времени, чтобы запуститься, и значение ближе к 0, имеет тенденцию давать более низкие качественные решения, но заканчивается быстрее.
Пример: 'PercentNeighbors',0.01
'Start'
— Метод для выбора начального кластера medoid положения'plus'
(значение по умолчанию) | 'sample'
| 'cluster'
| матрицаМетод для выбора начального кластера medoid положения, заданные как разделенная запятой пара, состоящая из 'Start'
и 'plus'
, 'sample'
, 'cluster'
, или матрица. Эта таблица суммирует доступные методы.
Метод | Описание |
---|---|
'plus' (значение по умолчанию) | Выберите k наблюдения от X согласно k - означает ++ алгоритм для кластерной центральной инициализации. |
'sample' | Выберите k наблюдения от X наугад. |
'cluster' | Выполните предварительную фазу кластеризации на случайной подвыборке (10%) X . Эта предварительная фаза самостоятельно инициализируется с помощью sample , то есть, наблюдения выбраны наугад. |
матрица | Пользовательский k - p матрица стартовых местоположений. В этом случае можно передать в [] для k входной параметр и kmedoids выводит k от первой размерности матрицы. Можно также предоставить трехмерный массив, подразумевая значение для 'Replicates' от третьей размерности массива. |
Пример: 'Start','sample'
Типы данных: char |
string
| single
| double
idx
— Индексы MedoidИндексы Medoid, возвращенные как числовой вектор-столбец. idx
имеет столько же строк сколько X
, и каждая строка указывает на medoid присвоение соответствующего наблюдения.
C
— Кластер medoid местоположенияКластер medoid местоположения, возвращенные как числовая матрица. C
k-by-p матрица, где строка j является medoid кластерного j
sumd
— Суммы в кластере point-to-medoid расстоянийСуммы в кластере point-to-medoid расстояний, возвращенных как числовой вектор-столбец. sumd
k
- вектор by1, где элемент j является суммой point-to-medoid расстояний в кластерном j.
D
— Расстояния от каждой точки до каждого medoidРасстояния от каждой точки до каждого medoid, возвращенного как числовая матрица. D
n-by-k
матрица, где элемент (j, m) является расстоянием от наблюдения j к medoid m.
info
— Информация об алгоритмеИнформация об алгоритме, возвращенная как struct. info
содержит опции, используемые функцией, когда выполняется, такие как k-medoid кластеризирующийся алгоритм (algorithm
), метод раньше выбирал начальный кластер medoid положения (start
), метрика расстояния (distance
), количество проделанных итераций в лучшем реплицируют (iterations
) и реплицировать количество возвращенных результатов (bestReplicate
).
k-medoids кластеризация является методом разделения, обычно используемым в областях, которые требуют робастности к данным о выбросе, произвольным метрикам расстояния или единицам, для которых среднее значение или медиана не имеют ясного определения.
Это похоже на k - средние значения, и цель обоих методов состоит в том, чтобы разделить набор измерений или наблюдений в подмножества k или кластеры так, чтобы подмножества минимизировали сумму расстояний между измерением и центром кластера измерения. В k - средний алгоритм, центр подмножества является средним значением измерений в подмножестве, часто названном центроидом. В k-medoids алгоритм, центр подмножества является членом подмножества, названного medoid.
k-medoids алгоритм возвращает medoids, которые являются фактическими точками данных в наборе данных. Это позволяет вам использовать алгоритм в ситуациях, где среднее значение данных не существует в наборе данных. Это - основное различие между k-medoids и k - средние значения, где центроиды, возвращенные k - средние значения, не могут быть в наборе данных. Следовательно k-medoids полезен для кластеризации категориальных данных, где среднее значение невозможно задать или интерпретировать.
Функциональный kmedoids
обеспечивает несколько итеративных алгоритмов, которые минимизируют сумму расстояний от каждого объекта до его кластера medoid по всем кластерам. Один из алгоритмов называется разделением вокруг medoids (PAM) [1], который продолжает на двух шагах.
Шаг сборки: Каждый из кластеров k сопоставлен с потенциалом medoid. Это присвоение выполняется с помощью метода, заданного 'Start'
аргумент пары "имя-значение".
Шаг подкачки: В каждом кластере каждая точка тестируется как потенциал medoid путем проверки, получает ли сумма расстояний в кластере меньшее использование, которые указывают как medoid. Если так, точка задана как новый medoid. Каждая точка затем присвоена кластеру с самым близким medoid.
Алгоритм выполняет итерации сборки - и шаги подкачки, пока medoids не изменяются, или другим критериям завершения соответствуют.
Можно управлять деталями минимизации с помощью нескольких дополнительных входных параметров для kmedoids
, включая единицы для начальных значений кластера medoids, и для максимального количества итераций. По умолчанию, kmedoids
использует k - средние значения ++ алгоритм для кластера medoid инициализация и Евклидова метрика в квадрате, чтобы определить расстояния.
[1] Кауфман, L. и Rousseeuw, P. J. (2009). Нахождение групп в данных: введение в кластерный анализ. Хобокен, Нью-Джерси: John Wiley & Sons, Inc.
[2] Припаркуйтесь, H-S, и июнь, C-H. (2009). Простой и алгоритм FAST для кластеризации K-medoids. Экспертные системы с Приложениями. 36, 3336-3341.
[3] Schlimmer, J.S. (1987). Приобретение концепции Посредством Представительной Корректировки (Технический отчет 87-19). Докторская диссертация, Отдел Информатики и вычислительной техники, Калифорнийский университет, Ирвин.
[4] Iba, W., Wogulis, J. и Лэнгли, P. (1988). Обменивание простоты и покрытия в инкрементном изучении концепции. В продолжениях 5-й международной конференции по вопросам машинного обучения, 73-79. Анн-Арбор, Мичиган: Морган Кофманн.
[5] Дуч В, A.R., и Грабцзевский, K. (1996) Экстракция логических правил от обучающих данных с помощью сетей обратной связи. Proc. 1-го Онлайнового Семинара по Мягкому Вычислению, 19-30, стр 25-30.
[6] Дуч, W., Adamczak, R., Грабцзевский, K., Ishikawa, M. и Уэда, H. (1997). Экстракция четких логических правил с помощью ограниченных сетей обратной связи - сравнение двух новых подходов. Proc. европейского Симпозиума по Искусственным Нейронным сетям (ESANN '97), Брьюг, Бельгия 16-18.
[7] Bache, K. и Личмен, M. (2013). Репозиторий Машинного обучения UCI [http://archive.ics.uci.edu/ml]. Ирвин, CA: Калифорнийский университет, Школа Информатики и вычислительной техники.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
Установите 'UseParallel'
поле структуры опций к true
использование statset
и задайте 'Options'
аргумент пары "имя-значение" в вызове этой функции.
Например: 'Options',statset('UseParallel',true)
Для получения дополнительной информации смотрите 'Options'
аргумент пары "имя-значение".
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
clusterdata
| evalclusters
| kmeans
| linkage
| linkage
| pdist
| silhouette
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.