我想对地理数据进行聚类,以对我所在区域内的景观类型进行分类。
我的数据由规则网格每个字段的五个变量(温度、温度幅度、降水量、海拔和土壤类型)组成。我有超过 100 万个字段(=数据框中的行)。
其中四个变量是数字,土壤类型是用数字描述的分类变量。(数值数据已经标准化。)我决定计算高尔距离相异矩阵,并在此矩阵上执行 PCA 和层次聚类。然而,数据太大了。
SOIL PREC TEMP ALT AMP
0 6 1.000 1.146 0.157 -0.579
1 6 0.948 1.224 0.154 -0.579
2 5 1.000 1.146 0.201 -0.662
3 6 1.078 1.093 0.177 -0.620
4 6 1.000 1.146 0.182 -0.620
5 6 1.000 1.146 0.186 -0.599
Run Code Online (Sandbox Code Playgroud)
我不想采样,因为变量是梯度的。我尝试计算频率并对较小的数据执行高尔距离,但它仍然太大。
我想我可能(1)手动对大数据集进行分块,(2)向每个分块矩阵添加两行额外的行,其中变量的最大值和最小值作为距离分析的每个变量范围的“描述”,(3)使用gower.dist函数计算每个块的相异矩阵,(4) 删除多余的行,(5) 将所有块相异矩阵合并为一个大相异矩阵。
您认为这是正确且可行的方式吗?您对如何处理这个问题还有其他建议吗?
对相异矩阵进行 PCA 是否正确?