我有一個數據框可以從下面的字典中重新構建。k-means/x-means(或其他?)聚類在熊貓/ python中
數據框代表全球各城市的23 statistics (X1-X23)
。每個城市在數據框中佔據一行,23個統計數據作爲單獨的列。
我的實際df有~6 million
個城市,所以它是一個很大的數據框。
我想要做的是:
第1步:確定基礎上,23 statistics (X1-X23)
城市羣。
步驟#2:鑑於步驟所識別的簇#1,我想要構造城市的組合,使得:
一個)從任何給定的簇選擇的城市的數量是有限(限制可以是爲每個羣集不同)
b)避免某些簇共
c)對投資組合選擇應用附加標準,以使投資組合中城市之間惡劣天氣的相關性最小化,城市間良好天氣的相關性最大化。
我的問題集是這樣的,K for a K-means algo
會很大,但我不確定那個值是多少。
我一直在讀聚類以下幾點:
Cluster analysis in R: determine the optimal number of clusters
How do I determine k when using k-means clustering?
然而,許多文獻是國外給我,會帶我幾個月理解。我不是數據科學家,也沒有時間學習機器學習課程。
在這一點上我有數據框,我現在正在旋轉我的拇指。
如果你能幫助我在實際實施Steps#1 to Steps#2
熊貓中使用示例數據集,我將不勝感激。
的字典下面可以通過pd.DataFrame(x)
進行重建,以一個數據幀,其中x是字典以下:
輸出df.head的()to_dict( 'REC'):
[{'X1': 123.40000000000001,
'X2': -67.900000000000006,
'X3': 172.0,
'X4': -2507.1999999999998,
'X5': 80.0,
'X6': 1692.0999999999999,
'X7': 13.5,
'X8': 136.30000000000001,
'X9': -187.09999999999999,
'X10': 50.0,
'X11': -822.0,
'X12': 13.0,
'X13': 260.80000000000001,
'X14': 14084.0,
'X15': -944.89999999999998,
'X16': 224.59999999999999,
'X17': -23.100000000000001,
'X18': -16.199999999999999,
'X19': 1825.9000000000001,
'X20': 710.70000000000005,
'X21': -16.199999999999999,
'X22': 1825.9000000000001,
'X23': 66.0,
'city': 'SFO'},
{'X1': -359.69999999999999,
'X2': -84.299999999999997,
'X3': 86.0,
'X4': -1894.4000000000001,
'X5': 166.0,
'X6': 882.39999999999998,
'X7': -19.0,
'X8': -133.30000000000001,
'X9': -84.799999999999997,
'X10': 27.0,
'X11': -587.29999999999995,
'X12': 36.0,
'X13': 332.89999999999998,
'X14': 825.20000000000005,
'X15': -3182.5,
'X16': -210.80000000000001,
'X17': 87.400000000000006,
'X18': -443.69999999999999,
'X19': -3182.5,
'X20': 51.899999999999999,
'X21': -443.69999999999999,
'X22': -722.89999999999998,
'X23': -3182.5,
'city': 'YYZ'},
{'X1': -24.800000000000001,
'X2': -34.299999999999997,
'X3': 166.0,
'X4': -2352.6999999999998,
'X5': 87.0,
'X6': 1941.3,
'X7': 56.600000000000001,
'X8': 120.2,
'X9': -65.400000000000006,
'X10': 44.0,
'X11': -610.89999999999998,
'X12': 19.0,
'X13': 414.80000000000001,
'X14': 4891.1999999999998,
'X15': -2396.0999999999999,
'X16': 181.59999999999999,
'X17': 177.0,
'X18': -92.900000000000006,
'X19': -2396.0999999999999,
'X20': 805.60000000000002,
'X21': -92.900000000000006,
'X22': -379.69999999999999,
'X23': -2396.0999999999999,
'city': 'DFW'},
{'X1': -21.300000000000001,
'X2': -47.399999999999999,
'X3': 166.0,
'X4': -2405.5999999999999,
'X5': 85.0,
'X6': 1836.8,
'X7': 55.700000000000003,
'X8': 130.80000000000001,
'X9': -131.09999999999999,
'X10': 47.0,
'X11': -690.60000000000002,
'X12': 16.0,
'X13': 297.30000000000001,
'X14': 5163.3999999999996,
'X15': -2446.4000000000001,
'X16': 182.30000000000001,
'X17': 83.599999999999994,
'X18': -36.0,
'X19': -2446.4000000000001,
'X20': 771.29999999999995,
'X21': -36.0,
'X22': -378.30000000000001,
'X23': -2446.4000000000001,
'city': 'PDX'},
{'X1': -22.399999999999999,
'X2': -9.0,
'X3': 167.0,
'X4': -2405.5999999999999,
'X5': 86.0,
'X6': 2297.9000000000001,
'X7': 41.0,
'X8': 109.7,
'X9': 64.900000000000006,
'X10': 42.0,
'X11': -558.29999999999995,
'X12': 21.0,
'X13': 753.10000000000002,
'X14': 5979.6999999999998,
'X15': -2370.1999999999998,
'X16': 187.40000000000001,
'X17': 373.10000000000002,
'X18': -224.30000000000001,
'X19': -2370.1999999999998,
'X20': 759.5,
'X21': -224.30000000000001,
'X22': -384.39999999999998,
'X23': -2370.1999999999998,
'city': 'EWR'}]
您應該在[CrossValidated](http://stats.stackexchange.com)上發佈此問題,因爲這不是一個真正的關於編程的問題,而是關於如何在一般情況下進行羣集。當然,事先做一個搜索---我很確定這已經被問過。 –
有趣的是,在CrossValidated上搜索會產生一些最終引用StackOverflow的帖子--- [這個答案](http://stackoverflow.com/questions/1793532/how-do-i-determine-k-when-using -k-means-clustering)。 –
你也可以在[Data Science SE](http://datascience.stackexchange.com/)上提問。雖然有一些方法可以確定* k *的最佳數量,但它們都有自己的標準,這些標準可能不符合您的需求。在實踐中,人們通常嘗試不同的k值並自己判斷結果。 – ayhan