标签: cluster-analysis

如何在sklearn中使用gower距离实现pam聚类算法?

我想使用高尔距离实现 pam ( KMedoid, method='pam' ) 算法。

我的数据集包含混合特征、数字特征和分类特征,一些猫特征有 1000 多个不同的值。

我在这里找到了合适的高尔距离实现:https://github.com/wwwjk366/gower/blob/master/gower/gower_dist.py

我的问题是我使用的PAM 的sklearn-extra实现没有metric='gower'实现该选项。所以我尝试创建一个可调用的,但我似乎发现很难将它们连接在一起。

D = gower.gower_matrix(df_ext, cat_features=cat_mask) # cat_mask is a boolean list marking what the 
                                                    categorical features are in the df_ext

# https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise_distances.html
def get_gower():
    return sklearn.metrics.pairwise_distances(D, metric='precomputed')

# https://scikit-learn-extra.readthedocs.io/en/latest/generated/sklearn_extra.cluster.KMedoids.html
kmedoids = sklearn_extra.cluster.KMedoids(df_ext, metric=get_gower, method='pam')
kmedoids.fit(df_ext)
Run Code Online (Sandbox Code Playgroud)

我得到这个值错误:

ValueError                                Traceback (most recent call last)
<ipython-input-13-9ae677cd636a> in <module>
      1 # https://scikit-learn-extra.readthedocs.io/en/latest/generated/sklearn_extra.cluster.KMedoids.html
      2 kmedoids = KMedoids(df_ext, metric=get_gower, method='pam')
----> 3 kmedoids.fit(df_ext)

D:\ProgramFiles\anaconda3\lib\site-packages\sklearn_extra\cluster\_k_medoids.py in fit(self, X, y)
    183         random_state_ …
Run Code Online (Sandbox Code Playgroud)

cluster-analysis python-3.x scikit-learn

1
推荐指数
1
解决办法
4048
查看次数

KMeans Clustering 它能预测看不见的数据吗?

我一直在尝试将我的训练集安装到 KMeans 集群上,并将其预测到测试测试中,但它对我来说至少已经尝试了一周了。我很好奇我是否正在解释 KMeans 的使用方式?有人告诉我它无人监管。这是否意味着如果它知道训练数据如何聚类,就不能用于预测聚类?

谢谢。

classification cluster-analysis k-means

1
推荐指数
1
解决办法
5777
查看次数

寻找聚类算法的准确性

如何在给定算法的真实聚类和预测聚类的情况下找到聚类算法的准确性?

我在网上搜索但找不到任何有用的来源.我知道如何计算分类算法的准确性.

cluster-analysis machine-learning data-mining

0
推荐指数
1
解决办法
7201
查看次数

表示R中列表之间的相似性

我有很多列表包含不同数量的名义元素.我想将每个列表与每个其他列表进行比较,并针对每个组合计算两个列表共享的元素数量.我不是统计学家,但我认为结果在矩阵中最容易表示.

list1=["Joe","Hanna","Alice"]
list2=["Martin","Ted","Joe"]
list3=["Hanna","Ted","Joe"]
Run Code Online (Sandbox Code Playgroud)

相似

之后我想以图形方式表示结果,可能使用热图或聚类表示.

任何人都可以给我一些提示如何使用R?还有什么是好的代表?非常感谢!

r cluster-analysis similarity matrix heatmap

0
推荐指数
1
解决办法
185
查看次数

基于R中的Column对数据求和

我是R的新手,我有一个看起来像这样的数据集(实际数据是10K乘5K所以我真的需要一个捷径):

Cluster    Item1   Item2    Item 3

 1           1      2         2
 1           3      1         1
 1           1      3         0 
 2           3      2         0  
 2           0      0         2 
 2           4      2         2
 3           0      1         1  
 3           1      1         2
Run Code Online (Sandbox Code Playgroud)

我想按群集添加每个数据集的列,以便它看起来像这样:

Cluster    Item1   Item2    Item 3

    1        5      6         3
    2        7      4         4
    3        1      2         3 
Run Code Online (Sandbox Code Playgroud)

我想用一个专栏来总结​​它们.谢谢你的推荐.

r sum cluster-analysis

0
推荐指数
1
解决办法
76
查看次数

kmeans可重复吗?

我想知道,假设初始质心点是随机选择的,那么对于完全相同的数据集,我们是否可以获得大致相同的质心点。

我正在编写一个测试kmeans程序,但它们似乎不匹配。我想知道我在做什么是否正确。

cluster-analysis machine-learning k-means unsupervised-learning

0
推荐指数
1
解决办法
868
查看次数

每次运行代码时,我都会得到不同的结果

我正在使用ELKIKMeansLloyd<NumberVector> with k=3 每次运行我的java代码时使用的数据集群我得到完全不同的集群结果,这是正常的还是我应该做些什么来使我的输出几乎稳定?这里是我从elki教程获得的代码

DatabaseConnection dbc = new ArrayAdapterDatabaseConnection(a);
    // Create a database (which may contain multiple relations!)
    Database db = new StaticArrayDatabase(dbc, null);
    // Load the data into the database (do NOT forget to initialize...)
    db.initialize();
    // Relation containing the number vectors:
    Relation<NumberVector> rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD);
    // We know that the ids must be a continuous range:
    DBIDRange ids = (DBIDRange) rel.getDBIDs();

    // K-means should be used with squared Euclidean (least squares):
    //SquaredEuclideanDistanceFunction dist = SquaredEuclideanDistanceFunction.STATIC; …
Run Code Online (Sandbox Code Playgroud)

java cluster-analysis elki

0
推荐指数
1
解决办法
434
查看次数

领导聚类算法解释

我试图理解这个算法,但无法获得适当的文档和解释.有人可以帮我理解这种聚类算法.

algorithm cluster-analysis hierarchical-clustering data-mining

0
推荐指数
1
解决办法
3222
查看次数

当我只获得行中的簇时,如何微调K意味着聚类?

这是我第一次尝试使用Python和Sci-Kit Learn进行K-Means聚类,我不知道如何制作我的最终聚类图或如何微调我的K意味着聚类算法.

我的最终目标是找到一组用户类别,描述一些有趣或有用的行为特征.

ATTEMPT 1:

输入:性别,年龄范围,国家(所有热门编码因为数据是分类的)和帐户年龄(以周为单位的数字)

在此输入图像描述

码:

# Convert DataFrame to matrix
mat2 = all_dummy.as_matrix()
# Using sklearn
km2 = sklearn.cluster.KMeans(n_clusters=6)
km2.fit(mat2)
# Get cluster assignment labels
labels2 = km2.labels_
# Format results as a DataFrame
results2 = pd.DataFrame([all_dummy.index,labels2]).T

plot_x2 = results2[0].tolist()
plot_y2 = results2[1].tolist()
pyplot.scatter(plot_x2,plot_y2)
pyplot.show()
Run Code Online (Sandbox Code Playgroud)

情节:

在此输入图像描述

具体问题:

  1. 该图的X轴和Y轴是什么?
  2. 甚至告诉我这张图是什么?
  3. 当我将6个集群作为输入时,为什么只有3个集群出现?(通过第一条评论和更新的代码和图表回答)
  4. 如果我不知道我要找的是什么关系,我如何微调这个图表来告诉我更多并告诉我一个有用的关系?

python cluster-analysis machine-learning scikit-learn

0
推荐指数
1
解决办法
1440
查看次数

在KMeans算法中获取每个群集中的值数

如何在熊猫的KMeans算法中获取每个群集中的值总数?

我尝试了以下方法:

kmeans_model = KMeans(n_clusters = 3, random_state = 1).fit(dataframe.iloc[:,:])
clusters = kmeans_model.labels_.count()
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我的预期输出是:

Clusters   Number_of_values
cluster_0  932
cluster_1  931
cluster_2  930
Run Code Online (Sandbox Code Playgroud)

知道如何在Pandas中实现这一目标吗?

我也尝试过,它有效。如果我有其他选择的话会更好。

from collections import Counter
print(Counter(kmeans_model.labels_))
Run Code Online (Sandbox Code Playgroud)

提前致谢。

python cluster-analysis k-means pandas scikit-learn

0
推荐指数
1
解决办法
44
查看次数