【问题标题】:clustering inside clustering that is nested clustering of a data table that is multiclass clustering嵌套聚类 数据表的嵌套聚类 多类聚类
【发布时间】:2019-10-29 15:29:19
【问题描述】:

如何在数据集中应用具有相似名称(如 McDonald 和 Mc DOnald's)的字符串聚类,如果字符串相同(如 sam 和其他还有 sam),那么如何再次基于价值或价格进行聚类 例如- 考虑一个包含 10 个元素的数据表

name           price
ram               200
shyam             150
ram12              59
gita               45
ram 2                45 
g11ita                23
john2                32
john                 7
jonh21               8
jonh                 38
ram22                3

那么分组应该是

ram                    200

ram12                  59
ram  2                 45

ram22                   3

john2                    32
jonh                     37

john                    7
john21                   8

gita                 45
g11ita               23      

我已经使用了fuzzywuzzy和Levenheneitein距离的字符串聚类,但它只能聚类字符串而不能聚类价格 如何对第一个字符串进行聚类,如果相同则聚类价格

【问题讨论】:

  • 如果可以的话,请展示它的示例代码。
  • for sortgp in all_sort_gp: this_gp = all_main_name.groupby(['sort_gp']).get_group(sortgp) gp_start = this_gp.index.min() gp_end = this_gp.index.max() for i在范围内(gp_start,gp_end+1): if pd.isna(all_main_name['alias'].iloc[i]): all_main_name['alias'].iloc[i] = all_main_name['names'].iloc[i ]; all_main_name['score'].iloc[i] = 100 for j in range(i+1,gp_end+1): if pd.isna(all_main_name['alias'].iloc[j]): fuzz_socre = fuzz.partial_ratio (all_main_name['names'].iloc[i],all_main_name['names'].iloc[j])
  • 如果不是 no_key_word(all_main_name['names'].iloc[j]): fuzz_socre -= 10 if (fuzz_socre > 75): all_main_name['alias'].iloc[j] = all_main_name[ 'alias'].iloc[i] all_main_name['score'].iloc[j] = fuzz_socre if i % (len(all_names)//10) == 0: print("progress: %.2f" % (100 *i/len(all_names)) + "%")

标签: python python-2.7 machine-learning artificial-intelligence cluster-analysis


【解决方案1】:

您需要仔细平衡文本相似度和数值相似度的阈值。不会有一个简单的解决方案,除非您拥有非常庞大的数据,否则手动方法可能是最好的。

短字符串的文本相似性非常不可靠。

例如:“dog”和“fog”只有一个字母不同,但不太可能是拼写错误。他们有 Levenshtein 距离 1,最小的非零值!正因为如此,如果您依赖 Levenshtein,您将遇到大量误报 - 如果您手动验证它们可以,但不能用于自动处理。

因此,您至少需要使用了解 (a) 现有单词、不太可能拼写错误的单词、(b) 常见拼写错误和 (c) 语音相似度的信息来估计单词拼写错误的可能性,( d) 键盘相似度,一个单词打错的可能性有多大...

【讨论】:

  • 对我来说,字符串聚类没问题但是你将如何在同一个集群之间进行价格聚类_
  • 您能否提供代码以将具有相同名称的价格聚类并存储在 csv 文件中
  • @Antony-Mousse 你能告诉我怎么做吗
  • 如果你已经解决了字符串部分,只需“分组”数据,然后分别对每个组进行阈值。
  • 在excel中按价格聚类后如何表示单独的组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 2017-07-26
  • 1970-01-01
  • 2018-01-18
  • 2020-11-06
  • 2021-12-02
相关资源
最近更新 更多