机器学习中离散特征的聚类方法

有时候我们要对离散特征进行相似聚类,数据样例如下:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGlhb19XZW56aGU=,size_20,color_FFFFFF,t_70,g_se,x_16

可以看到有很多非连续的特征,没法直接利用聚类的距离度量,因此这种状况计算类别有几种方式:

1. 图聚类,就是将特征转化为图中的一个点,然后跑图算法。

参考:利用python-sknetwork进行图聚类/社区发现 - 知乎

2. 先用文本距离算法(例如jaccard)计算好相似矩阵,再利用 sklearn dbscana的precomputd参数,先计算好相似矩阵,再进行聚类。

例如:

import numpy as np
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform

# 计算各行数据相互之间的杰卡德距离
# A是一个向量矩阵:jaccard代表杰卡德距离
distA=pdist(df.iloc[:,1:].values, metric='jaccard')
# 将distA数组变成一个矩阵
distB = squareform(distA)
print(distB)

#将已经预训练的相似距离矩阵输入dbscan
from sklearn.cluster import DBSCAN
db = DBSCAN(eps=0.6, metric='precomputed', min_samples=2).fit(distB)

#查看分类结果
from collections import  Counter
Counter(db.labels_)

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值