簡體   English   中英

如何在python中使用機器學習對不同的字符串進行聚類

[英]How to cluster different strings using machine learning in python

我有一個由建築物名稱組成的數據集。例如 {Hill View,Hills View,Hill Apartment...}。我想使用機器學習對這些字符串進行聚類。例如,在聚類后,一個聚類應該包含相似或有些相似的字符串{Hills,Hill...}。我嘗試了各種 scikit 算法,如 K-means、Affinity Propagation 等,但沒有成功。請幫助。

機器學習不是魔術! 它使用數學對象和函數。

您需要第一步——通常稱為數據挖掘——包括:

  • 將任何輸入(字符串、圖片、視頻、任何東西...)轉換為數字(向量、矩陣或任何相關結構)。

  • 定義向量之間的距離和相似性(=​​ 輸入的數字表示之間的距離 ~= 字符串、圖片、視頻等之間的距離)。

這不是微不足道的,可以根據您的數據/目標以不同的方式完成。

由於我不知道您在 CS/ML/數學方面的背景,我只能給您一個通用的方法,在一般情況下,它非常好/容易。

這是一般的演講,實際上這個問題很復雜,有很多東西要學習。 您很可能需要編輯距離,這是單詞之間最直觀的距離,您還應該考慮提取哪個。

如果沒有關於數據/上下文的更多信息,就無法提供更好的 anwser。

問候

明白了:請按照此鏈接進行文檔聚類: http : //brandonrose.org/clustering它給出了精確的描述。為了將其轉換為普通的字符串聚類,其中您有一個名稱(字符串)列表,只需通過列表代替解釋中傳遞的標題列表。還將示例中出現的每個概要列表替換為要聚類的列表(在本例中,列表包含要聚類的字符串)

您可以跳過一些片段,因為它們提供了額外的信息。將它們保留在代碼中不會損害您的最終集群。

您可以使用朴素貝葉斯算法進行短語聚類,例如在 php

$classifier = new \Niiknow\Bayes();

// teach it positive phrases

$classifier->learn('amazing, awesome movie!! Yeah!! Oh boy.', 'positive');
$classifier->learn('Sweet, this is incredibly, amazing, perfect, great!!', 'positive');

// teach it a negative phrase

$classifier->learn('terrible, shitty thing. Damn. Sucks!!', 'negative');

// now ask it to categorize a document it has never seen before

$classifier->categorize('awesome, cool, amazing!! Yay.');
// => 'positive'

相關圖書館在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM