gpt4 book ai didi

python - MiniBatchKMeans 溢出错误 : cannot convert float infinity to integer?

转载 作者:行者123 更新时间:2023-12-01 03:38:22 26 4
gpt4 key购买 nike

我正在尝试根据使用 sklearn.cluster.MiniBatchKMeans 的轮廓分数找到正确的簇数 k

from sklearn.cluster import MiniBatchKMeans
from sklearn.feature_extraction.text import HashingVectorizer

docs = ['hello monkey goodbye thank you', 'goodbye thank you hello', 'i am going home goodbye thanks', 'thank you very much sir', 'good golly i am going home finally']

vectorizer = HashingVectorizer()

X = vectorizer.fit_transform(docs)

for k in range(5):
model = MiniBatchKMeans(n_clusters = k)
model.fit(X)

我收到此错误:

Warning (from warnings module):
File "C:\Python34\lib\site-packages\sklearn\cluster\k_means_.py", line 1279
0, n_samples - 1, init_size)
DeprecationWarning: This function is deprecated. Please call randint(0, 4 + 1) instead
Traceback (most recent call last):
File "<pyshell#85>", line 3, in <module>
model.fit(X)
File "C:\Python34\lib\site-packages\sklearn\cluster\k_means_.py", line 1300, in fit
init_size=init_size)
File "C:\Python34\lib\site-packages\sklearn\cluster\k_means_.py", line 640, in _init_centroids
x_squared_norms=x_squared_norms)
File "C:\Python34\lib\site-packages\sklearn\cluster\k_means_.py", line 88, in _k_init
n_local_trials = 2 + int(np.log(n_clusters))
OverflowError: cannot convert float infinity to integer

我知道type(k)int,所以我不知道这个问题来自哪里。我可以很好地运行以下命令,但我似乎无法迭代列表中的整数,即使 type(2) 等于 k = 2;类型(k)

model = MiniBatchKMeans(n_clusters = 2)
model.fit(X)

即使运行不同的模型也能工作:

>>> model = KMeans(n_clusters = 2)
>>> model.fit(X)
KMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=2, n_init=10,
n_jobs=1, precompute_distances='auto', random_state=None, tol=0.0001,
verbose=0)

最佳答案

让我们分析一下您的代码:

  • for k in range(5) 返回以下序列:
    • 0、1、2、3、4
  • model = MiniBatchKMeans(n_clusters = k) 使用 n_clusters=k 初始化模型
  • 让我们看一下第一次迭代:
    • 使用n_clusters=0
    • 在优化代码中(查看输出):
    • int(np.log(n_clusters))
    • = int(np.log(0))
    • = int(-inf)
    • 错误:整数没有无穷大定义!
    • -> 将 -inf 的浮点值转换为 int 是不可能的!

设置n_clusters=0没有意义!

关于python - MiniBatchKMeans 溢出错误 : cannot convert float infinity to integer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40051170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com