有多种方法可以处理此问题。您共享的链接讨论了这样一个事实,即单独处理lat long并对其执行功能缩放。这种方法很好,因为假设在球坐标中,它们彼此更接近,那么在现实生活中它们实际上会更接近。
但你的问题不同。我想你需要知道如何在你的模型中处理lat-long。您可以通过以下方式继续。
1、选择合适的型号
并非所有的机器学习技术都要求您缩放或规范化特征。尺度归一化通常是为了使模型相信所有特征都是相等的。这是必需的,因为一些机器学习模型基于距离度量,如KNN、逻辑回归。因此,如果不执行功能的缩放,可能会导致学习失败。如果您使用一些基于树的模型,如DTs或Random Forests或XGBoost或GBMs,我认为您甚至可以在不进行缩放的情况下使用这些功能。因此,您可以在功能集中直接使用lat long。
2、执行聚类以创建虚拟变量
大多数情况下,您可以使用一些聚类技术(如KMeans)对lat-long进行聚类,创建一个名为
cluster
并给出其值
群集编号
或
距集群中心的距离
然后拆下横向长柱。还可以为每个簇创建单独的特征,并计算到每个簇中心的距离,然后将该距离存储到这些变量中。
3、反向地理编码
正如您所提到的,您还可以执行反向地理编码来获取城市和国家名称。但在您的情况下,这种方法可能不是欺诈的有力预测工具。但仅供参考,
from pygeocoder import Geocoder
location = Geocoder.reverse_geocode(12.9716,77.5946)
print("City:",location.city)
print("Country:",location.country)
4、我的建议
如果特征空间本质上是线性的,但如果是非线性的,那么最好使用PAM、CLARA和DBSCAN等层次聚类,而不是KMeans,因为KMeans沿着最大方差进行聚类。