Python 如何提高DBSCAN的准确性?
我有4种不同类型的200个文档。 200个文档在一个数据框中存储了文本信息 我使用这段代码创建了一个语料库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.
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)