001package javax.visrec.ml.data; 002 003import java.util.ArrayList; 004import java.util.Arrays; 005import java.util.List; 006import java.util.stream.Collectors; 007 008/** 009 * Basic implementation of {@link DataSet} interface. 010 * Provides a list of data set items with column info. 011 * 012 * @param <E> Type of elements in data set 013 * @author Zoran Sevarac 014 */ 015public class BasicDataSet<E> implements DataSet<E> { 016 017 /** 018 * List of data set items in this data set 019 */ 020 protected List<E> items; //this should be a data frame map of lists, even better use value types! 021 private Column[] columns; // this should be a list 022 023 protected BasicDataSet() { 024 items = new ArrayList<>(); 025 } 026 027 /** 028 * Creates an instance of {@link BasicDataSet} 029 * @param cols columns of the data set. 030 */ 031 public BasicDataSet(Column[] cols) { 032 this.columns = cols; 033 items = new ArrayList<>(); 034 } 035 036 /** 037 * Creates an instance of {@link BasicDataSet} 038 * @param elements items of the data set. 039 */ 040 public BasicDataSet(List<E> elements) { 041 this.items = elements; 042 } 043 044 @Override 045 public List<E> getItems() { 046 return items; 047 } 048 049 050 @Override 051 public String[] getTargetNames() { 052 List<String> targetLabels = Arrays.asList(columns).stream() 053 .filter((col) -> col.isTarget()) 054 .map((col) -> col.getName() ) 055 .collect(Collectors.toList()); 056 return targetLabels.toArray(new String[0]); 057 } 058 059 @Override 060 public void setColumnNames(String[] columnNames) { 061 for(int i=0; i<columns.length; i++) { 062 columns[i] = new DataSet.Column(columnNames[i]); 063 } 064 } 065 066 067 @Override 068 public String[] getColumnNames() { 069 String[] colNames = new String[columns.length]; 070 for(int i=0; i<columns.length; i++) { 071 colNames[i] = columns[i].getName(); 072 } 073 return colNames; 074 } 075 076 @Override 077 public DataSet<E>[] split(double... parts) { 078 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 079 } 080 081 082}