Передача значений из CSV-файла в переменную Apache OLSMultiLinearRegression X
Я пытаюсь запустить регрессию OLS, я передаю параметр для обеих переменных Y, X, поскольку это многолинейная регрессия. Я использую Apache OLSMultiLinearRegression api. Он работает нормально, но я еще не смог передать переменные X, это его несколько переменных. Любой способ обойти передачу переменных?
@Component
public class AppRunner implements CommandLineRunner{
private static final String datafile = "/path/to/datafile.csv";
@Override
public void run(String... args) throws Exception {
buildModel(datafile, 2304);
}
public static OLSMultipleLinearRegression buildModel( String data, int SIZE ) throws IOException, NumberFormatException, CsvValidationException {
double[] Y = new double[SIZE];
double[][] X = new double[SIZE][];
CSVReader csvReader = null;
try {
Reader reader = Files.newBufferedReader(Paths.get(data).toRealPath());
csvReader = new CSVReader(reader);
String[] nextRecord;
int index=0;
while ((nextRecord = csvReader.readNext()) != null) {
String tokens = nextRecord[1];
Y[index] = Double.parseDouble(nextRecord[0]);
X[0] = new double[]{Double.parseDouble(nextRecord[1])};
System.out.println("Shoe : " + Y[index]);
System.out.println("height : " + X[0]);
System.out.println("length : " + nextRecord[2]);
System.out.println("color : " + nextRecord[3]);
System.out.println("==========================");
}
} finally {
csvReader.close();
}
OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
regression.newSampleData(Y, X);
regression.setNoIntercept(false);
System.out.println(regression);
return regression;
}
}
Он отлично работает, передавая переменную Y из файла csv. Когда я передал X, он передает идентификатор, а не реальное значение.