Python 如何提高DBSCAN的准确性?

Python 如何提高DBSCAN的准确性?,python,cluster-analysis,dbscan,Python,Cluster Analysis,Dbscan,我有4种不同类型的200个文档。 200个文档在一个数据框中存储了文本信息 我使用这段代码创建了一个语料库 corpus=[] for i in range(0,len(df_kyc)): review=re.sub('[^a-zA-Z]',' ', df_kyc['remove_new_line'][i]) review=review.lower() review=review.split() ps=PorterStemmer() review=[ps.

我有4种不同类型的200个文档。 200个文档在一个数据框中存储了文本信息

我使用这段代码创建了一个语料库

corpus=[]
for i in range(0,len(df_kyc)):
    review=re.sub('[^a-zA-Z]',' ', df_kyc['remove_new_line'][i])
    review=review.lower()
    review=review.split()
    ps=PorterStemmer()
    review=[ps.stem(word) for word in review if not word in set(stopwords.words('English'))]
    review=' '.join(review)
    corpus.append(review)
情节如下所示

我使用了EPS=1.18,但它返回了3个不准确的聚类。

我不知道如何改进这段代码以使其准确和可靠。有什么建议吗

谢谢

vectorizer=TfidfVectorizer()
X=vectorizer.fit_transform(corpus)
neigh=NearestNeighbors(n_neighbors=2)
nbrs=neigh.fit(X)
distances,indicies=nbrs.kneighbors(X)

distances_1=np.sort(distances,axis=0)
distances_2=distances_1[:,1]
plt.rcParams['figure.figsize']=[30,20]
plt.plot(distances_2)
def increment(length=100,start=0,increment=0.1):
    x=start
    for i in range(length):
        yield round(x,2)
        x+=increment
plt.yticks([a for a in increment(15)])

MIN_SAMPLES=3
EPS=1.18
model=DBSCAN(eps=EPS,min_samples=MIN_SAMPLES)
y=model.fit_predict(X)