<p>我也遇到过类似的问题,但我希望来自另一个发行版的数据集以与原始数据集相同的方式进行集群。例如,原始数据集的所有彩色图像都在<code>cluster 0</code>中,原始数据集的所有灰色图像都在<code>cluster 1</code>中。对于另一个数据集,我希望彩色图像/灰色图像也在<code>cluster 0</code>和<code>cluster 1</code>中。</p>
<p>这是我从Kaggler中窃取的代码-除了将<code>random_state</code>设置为seed之外,还可以使用<code>KMeans</code>返回的k-mean模型对其他数据集进行聚类。这相当有效。但是,我找不到官方的<code>scikit-Learn</code>文档这么说。</p>
<pre><code># reference - https://www.kaggle.com/kmader/normalizing-brightfield-stained-and-fluorescence
from sklearn.cluster import KMeans
seed = 42
def create_color_clusters(img_df, cluster_count = 2, cluster_maker=None):
if cluster_maker is None:
cluster_maker = KMeans(cluster_count, random_state=seed)
cluster_maker.fit(img_df[['Green', 'Red-Green', 'Red-Green-Sd']])
img_df['cluster-id'] = np.argmin(cluster_maker.transform(img_df[['Green', 'Red-Green', 'Red-Green-Sd']]),-1)
return img_df, cluster_maker
# Now K-Mean your images `img_df` to two clusters
img_df, cluster_maker = create_color_clusters(img_df, 2)
# Cluster another set of images using the same kmean-model
another_img_df, _ = create_color_clusters(another_img_df, 2, cluster_maker)
</code></pre>
<p>但是,即使将<code>random_state</code>设置为<code>int seed</code>,也无法确保在不同的计算机上始终按相同的顺序对相同的数据进行分组。同一数据可以在一台计算机上群集为<code>group 0</code>,在另一台计算机上群集为<code>group 1</code>。但至少在使用相同的K-Means模型(在我的代码中是<code>cluster_maker</code>)时,我们确保来自另一个发行版的数据将以与原始数据集相同的方式进行集群。</p>