private int[] applyNewFeatures(List<RankList> samples, int[] features) { int totalFeatureCount = samples.get(0).get(0).getFeatureCount(); int[] newFeatures = new int[features.length + lcList.size()]; System.arraycopy(features, 0, newFeatures, 0, features.length); // for(int i=0;i<features.length;i++) // newFeatures[i] = features[i]; for (int k = 0; k < lcList.size(); k++) newFeatures[features.length + k] = totalFeatureCount + k + 1; float[] addedFeatures = new float[lcList.size()]; for (int i = 0; i < samples.size(); i++) { RankList rl = samples.get(i); for (int j = 0; j < rl.size(); j++) { DataPoint p = rl.get(j); for (int k = 0; k < lcList.size(); k++) addedFeatures[k] = lcList.get(k).compute(p.getExternalFeatureVector()); p.addFeatures(addedFeatures); } } int[] newFeatures2 = new int[lcList.size()]; for (int i = 0; i < lcList.size(); i++) newFeatures2[i] = newFeatures[i + features.length]; if (keepOrigFeatures) return newFeatures; return newFeatures2; }
public int[] getFeatureFromSampleVector(List<RankList> samples) { DataPoint dp = samples.get(0).get(0); int fc = dp.getFeatureCount(); int[] features = new int[fc]; for (int i = 0; i < fc; i++) features[i] = i + 1; return features; }