我有一个数组列表中的数字.每个元素的索引是X,值是Y.我如何分区/聚类这些数据?如果我有一个数组,我只想要一组标记每个分区结束的值.由于我正在使用Python,请提及是否有库可以执行相同操作.
谢谢.
如果我们将K-means和顺序K-means方法应用于具有相同初始设置的相同数据集,我们是否会获得相同的结果?解释你的理由.
我个人认为答案是否定的.顺序K-means获得的结果取决于数据点的呈现顺序.结局条件不一样.
这里附加两个聚类算法的伪代码.
K-手段
Make initial guesses for the means m1, m2, ..., mk
Until there is no change in any mean
Assign each data point to the cluster whose mean is the nearest.
Calculate the mean of each cluster.
For i from 1 to k
Replace mi with the mean of all examples for cluster i.
end_for
end_until
Run Code Online (Sandbox Code Playgroud)
顺序K均值
Make initial guesses for the means m1, m2, ..., mk
Set the counts n1, n2, ..., nk to zero
Until …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用python和scipy聚类一些数据,但以下代码不能正常工作我不明白:
from scipy.sparse import *
matrix = dok_matrix((en,en), int)
for pub in pubs:
authors = pub.split(";")
for auth1 in authors:
for auth2 in authors:
if auth1 == auth2: continue
id1 = e2id[auth1]
id2 = e2id[auth2]
matrix[id1, id2] += 1
from scipy.cluster.vq import vq, kmeans2, whiten
result = kmeans2(matrix, 30)
print result
Run Code Online (Sandbox Code Playgroud)
它说:
Traceback (most recent call last):
File "cluster.py", line 40, in <module>
result = kmeans2(matrix, 30)
File "/usr/lib/python2.7/dist-packages/scipy/cluster/vq.py", line 683, in kmeans2
clusters = init(data, k)
File "/usr/lib/python2.7/dist-packages/scipy/cluster/vq.py", line …Run Code Online (Sandbox Code Playgroud) 有没有办法使用scikit-learn执行顺序k-means聚类?我似乎找不到合适的方法来添加新数据,而无需重新拟合所有数据.
谢谢
簇是指一组相互连接的重叠圆。该图像可能会更好地说明我要查找的内容:

在我的数据中,圆由其中心坐标表示。我已经完成了碰撞检测,以生成代表重叠的成对中心点的列表:
pts = [(-2,2), (-2,2), (0,0), (2,1), (6,2), (7,1)]
overlaps = [
(pts[0], pts[1]),
(pts[0], pts[2]),
(pts[1], pts[2]),
(pts[2], pts[3]),
(pts[4], pts[5]),
]
Run Code Online (Sandbox Code Playgroud)
这是预期的结果:
expected_clusters = [
((-2,2), (-2,2), (0,0), (2,1)),
((6,2), (7,1))
]
Run Code Online (Sandbox Code Playgroud)
在实践中,我将使用的数据集约为这个大小,因此我可能永远都不需要扩大规模。但这并不是说我不会支持更理想的解决方案。
我提出了自己的幼稚解决方案,我将其发布为答案。但是我会对看到其他解决方案感兴趣。
我正在尝试用Java编写一组关于特定主题的新闻文章.我使用Crawler4J抓取了有关特定主题的新闻网站,将我自己的TF/IDF实现与语料库进行比较(有理由说我没有使用内置的Weka或TF/IDF的其他实现,但它们可能已经出来了这个问题的范围)并应用了一些其他特定于域的逻辑,这些逻辑为每个文档留下了一袋单词+权重(我将其存储在值为0到1之间的Map中).我想通过查看单词权重来聚类关于类似主题的文章,所以我开始使用Weka的EM和SimpleKMeans群集.问题是我得到了相当不起眼的结果,而且我
例如,在约300篇文章的玩具数据集中,如果我将每个文档中的单词修剪为前20,然后使用完整的单词作为特征,我最终得到~2k独特的特征.我正在使用每篇文章作为训练实例,并尝试使用一些不同的参数来调整SimpleKMeans聚类器(例如~20-30个聚类,100个最大迭代).当我一目了然地看到数据时,我发现很多文章的关键词看起来非常密切相关,所以我期望高质量的结果和一堆包含~5-10篇文章的集群.不幸的是,结果通常是一个集群,其中有一半的文章,一堆集群各有一篇文章,还有一些散落者有2-5篇左右的文章.
这些结果是预期的,还是有办法获得更高质量的结果?请注意,我还研究了LingPipe和其他提供集群功能的框架,并使用滚动我自己的EM实现(具有适度但不是很大的成功).在此先感谢您的帮助!
我是机器学习的新手,最近几天正在尝试使用奇异值分解(SVD)。基于x和y值,我使用绘制了以下图matplotlib。我正在检测网络用户的异常活动。在此图中,离群点很少。我想确定谁属于这些异常值。
为了使它更易于理解,我们采用以下数据集。
基于网页访问的原始矩阵。
matrix = mat( [[1,0,0,1,1,0,1,0,1,0], [1,0,0,0,1,0,1,0,1,1],[1,0,1,0,1,0,0,0,1,0],[0,1,1,1,0,1,0,1,0,0],[1,1,0,0,1,0,1,1,1,1],[0,0,1,0,1,1,0,1,0,0],[1,1,0,1,0,1,0,0,1,0],[1,0,0,0,1,0,1,1,1,1],[0,1,1,0,1,0,1,0,0,0],[1,1,0,1,0,1,0,1,1,0]] )
Run Code Online (Sandbox Code Playgroud)
SVD计算后的x,y坐标。
x = [-0.34095692,-0.34044722,-0.27155318,-0.21320583,-0.44657865,-0.19587836, -0.29414279, -0.3948753 ,-0.21655774 , -0.34857087]
y = [0.16305762,0.38554548, 0.10412536, -0.57981103, 0.17927523, -0.22612216, -0.34569697, 0.30463137,0.01301744,-0.42661108]
Run Code Online (Sandbox Code Playgroud)
我想要的是找到谁属于给定的数据点。像明智的大数据集情节中如何找到异常值的标识?希望你理解我的问题。

我正在制定一个与确定销售动态相关的项目.这就是我的数据库看起来像http://imagizer.imageshack.us/a/img854/1958/zlco.jpg.有三列:
产品 - 介绍产品组
自产品推出以来的一周时间(周),前26周
Sales_gain - 产品销售如何按周变化
在数据库中有3302个观测值= 127个时间序列
我的目标是将时间序列分组,这些组将向我展示不同的销售动态.在聚类之前,我想使用快速傅立叶变换来改变向量上的时间序列并考虑幅度等,然后使用距离算法和分组产品.
这是我第一次处理FFT和聚类,所以如果有人指出步骤,我将不胜感激,我必须在使用FFT之前/之后对销售动态进行分组.我想在R中执行所有步骤,所以如果有人键入我应该使用哪些程序来执行所有步骤,那将会非常棒.
这就是我的时间序列现在的样子http://imageshack.com/a/img703/6726/sru7.jpg
请注意,我对时间序列分析相对较新(这就是为什么我不能把我的代码放在这里),所以你可以在R中提供的任何清晰度或任何你可以推荐的有效完成这项任务的包都将受到赞赏.
PS而不是FFT我在这里找到了DWT的代码 - > www.rdatamining.com/examples/time-series-clustering-classification但不能在我的数据库和时间序列中使用它(建议R在26周后分析新的时间序列).可以向我解释一下吗?
我正在使用进行分层聚类分析 hclust()
代码如下所示:
hc <- hclust(dist(USArrests), "ave")
Run Code Online (Sandbox Code Playgroud)
现在,我需要的是获得一个表(或类似的东西),其中包含所有集群和属于它们的观察结果(通过它们的rowname,非数字),以便我可以将其保存到某些整体文件/数据框 - 例如Excel.(我想用不同的方法运行hclust几次,变量并最终评估结果.)
我现在,它可能很容易,但我被卡住了......你有什么建议吗?
Ps.:我也想知道它在使用时是如何工作的 kmeans()
我已经构建了一个KMeansModel.我的结果存储在一个名为的PySpark DataFrame中
transformed.
(a)我如何解释内容transformed?
(b)如何创建一个或多个Pandas DataFrame transformed,以显示14个集群中每个集群的13个特征中每个特征的摘要统计数据?
from pyspark.ml.clustering import KMeans
# Trains a k-means model.
kmeans = KMeans().setK(14).setSeed(1)
model = kmeans.fit(X_spark_scaled) # Fits a model to the input dataset with optional parameters.
transformed = model.transform(X_spark_scaled).select("features", "prediction") # X_spark_scaled is my PySpark DataFrame consisting of 13 features
transformed.show(5, truncate = False)
+------------------------------------------------------------------------------------------------------------------------------------+----------+
|features |prediction|
+------------------------------------------------------------------------------------------------------------------------------------+----------+
|(14,[4,5,7,8,9,13],[1.0,1.0,485014.0,0.25,2.0,1.0]) |12 |
|(14,[2,7,8,9,12,13],[1.0,2401233.0,1.0,1.0,1.0,1.0]) |2 |
|(14,[2,4,5,7,8,9,13],[0.3333333333333333,0.6666666666666666,0.6666666666666666,2429111.0,0.9166666666666666,1.3333333333333333,3.0])|2 |
|(14,[4,5,7,8,9,12,13],[1.0,1.0,2054748.0,0.15384615384615385,11.0,1.0,1.0]) |11 |
|(14,[2,7,8,9,13],[1.0,43921.0,1.0,1.0,1.0]) |1 |
+------------------------------------------------------------------------------------------------------------------------------------+----------+
only showing top 5 rows
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我从另一篇SO帖子中发现,我可以将功能映射到他们的名字,如下所示.在一个或多个Pandas数据帧中为每个集群的每个特征提供汇总统计(平均值,中值,标准,最小值,最大值)会很不错. …
cluster-analysis machine-learning k-means pyspark apache-spark-ml
cluster-analysis ×10
k-means ×5
python ×4
data-mining ×2
r ×2
2d ×1
algorithm ×1
fft ×1
graphics ×1
hclust ×1
java ×1
matplotlib ×1
numpy ×1
pyspark ×1
scikit-learn ×1
scipy ×1
sequential ×1
svd ×1
time-series ×1
weka ×1