聚类概念 属于无监督学习(无标签) 顾名思义,就是将相似的东西分到一组 难点在于如何评估聚类效果以及调整参数 基本概念 K代表最后需要得到的簇个数(比如二分类K=2) 一个簇的质心计算:采用均值,即每个特征向量取平均值 距离度量:经常使用欧几里得距离和余弦相似度(高维特征最好先执行一次标准化) 优化目标:实现$min\sum_{i=1}^{k}\sum_{x∈C_i}dist(C_i,x)^2$ 优缺点 优点: 算法简单、快速 适合常规数据集(就是一坨一坨的那种,没有特定形状) 缺点: K值难以确定(一般是遍历K值取Inertia的拐点) 算法复杂度与样本呈线性关系(一次迭代) 很难发现任意形状的簇,比如二维特征的样本,一个圆环套一个球的形状KMeans就很难检测出来。 算法流程 首先随机选取K个样本作为K个簇的中心(在KMeans++中,使用最大距离进行初始化) KMeans++逐个选取K个簇中心,且离其它簇中心越远的样本点越有可能被选为下一个簇中心 将每个样本分配到K个簇中,具体选择哪个簇取决于该样本和K个簇的距离,选择距离最近的簇(分配样本
数据表示 一般来说字符串数据分为四种: 分类数据 可以在语义上映射维类别的自由字符串 结构化字符串数据 文本数据 词袋表示 这种表示舍弃了输入文本中的大部分结构,如段落、章节、句子和格式,只计算每个单词在每个文本中的出现频次。 计算词袋有以下步骤: 分词(tokenization):将每个文档划分为出现在其中的单词,按空格和标点划分。 构建词表(vocabulary building):收集词表,包含出现在任意文档的所有词。 编码(encoding):对于每个文档,计算每个单词在文档中的出现频次。(稀疏矩阵存储) CountVectorizer 简单使用 from sklearn.feature_extraction.text import CountVectorizer vect = CountVectorizer() vect.fit(bard_words) # train len(vect.vocabulary_) vect.vocabulary_ bag_of_words = vect.transform(bard_words) # 词袋表示使用稀疏矩阵存储 ba
JJJYmmm
Updating as per fate.