忘掉Bunch
對象。這只是一個加載與scikit-learn捆綁在一起的玩具數據集的實現細節。
在現實生活中,用你真實的數據,你只需要直接撥打:
km = KMeans(n_clusters).fit(my_document_features)
然後從收集集羣分配:
km.labels_
my_document_features
是一個二維的數據結構:要麼是numpy的陣列或一個形狀爲(n_documents, n_features)
的scipy.sparse矩陣。
km.labels_
是形狀爲(n_documents,)
的一維numpy陣列。因此,labels_
中的第一個元素是my_document_features
特徵矩陣第一行中描述的文檔的集羣索引。
通常你會建立my_document_features
有TfidfVectorizer
對象:
my_document_features = TfidfVectorizer().fit_transform(my_text_documents)
和my_text_documents
將一個或者一個列表的Python Unicode對象,如果你直接讀取文件(例如,從一個CSV文件數據庫或行或任何你想要的),或者:
vec = TfidfVectorizer(input='filename')
my_document_features = vec.fit_transform(my_text_files)
其中my_text_files
是在你的硬盤上的文檔文件的路徑的Python列表(假設他們使用的是UTF-8編碼encodi NG)。
my_text_files
或my_text_documents
列表的長度應該是n_documents
因此與km.labels_
的映射是直接的。由於scikit-learn不僅僅用於對文檔進行聚類或分類,我們使用名稱「sample」而不是「document」。這樣,您將看到我們使用n_samples
而不是n_documents
來記錄庫中所有估算器的參數和屬性的預期形狀。
請務必驗證結果是否合理。 K-means通常會返回可能是數學optimas的結果,但對於實際的問題根本無用! –