假设我有给定的数据帧
feature_1 feature_2 feature_3 feature_4 feature_5 feature_6 feature_7 feature_8
0 0.862874 0.392938 0.669744 0.939903 0.382574 0.780595 0.049201 0.627703
1 0.942322 0.676181 0.223476 0.102698 0.620883 0.834038 0.966355 0.554645
2 0.940375 0.310532 0.975096 0.600778 0.893220 0.282508 0.837575 0.112575
3 0.868902 0.818175 0.102860 0.936395 0.406088 0.619990 0.913905 0.597607
4 0.143344 0.207751 0.835707 0.414900 0.360534 0.525631 0.228751 0.294437
5 0.339856 0.501197 0.671033 0.302202 0.406512 0.997044 0.080621 0.068071
6 0.521056 0.343654 0.812553 0.393159 0.217987 0.247602 0.671783 0.254299
7 0.594744 0.180041 0.884603 0.578050 0.441461 0.176732 0.569595 0.391923
8 0.402864 0.062175 0.565858 0.349415 0.106725 0.323310 0.153594 0.277930
9 0.480539 0.540283 0.248376 0.252237 0.229181 0.092273 0.546501 0.201396
我想在这些行中找到集群。为此,我想使用Kmeans。然而,我希望通过比数据帧中的其他功能更重视[feature_1,feature_2]来找到集群。比方说,对于[feature_1、feature_2],重要性系数0.5,对于其余特征,重要性系数0.5。
我考虑过使用主成分分析将[feature_3,…,feature_8]转换为一列。通过这样做,我认为Kmeans对单个特征的重视程度将低于对6个分离特征的重视。
这是个好主意吗?你能找到更好的方法将这些信息提供给算法吗?
Kmeans所做的是试图找到质心,并将点分配给与质心欧氏距离最小的质心。在机器学习中,当最小化欧氏距离或将其用作损失函数时,通常应该确保不同的特征具有相同的尺度。否则,较大的特征将主导寻找最接近的点。这就是为什么我们通常在训练模型之前进行一些缩放。
然而,在你的情况下,你可以利用这一点,首先使用一些minmax或standarscaler将所有功能放在同一比例上,然后将前2个功能放大一个因子>1或将其余6个特征缩小因子<1.