-1

Я хотел бы скопировать данные на основе ключевого слова co-entries, используя R. Я столкнулся с двумя трудностями по сравнению с other posts.Кластеризация на основе совпадений

  1. Слова различных уровней иерархии
  2. ключевые слова не обязательно показывают в порядке или уровня иерархии

Пример

Keywords 
Food;Fruit;Banana 
Food;Fruit;Apple 
Fruit;Food;Orange 
Food;Bread;Toast 
Food;Bread;Whole Grain 
Bed;Bedroom;Furniture 
Furniture;Bedroom;Bed 
Furniture;Living Room;Chair 
Furniture;Bedroom;Chair 

Я хотел бы результат будет что ключевые слова вступают в Продовольствие и Мебель на первом уровне. На втором и третьем имеются дополнительные суббры, например. Спальня, Гостиная. Если я использую иерархического кластерного анализа, как

hc <- hclust(dist(data)) 
plot(hc) 

я бы в конечном итоге с «Мебель» в качестве одной из категорий, на самом низком уровне, но это «узловая точка» в моем примере.

Есть функция, чтобы решить эту проблему?

Лучший Пит

+0

Я не понимаю, каков ваш желаемый результат. Что такое 'data', на котором вы запускаете' hclust'? Вы спрашиваете о статистических методах кластеризации? Вы просто пытаетесь изменить данные? – MrFlick

+0

Я пытаюсь найти метод для запуска по ключевым словам. Результатом должно быть дерево или что-то подобное. В этом примере метод должен определить, что продукты питания и мебель являются общими категориями. «фрукты» и «хлеб» являются подчиненными «пищей», а под фруктами - 3 категории, а именно «яблоко», «банан» и «апельсин». Есть ли такой способ, который может это сделать? – PeterGerft

+0

«Найти метод для запуска по ключевым словам» по-прежнему не очень специфичен. Похоже, что вы хотите превратить это в объект, представляющий дерево или график, но конкретные функции, доступные вам после того, как вы сделали преобразование, сильно отличаются. – MrFlick

ответ

1

Слишком долго для комментариев, но, возможно, не то, что вы ищете:

df <- read.csv2(header=F, comment.char="#", text=" 
Food;Fruit;Banana 
Food;Fruit;Apple 
#Fruit;Food;Orange 
Food;Bread;Toast 
Food;Bread;Whole Grain 
#Bed;Bedroom;Furniture 
Furniture;Bedroom;Bed 
#Furniture;Living Room;Chair 
Furniture;Bedroom;Chair") 

library(data.tree) 
df$pathString <- with(df, paste("root", V1, V2, V3, sep="/")) 
dt <- as.Node(df) 
dt 
#     levelName 
# 1 root     
# 2 ¦--Food    
# 3 ¦ ¦--Fruit   
# 4 ¦ ¦ ¦--Banana  
# 5 ¦ ¦ °--Apple  
# 6 ¦ °--Bread   
# 7 ¦  ¦--Toast  
# 8 ¦  °--Whole Grain 
# 9 °--Furniture   
# 10  °--Bedroom   
# 11   ¦--Bed   
# 12   °--Chair 

Посмотрите на data.treevignette.

0

Что вы описываете: Не похоже на анализ кластера.

Выполните следующие действия:

  1. Подсчитайте частоту каждого члена.
  2. Сортировка каждой строки по времени, по убыванию.
  3. Вставьте каждую строку в дерево.

Дерево будет входить в наиболее частые термины, которые имеют более конкретные термины под ним.

Никакого анализа, происходящего здесь, кроме подсчета + сортировки по частоте - так что ничего продвинутого или фантастического, но простого.

Смежные вопросы