私は、教師なし分類アルゴリズムを使用して分類したいテキストトークン(単語、異なる種類の識別番号、およびいくつかの追加の型)からなるデータセットを持っています。Levenshtein距離と追加機能/変数を持つクラスタアルゴリズム
kmeans
(例として、私はkmeansに縛られていません)のようなテキスト(文字数、桁数、英数字、一部の正規表現など)から抽出するいくつかの種類の機能私はhclust
と一緒に使うことができるLevenshtein距離のような詳細をいくつか追加したいと思います。
しかし、2つの異なるデータタイプ(距離メトリックやリンクされたデータなどの2つの観測にリンクされているデータ)を結合する方法の出発点はあまりありません各トークンの文字数などの1つの観測のみ)。
私はいくつかの簡単な部分が欠けていましたか、それは可能ですか、間違ったアルゴリズムを探しましたか?
以下、小さなデータセットの例とこれまで取り上げてきたさまざまなアプローチを紹介します。
MWEデータ
# create some data
set.seed(123)
x <- sapply(1:20, function(i) {
paste(c(
sample(LETTERS, sample(1:10, 1), replace = T),
sample(1:9, sample(1:10, 1), replace = T),
sample(LETTERS[1:10], 2)
), collapse = "")
})
head(x)
#> [1] "UKW1595595761IC" "I9769675632JI" "UAMTFIG44DB" "GM814HB"
#> [5] "FDTXJR4CH" "VVULT7152464BC"
# apply the different algorithms
# 1. K-means
df <- data.frame(x)
df$nchars <- nchar(x)
df$n_nums <- nchar(gsub("[^[:digit:]]", "", x))
# etc.
kclust <- kmeans(df[, 2:3], centers = 2)
pairs(df, col=c(2:3)[kclust$cluster])
# 2. Levensthein distance and hclust
distance <- adist(x)
rownames(distance) <- x
hc <- hclust(as.dist(distance))
plot(hc)
# 3. Combination of adist(x) and the df-variables
# ???
コードに若干の誤りがあります。 'c(2:3)[kclust $ cluster]'は、クラスターの数が色の数より多いため、NAを生成します。 – AkselA
コメントをいただきありがとうございます。私はkmeansの "正しい" 2つのクラスタを持つようにコードを更新しました。 – David