亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據最大值對列表值進行分組

根據最大值對列表值進行分組

陪伴而非守候 2023-03-22 16:46:24
我正在研究 k-mean 算法來聚類數字列表,如果我有一個數組 (X)X=array([[0.85142858],[0.85566274],[0.85364912],[0.81536489],[0.84929932],[0.85042336],[0.84899714],[0.82019115], [0.86112067],[0.8312496 ]])然后我運行以下代碼from sklearn.cluster import AgglomerativeClusteringcluster = AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward')cluster.fit_predict(X)for i in range(len(X)):    print("%4d " % cluster.labels_[i], end=""); print(X[i])我得到了結果   1     1  [0.85142858]   2     3  [0.85566274]   3     3  [0.85364912]   4     0  [0.81536489]   5     1  [0.84929932]   6     1  [0.85042336]   7     1  [0.84899714]   8     0  [0.82019115]   9     4  [0.86112067]   10    2  [0.8312496]如何獲得每個簇中值為 (i) 的最大數量?像這樣0: 0.82019115   81: 0.85142858   12: 0.8312496    103: 0.85566274   24: 0.86112067   9
查看完整描述

1 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

首先將它們組合成對使用zip然后按值(對的第二個元素)按遞增順序對其進行排序并從中創建一個字典。


嘗試:


res =  list(zip(cluster.labels_, X))

max_num = dict(sorted(res, key=lambda x: x[1], reverse=False))

最大數量:


{0: array([0.82019115]),

 2: array([0.8312496]),

 1: array([0.85142858]),

 3: array([0.85566274]),

 4: array([0.86112067])}

編輯:


你想要這個嗎?


elem = list(zip(res, range(1,len(X)+1)))

e = sorted(elem, key=lambda x: x[0][1], reverse=False)

final_dict = {k[0]:(k[1], v) for (k,v) in e}

for key in sorted(final_dict):

    print(f"{key}: {final_dict[key][0][0]} {final_dict[key][1]}")

0: 0.82019115 8

1: 0.85142858 1

2: 0.8312496 10

3: 0.85566274 2

4: 0.86112067 9

或者

import pandas as pd    

df = pd.DataFrame(zip(cluster.labels_,X))

df[1] = df[1].str[0]

df = df.sort_values(1).drop_duplicates([0],keep='last')

df.index = df.index+1

df = df.sort_values(0)

df:


    0   1

8   0   0.820191

1   1   0.851429

10  2   0.831250

2   3   0.855663

9   4   0.861121


查看完整回答
反對 回復 2023-03-22
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號