    001package javax.visrec.ml.data;
    002
    003import javax.visrec.ml.data.norm.Normalizer;
    004
    005/**
    006 * Utility class that provides commmon operations on data sets
    007 * @author zoran
    008 */
    009public class DataSets {
    010
    011    private DataSets() { }
    012
    013    // scale values
    014    // maybe just provide DataSet.normalize(new MaxNormalizer) , and dataSet injects itself into normalizer
    015    // or even better norm= new MaxNormalizer(dataSet); norm.normalize(); also separate construction from analysis
    016
    017    public static <E> DataSet<E> normalize(DataSet<E> dataSet, Normalizer norm) {
    018        return norm.normalize(dataSet, false);
    019    }
    020
    021    // how about moving thes estatic methods to coresponding interface?
    022//    public static <E> DataSet<E> normalizeMax(DataSet<E> dataSet) {
    023//        Normalizer norm = new MaxNormalizer(dataSet); // perform analysys of data set (find max values)
    024//        return norm.normalize(dataSet, false); // perfrom normalization and return as new data set
    025//    }
    026
    027//    public static <E> DataSet<E> normalizeMinMax(DataSet<E> dataSet) {
    028//        Normalizer norm = new MinMaxNormalizer(dataSet); // perform analysys of data set (find max values)
    029//        return norm.normalize(dataSet, false); // perfrom normalization and return as new data set
    030//    }
    031
    032//    public static <E> DataSet<E> normalizeRange(DataSet<E> dataSet, float low, float high) {
    033//        Normalizer norm = new MinMaxNormalizer(dataSet); // perform analysys of data set (find max values)
    034//        return norm.normalize(dataSet, false); // perfrom normalization and return as new data set
    035//    }
    036
    037
    038    // how to specify which columns to normalize? do we need to? just normalize all
    039    // how will this method know about how to normalize specific type of elemeents? eg. User? or  this assumes only numeric values
    040
    041
    042    // retrun data set whith ddesired statistical properties
    043    // zero mean, one std
    044    public static <E> DataSet<E> standardize(DataSet<E> dataSet) { // apply to all numer columns
    045        // how will this method know about how to normalize specific type of elemeents?
    046        throw new UnsupportedOperationException("not implemented");
    047    }
    048
    049    // this shoul ddefinitely be utility method
    050    public static <E> DataSet<E> removeDuplicates() {
    051        throw new UnsupportedOperationException("not implemented");
    052    }
    053
    054    //transform()       - maybe can transorm into datas set whsle elements ar eof another type
    055
    056//      statisticsSummary ()    -       mean std freq  by cols, maybe better go put it in dat aset class?
    057        // max, min, mean, std
    058    // returns true if data set is balanced (only needed for classification problems, not to go in Dataset interface)
    059    public static boolean isBalanced(DataSet<?> dataSet) {  //use generic method to infer type of data set elements
    060        throw new UnsupportedOperationException("not implemented");
    061    }
    062
    063    // summary - return basic statistics for each column in dat aset min, max, mean , mode, std, 1q, 3q
    064
    065    /**
    066        addNoise with some noice generator
    067        balance(BalanceStrtegy)
    068
    069        dimensionalityreuction
    070    */
    071
    072}