作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我的 df 为 20 列和 10K 行。由于数据的取值范围很广,我使用以下代码对数据进行归一化:
from sklearn.preprocessing import StandardScaler
min_max_scaler = preprocessing.StandardScaler()
df_scaled = min_max_scaler.fit_transform(df)
df_scaled
现在包含负值和正值。现在,如果我将这个归一化数据帧传递到谱簇,如下所示,
spectral = SpectralClustering(n_clusters = k,
n_init=30,
affinity='nearest_neighbors', random_state=cluster_seed,
assign_labels='kmeans')
clusters = spectral.fit_predict(df_scaled)
我会得到集群标签。
这让我感到困惑:official doc说“仅应使用产生相似性分数(随相似性增加的非负值)的内核。聚类算法不会检查此属性。”
问题:df_scaled
归一化负值是否会影响聚类结果?或者它是否取决于我正在使用的亲和性计算,例如预计算
,rbf
?如果是这样,我如何使用 SpectralClustering 的归一化输入值?我的理解是,归一化可以改善聚类结果,并且有利于更快的计算。感谢您提供有关如何解决该问题的任何帮助或提示。
最佳答案
您正在传递一个数据矩阵,而不是预先计算的亲和性矩阵。
“最近邻居”使用非负的二进制内核。
为了更好地理解内部工作原理,请查看源代码。
关于python - scikit-learn 谱聚类的输入值可以是负值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240115/
我是一名优秀的程序员,十分优秀!