本文介绍了"KMeans"对象没有属性"labels_"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的代码正在使用sklearn kMeans算法.当我执行代码时,出现类似"'KMeans'对象没有属性'labels _'"
I my code i am using sklearn kMeans algorithm. when i execute the code i got the error like "'KMeans' object has no attribute 'labels_'"
Traceback (most recent call last):
File ".\kmeans.py", line 56, in <module>
np.unique(km.labels_, return_counts=True)
AttributeError: 'KMeans' object has no attribute 'labels_'
这是我的代码:
import pandas as pds
import nltk,re,string
from nltk.probability import FreqDist
from collections import defaultdict
from nltk.tokenize import sent_tokenize, word_tokenize, RegexpTokenizer
from nltk.tokenize.punkt import PunktSentenceTokenizer
from nltk.corpus import stopwords
from string import punctuation
from heapq import nlargest
# import and instantiate CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer()
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(ngram_range=(1,2),max_df=0.5, min_df=2,stop_words='english')
train_X = vectorizer.fit_transform(x)
from sklearn.cluster import KMeans
import sklearn.cluster.k_means_
km = KMeans(n_clusters=3, init='k-means++', max_iter=100, n_init=1,
verbose=True)
import numpy as np
np.unique(km.labels_, return_counts=True)
text = {}
for i,cluster in enumerate(km.labels_):
oneDocument = X[i]
if cluster not in text.keys():
text[cluster] = oneDocument
else:
text[cluster] += oneDocument
_stopwords = set(stopwords.words('english')+ list(punctuation))
keywords = {}
counts = {}
for cluster in range(3):
word_sent = word_tokenize(text[cluster].lower())
word_sent = [word for word in word_sent if word not in _stopwords]
freq = FreqDist(word_sent)
keywords[cluster] = nlargest(100, freq, key=freq.get)
counts[cluster] = freq
unique_keys={}
for cluster in range(3):
other_clusters = list(set(range(3))-set([cluster]))
keys_other_clusters =
set(keywords[other_clusters[0]]).union(set(keywords[other_clusters[1]]))
unique=set(keywords[cluster])-keys_other_clusters
unique_keys[cluster]= nlargest(100, unique, key=counts[cluster].get)
#print(unique_keys)
print(keywords)
获取关键字簇.我已尝试解决此问题..但是我不知道我在哪里..
To get keywords cluster. I have tried to resolve this issues.. But i don't know where i am lacking..
推荐答案
您必须首先适合您的KMeans
对象,才能使其具有标签属性:
You have to fit your KMeans
object first for it to have a label attribute:
不适合它会引发错误:
from sklearn.cluster import KMeans
km = KMeans()
print(km.labels_)
>>>AttributeError: 'KMeans' object has no attribute 'labels_'
试穿后:
from sklearn.cluster import KMeans
import numpy as np
km = KMeans()
X = np.random.rand(100, 2)
km.fit(X)
print(km.labels_)
>>>[1 6 7 4 6 6 7 5 6 0 0 7 3 4 5 7 5 0 3 4 0 6 1 6 7 5 4 3 4 2 1 2 1 4 6 3 6 1 7 6 6 7 4 1 1 0 4 2 5 0 6 3 1 0 7 6 2 7 7 5 2 7 7 3 2 1 2 2 4 7 5 3 2 65 1 6 2 4 2 3 2 2 2 1 2 0 5 7 2 4 4 5 4 4 1 1 4 5 0]
这篇关于"KMeans"对象没有属性"labels_"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!