A computing device for predicting available access points, the computing device comprising: a hardware processor and a data storage device storing instructions that, when executed by the hardware processor, cause the hardware processor to: obtain a set of training fingerprints, each training fingerprint specifying, for a client device, i) a set of access points, and ii) cellular signal strength measurements for each cellular tower in a set of cellular towers generate a plurality of classes based on the set of training fingerprints, each class specifying at least one access point, the at least one access point of each class corresponding to the set of access points specified by at least one training fingerprint, and each class specifying a different combination of access points; and train a predictive model to receive, as input, an input fingerprint specifying a cellular signal strength measurement for each cellular tower in a set of input cellular towers and produce, as output, at least one of the plurality of classes; wherein the predictive model is trained to produce, as output for each class in the at least one of the plurality of classes, a measure of likelihood that the input fingerprint belongs to the class. a hardware processor and a data storage device storing instructions that, when executed by the hardware processor, cause the hardware processor to: obtain a set of training fingerprints, each training fingerprint specifying, for a client device, i) a set of access points, and ii) cellular signal strength measurements for each cellular tower in a set of cellular towers generate a plurality of classes based on the set of training fingerprints, each class specifying at least one access point, the at least one access point of each class corresponding to the set of access points specified by at least one training fingerprint, and each class specifying a different combination of access points; and train a predictive model to receive, as input, an input fingerprint specifying a cellular signal strength measurement for each cellular tower in a set of input cellular towers and produce, as output, at least one of the plurality of classes; wherein the predictive model is trained to produce, as output for each class in the at least one of the plurality of classes, a measure of likelihood that the input fingerprint belongs to the class. obtain a set of training fingerprints, each training fingerprint specifying, for a client device, i) a set of access points, and ii) cellular signal strength measurements for each cellular tower in a set of cellular towers generate a plurality of classes based on the set of training fingerprints, each class specifying at least one access point, the at least one access point of each class corresponding to the set of access points specified by at least one training fingerprint, and each class specifying a different combination of access points; and train a predictive model to receive, as input, an input fingerprint specifying a cellular signal strength measurement for each cellular tower in a set of input cellular towers and produce, as output, at least one of the plurality of classes; wherein the predictive model is trained to produce, as output for each class in the at least one of the plurality of classes, a measure of likelihood that the input fingerprint belongs to the class.