我想使用高尔距离实现 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) 我一直在尝试将我的训练集安装到 KMeans 集群上,并将其预测到测试测试中,但它对我来说至少已经尝试了一周了。我很好奇我是否正在解释 KMeans 的使用方式?有人告诉我它无人监管。这是否意味着如果它知道训练数据如何聚类,就不能用于预测聚类?
谢谢。
如何在给定算法的真实聚类和预测聚类的情况下找到聚类算法的准确性?
我在网上搜索但找不到任何有用的来源.我知道如何计算分类算法的准确性.
我有很多列表包含不同数量的名义元素.我想将每个列表与每个其他列表进行比较,并针对每个组合计算两个列表共享的元素数量.我不是统计学家,但我认为结果在矩阵中最容易表示.
list1=["Joe","Hanna","Alice"]
list2=["Martin","Ted","Joe"]
list3=["Hanna","Ted","Joe"]
Run Code Online (Sandbox Code Playgroud)
之后我想以图形方式表示结果,可能使用热图或聚类表示.
任何人都可以给我一些提示如何使用R?还有什么是好的代表?非常感谢!
我是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)
我想用一个专栏来总结它们.谢谢你的推荐.
我想知道,假设初始质心点是随机选择的,那么对于完全相同的数据集,我们是否可以获得大致相同的质心点。
我正在编写一个测试kmeans程序,但它们似乎不匹配。我想知道我在做什么是否正确。
cluster-analysis machine-learning k-means unsupervised-learning
我正在使用ELKI
我KMeansLloyd<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) 我试图理解这个算法,但无法获得适当的文档和解释.有人可以帮我理解这种聚类算法.
algorithm cluster-analysis hierarchical-clustering data-mining
这是我第一次尝试使用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)
情节:
具体问题:
如何在熊猫的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)
提前致谢。
cluster-analysis ×10
k-means ×3
scikit-learn ×3
data-mining ×2
python ×2
r ×2
algorithm ×1
elki ×1
heatmap ×1
java ×1
matrix ×1
pandas ×1
python-3.x ×1
similarity ×1
sum ×1