【问题标题】:Clustering based on model parameters基于模型参数的聚类
【发布时间】:2020-08-04 12:50:50
【问题描述】:

我一直在尝试基于 SGD 模型参数(系数和截距)进行聚类。 coef_ 持有权重 w,intercept_ 持有 b。 这些参数如何与一组学习模型上的聚类 (KMedoids) 一起使用?

import numpy as np
from sklearn import linear_model
X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
Y = np.array([1, 1, 2, 2])
clf = linear_model.SGDClassifier()
clf.fit(X, Y)

所以我想为每个学习模型基于clf.coef_ (array([[19.47419669, 9.73709834]]))clf.intercept_ (array([-10.])) 进行聚类。

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。我觉得这个问题有点难理解,你说的基于SGD模型参数的聚类是什么意思?
  • 我的意思是基于 SGD 模型参数(coef_ 和 intercept_)的聚类,而不是使用 X 值(数据点)@JohannesAck
  • 是的,但是系数和截距参数是学习模型的参数,而不是数据点的参数。因此它只是一组参数,聚类在这里没有多大意义。您是否可能想使用 SGD 模型来预测每个 X 的潜在去噪 Y 值,然后对这些“去噪”(x,y) 对进行聚类?
  • @JohannesAck,我想根据学习模型的参数(系数和截距参数)对它们进行聚类?因为这部分是我分布式机器学习大代码的一部分
  • 首先,我应该同时使用(系数和截距参数)吗?第二怎么办?因为他们有不同的向量?

标签: python intercept feature-clustering


【解决方案1】:

每次训练模型后,通过附加系数和截距数组来构建用于聚类的 X 数据集,即:

X = np.vstack((X, np.hstack((clf.coeff_, clf.intercept_))))

在 X 中将所有数据提供给 KMedoids 模型后,即:

from sklearn_extra.cluster import KMedoids

kmed = KMedoids(n_clusters=N).fit(X)

请注意,您已经指定了 N,并且您可能应该在根据 clustering metrics 中的一个或多个选择最佳值之前测试多个 N 值的聚类结果。

【讨论】:

  • 我收到以下错误.....ValueError:所有输入数组必须具有相同的维数,但索引 0 处的数组有 2 个维度,索引 1 处的数组有1 个维度 @mac13k
  • 检查输入数组的形状和内容。
  • @mac13k clf.coef_.shape, clf.intercept_.shape 返回 ((1, 2), (1,))
  • 您不能直接将它们提供给 KMedoids。构建包含 3 列和与您训练的模型一样多的行的输入数组,然后将其放入 KMedoids。
猜你喜欢
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 2021-11-10
  • 2020-07-04
  • 2018-08-28
相关资源
最近更新 更多