K-Means算法是常用的聚类算法,但其算法本身存在一定的问题,例如在大数据量下的计算时间过长就是一个重要问题。为此,Mini Batch K-Means,这个基于K-Means的变种聚类算法应运而生。
fit(X, y=None)
Compute the centroids on X by chunking it into mini-batches.
fit拟合操作,实际上就是计算每个簇的质心。
所以说,如果簇只有一个的话,拟合的意义是求出整个数据的质心。
predict(X)
Predict the closest cluster each sample in X belongs to.
predict预测操作,是给出每个样本属于哪个簇的结果
项目中将所有样本按照时间分为:1年期样本和3年期样本。同时根据其他业务规则进行了分类(分类规则需要保密)。由于收集样本的渠道不同(不同的公司,组织提供的样本数据),所有的样本还需要进行Remove Common Factor的操作:
1.样本的分类并没有按照渠道进行分类,所以这里同一收集渠道的样本,也会被分在不同的类中
2.所有分类样本,例如1年期,3年期的样本,都必须进行Remove Common Factor
3.同一样本可能同时存在于不同分类组里面,因为有些是按照时间分类的,有些是按照业务分类的,分类的维度不同。
代码的逻辑如下:
fit:XX[tag]里面的tag表示收集渠道,XX[tag]表示某个渠道的样本矢量数组:
_cf[tag]:表示某个渠道的Common Factor矢量,这里使用np.array(XX[tag]).mean(axis=0)按列求均值获得的。每一个渠道有一个Common Factor矢量。
remove代码则是将某个渠道里面所有的矢量,都剪去Common Factor矢量
(代码有删减,原来代码里面有对于未知渠道的防御代码,这里已经简化)
推荐通过网络上的 廖雪锋的Python教程 学习python语法
numpy sumaxis:求和的维。
>>> np.sum([0.5, 1.5]) 2.0 >>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.int32) 1 >>> np.sum([[0, 1], [0, 5]]) 6 >>> np.sum([[0, 1], [0, 5]], axis=0) array([0, 6]) >>> np.sum([[0, 1], [0, 5]], axis=1) array([1, 5]) numpy meanaxis:求平均的维。
>>> a = np.array([[1, 2], [3, 4]]) >>> np.mean(a) 2.5 >>> np.mean(a, axis=0) array([ 2., 3.]) >>> np.mean(a, axis=1) array([ 1.5, 3.5]) lambda 和浮点数python中使用 .1 代表浮点数 0.1 或者 1. 代表浮点数 1.0。
原因是要保证结果的精度,防止程序自动强制转换。
幾つかの数値データを小さい順に並べたとき、小さい方から数えて全体のX%に位置する値をXパーセンタイルと言います。
(数值按照从小到大进行排列,从小的数字开始计算,全体数字的X%的位置,数值是多少)
例えば10人のクラスがあるとして、各生徒のテストの点数が[40, 50, 60, 70, 75, 80, 83, 86, 89, 95]だったとします。
その時、下から95%に位置する点数(逆に言うと上位5%に位置する点数)が何点なのか示すものが95パーセンタイルになります。
以下、numpyを使ったサンプルです。
>>> import numpy as np >>> a = np.array([40, 50, 60, 70, 75, 80, 83, 86, 89, 95]) >>> np.percentile(a, 95) # 95パーセンタイルを求めます(逆に言うと上位5%に位置する点数) 92.299999999999997 # 95パーセンタイルは約92.3点であることがわかります >>> np.percentile(a, 30) # 30パーセンタイルを求めます(逆に言うと上位70%に位置する点数) 67.0 # 30パーセンタイルは67.0点であることがわかります 参考文档数学之美:14章 余弦定理和新闻的分类 (吴军,第二版)
TF-IDF与余弦相似性的应用(一):自动提取关键词
TF-IDF与余弦相似性的应用(二):找出相似文章
Sentiment Analysis Using Doc2Vec
[Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
【転職会議】クチコミをword2vecで自然言語処理して会社を分類してみる
适合大数据的聚类算法Mini Batch K-Means
K-means算法及文本聚类实践
パーセンタイルについて