<p>正如在另一个答案中已经暗示的那样,<code>fit_predict</code>只是返回集群标签的一个方便方法。根据<a href="https://scikit-learn.org/stable/modules/generated/sklearn.cluster.SpectralClustering.html#sklearn.cluster.SpectralClustering.fit" rel="nofollow noreferrer">documentation</a>,<code>fit</code></p>
<blockquote>
<p>Creates an affinity matrix for X using the selected affinity, then applies spectral clustering to this affinity matrix.</p>
</blockquote>
<p>而<code>fit_predict</code></p>
<blockquote>
<p>Performs clustering on X and returns cluster labels.</p>
</blockquote>
<p>这里,<em>在X上执行集群</em>应该理解为<code>fit</code>的描述,即,<em>创建一个亲和矩阵[…]</em>。在</p>
<p>不难验证调用<code>fit_predict</code>等同于从<code>fit</code>之后的对象获取<code>labels_</code>属性;使用一些伪数据,我们</p>
<pre><code>from sklearn.cluster import SpectralClustering
import numpy as np
X = np.array([[1, 2], [1, 4], [10, 0],
[10, 2], [10, 4], [1, 0]])
# 1st way - use fit and get the labels_
clustering = SpectralClustering(n_clusters=2,
assign_labels="discretize",
random_state=0)
clustering.fit(X)
clustering.labels_
# array([1, 1, 0, 0, 0, 1])
# 2nd way - using fit_predict
clustering2 = SpectralClustering(n_clusters=2,
assign_labels="discretize",
random_state=0)
clustering2.fit_predict(X)
# array([1, 1, 0, 0, 0, 1])
np.array_equal(clustering.labels_, clustering2.fit_predict(X))
# True
</code></pre>