Geohash字符串是我的稀疏逻辑回归模型中的一个特性。所以我使用java字符串hashCode在geohash字符串上生成int值以获取功能ID。但我发现hashCode方法在类似的geohash字符串上表现不佳。它导致不同的功能具有相同的功能ID,即使功能类似,模型优化也可能不好。 例如,那些类似的geohash字符串对具有相同的hashCode。
<"wws8vw", "wws8x9">
"wws8vw".hashCode() = -774715770
"wws8x9".hashCode() = -774715770
<"wmxy0", "wmxwn">
"wmxy0".hashCode() = 113265337
"wmxwn".hashCode() = 113265337
我猜它在geohash生成器方法和java hashCode方法之间有一些关系。那么,任何人都可以向我解释真正的原因以及如何减少geohash字符串上的冲突?
答案 0 :(得分:5)
我认为你误解了Object.hashCode()
method的目的 - 一般不是散列,而是Java对象有这种方法的原因:
支持此方法是为了哈希表的优势,例如HashMap提供的哈希表。
因此,如果您尝试将此方法用作机器学习模型的输入,则不会将其用于预期目的。
答案非常明显:您需要设计自己的散列方法 - 或者选择一个预先存在的散列方法 - 它可以为您提供所需输入的碰撞配置文件。 String.hashCode()
使用的那个不能由您更改。