Python:函数错误类型错误:元组索引必须是整数或切片,而不是元组 &TypeError:"int"对象不可下标



一直在我的函数上应用以下代码,但经常出现错误。请你解释一下我哪里错了

clusters = np.zeros((len(dataset),1))
def assign(centroids,dataset,clusters,k):
numOfObject=len(dataset)
#for every object in the dataset
for i in range(numOfObject):
X=dataset[i,1:-1]
#find the closest centroid
centroidOfX= -1
distanceToClosestcentroids = np.Inf
for y in range(k):

currentcentroids=centroids[y,:]
dist=distance(X,currentcentroids)
if dist<distanceToClosestcentroids:
#Found closer Centroid
distanceToClosestcentroids= dist
centroidOfX=y
#assign to X its closest centroid
clusters[i]=int(centroidOfX)

#assign((2.5),dataset,clusters,20)
assign((2,1),dataset,clusters,20)

真的不知道为什么我被提示这个错误

Traceback (most recent call last):
File "c:libraryK-Mean.py", line 71, in <module>
assign((2.5),dataset,clusters,20)
File "c:libraryK-Mean.py", line 62, in assign
currentcentroids=centroids[y,:]
TypeError: 'float' object is not subscriptable
PS C:library> & "C:/Users/ASHISH SHARMA/AppData/Local/Microsoft/WindowsApps/python3.9.exe" c:/library/K-Mean.py
Traceback (most recent call last):
File "c:libraryK-Mean.py", line 71, in <module>
assign((2,1),dataset,clusters,20)
File "c:libraryK-Mean.py", line 62, in assign
currentcentroids=centroids[y,:]
TypeError: tuple indices must be integers or slices, not tuple

代码运行良好,输入的值顺序不正确

def-assign(质心、数据集、簇、k(:"quot"分配函数有助于将值整体分配给K-Means和K-Medians 中使用的函数

Args:
centroids (NDArray(Float64)): This helps us store the value for the centroid of the cluster
dataset (NDArray): Dataset which we are using in the program to calculate K-Means and K-Medians
clusters (NDArray(Float64)): The different clusters formed by the program to classify them into different categories
k (int): The number of times we have to iterate the function
"""
numOfObjects = len(dataset)
#for every object in the dataset
for i in range(numOfObjects):
X = dataset[i, 1:-1]
#find the closest centroid
centroidsOfX = -1
distanceToClosestcentroids = np.Inf
for y in range(k):
currentcentroids = centroids[y,:]
dist = distance(X, currentcentroids)
if dist < distanceToClosestcentroids:
#Finally found closer Centroid
distanceToClosestcentroids = dist
centroidsOfX = y
#Assign to X its closest centroid
clusters[i] = int(centroidsOfX)

最新更新