一部のデータをクラスター化するためにsklearnのいくつかのクラスター化アルゴリズムを使用していますが、DBSCANで何が起こっているのか理解できません。私のデータはTfidfVectorizerからのドキュメントタームマトリックスで、数百の前処理されたドキュメントが含まれています。
コード:
tfv = TfidfVectorizer(stop_words=STOP_WORDS, tokenizer=StemTokenizer())
data = tfv.fit_transform(dataset)
db = DBSCAN(eps=eps, min_samples=min_samples)
result = db.fit_predict(data)
svd = TruncatedSVD(n_components=2).fit_transform(data)
// Set the colour of noise pts to black
for i in range(0,len(result)):
if result[i] == -1:
result[i] = 7
colors = [LABELS[l] for l in result]
pl.scatter(svd[:,0], svd[:,1], c=colors, s=50, linewidths=0.5, alpha=0.7)
eps = 0.5、min_samples = 5の場合、次のようになります。
基本的に、min_samplesを3に設定しない限り、クラスターをまったく取得できません。
私はeps / min_samples値のさまざまな組み合わせを試して、同様の結果を得ました。常に最初に低密度の領域をクラスター化するようです。なぜこのようにクラスタリングするのですか?TruncatedSVDを誤って使用しているのでしょうか?