in flink-ml-lib/src/main/java/org/apache/flink/ml/feature/binarizer/Binarizer.java [124:149]
private Object binarizerFunc(Object obj, double threshold) {
if (obj instanceof DenseVector) {
DenseVector inputVec = (DenseVector) obj;
DenseVector vec = inputVec.clone();
for (int i = 0; i < vec.size(); ++i) {
vec.values[i] = inputVec.get(i) > threshold ? 1.0 : 0.0;
}
return vec;
} else if (obj instanceof SparseVector) {
SparseVector inputVec = (SparseVector) obj;
int[] newIndices = new int[inputVec.indices.length];
int pos = 0;
for (int i = 0; i < inputVec.indices.length; ++i) {
if (inputVec.values[i] > threshold) {
newIndices[pos++] = inputVec.indices[i];
}
}
double[] newValues = new double[pos];
Arrays.fill(newValues, 1.0);
return new SparseVector(inputVec.size(), Arrays.copyOf(newIndices, pos), newValues);
} else {
return Double.parseDouble(obj.toString()) > threshold ? 1.0 : 0.0;
}
}