繁体   English   中英

如何将数组转换为 np.array?

[英]How to convert an array to np.array?

我想在我的 k-means 算法中使用一组中心。 这是我的数组

[[-5.158116189420494, -6.135869490272887, -7.112943870919113, -4.719408271488777, -8.652736411771516, -5.115898856180194, -9.444466710512513, -6.721183141827832, -8.187939363193856, -4.866007421496122, -4.498541424902005, -6.05955187591462], [2.4503788682948797, 4.136767712097715, 3.800113452319174, 1.7263996510061559, 6.204316437195861, 3.199580908124732, 5.4996984541468565, 3.504064521222991, 1.7285485126344595, 1.9327954130937557, 4.491668242286317, 2.4442089524354818], [8.91661735243092, 8.19164570547311, 7.28941813144091, 11.01087393409493, 9.666237508380636, 7.689372230181427, 10.796081659572991, 10.587480247869069, 12.490792204659163, 9.146059052365413, 4.077223320288767, 8.748918676524138], [-5.007715234440542, -5.201881954076602, -2.990066071487654, -6.50605352762039, -6.097032315522047, -4.81206434114537, -5.453803052692122, -5.968516137674577, -4.087403530804171, -4.9456413319696315, -3.748488710268994, -3.8879845624490703]]

这就是我定义 k-means 使用它的方式

km = KMeans(n_clusters=4, init=cluster_centers, max_iter=30)
km.fit(Xnorm)
km.predict(Xnorm)
y_kmeans = km.predict(Xnorm)

我收到这个错误

ValueError: init should be either 'k-means++', 'random', a ndarray or a callable, got '[[-5.158116189420494, -6.135869490272887, -7.112943870919113, -4.719408271488777, -8.652736411771516, -5.115898856180194, -9.444466710512513, -6.721183141827832, -8.187939363193856, -4.866007421496122, -4.498541424902005, -6.05955187591462], [2.4503788682948797, 4.136767712097715, 3.800113452319174, 1.7263996510061559, 6.204316437195861, 3.199580908124732, 5.4996984541468565, 3.504064521222991, 1.7285485126344595, 1.9327954130937557, 4.491668242286317, 2.4442089524354818], [8.91661735243092, 8.19164570547311, 7.28941813144091, 11.01087393409493, 9.666237508380636, 7.689372230181427, 10.796081659572991, 10.587480247869069, 12.490792204659163, 9.146059052365413, 4.077223320288767, 8.748918676524138], [-5.007715234440542, -5.201881954076602, -2.990066071487654, -6.50605352762039, -6.097032315522047, -4.81206434114537, -5.453803052692122, -5.968516137674577, -4.087403530804171, -4.9456413319696315, -3.748488710268994, -3.8879845624490703]]' instead.

从我正在阅读的消息中,我认为我需要为数组使用特定格式。 如何进行转换?

计算要使用的中心

for i in range(0,100):
    X=dataML
    X = X[np.random.default_rng(seed=i).permutation(X.columns.values)]   
    #X = X.sample(frac=1).reset_index(drop=True)
    Xnorm=mms.fit_transform(X)         
    km=KMeans(n_clusters=4,n_init=10,max_iter=30,random_state=42)    
    y_kmeans=km.fit_predict(Xnorm)
    print('aqui')
    print(km.cluster_centers_)
    print('aqui 2')
    center_cluster01.append(km.cluster_centers_[0])
    center_cluster02.append(km.cluster_centers_[1])
    center_cluster03.append(km.cluster_centers_[2])
    center_cluster04.append(km.cluster_centers_[3])

meanC01=[]
for i in range(0,12):
    sum=0
    for j in range(0,100):        
        sum = sum + center_cluster01[j][i]            
    mean01 = sum/2
    meanC01.append(mean01)    

meanC02=[]
for i in range(0,12):
    sum=0
    for j in range(0,100):        
        sum = sum + center_cluster02[j][i]            
    mean02 = sum/2
    meanC02.append(mean02)    

meanC03=[]
for i in range(0,12):
    sum=0
    for j in range(0,100):        
        sum = sum + center_cluster03[j][i]            
    mean03 = sum/2
    meanC03.append(mean03)    

meanC04=[]
for i in range(0,12):
    sum=0
    for j in range(0,100):        
        sum = sum + center_cluster04[j][i]            
    mean04 = sum/2
    meanC04.append(mean04)

规范

Xnorm=mms.fit_transform(dataML)     
cluster_centers = [meanC01, meanC02, meanC03, meanC04]
km = KMeans(n_clusters=4, init=cluster_centers, max_iter=30)
km.fit(Xnorm)
km.predict(Xnorm)
y_kmeans = km.predict(Xnorm)

你能检查你拥有的第一个数组的类型吗? 我看到两组开括号,这意味着它是多维的。

您可能想尝试使用 numpy.ndarray.flatten() 展平您的数组。

由于维度问题,我遇到了数据未正确传递的问题。

NumPy 方法描述在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM