Estoy usando php-ml y tomando un archivo .csv con 6 columnas y miles de líneas, quiero que cada quinto elemento (columna) de cada matriz se guarde en $muestras. He intentado lo siguiente que me da el primer elemento de cada matriz.
$dataset = new CsvDataset('myNewCsvFile.csv', 1); $samples = []; foreach ($dataset->getSamples() as $sample) { $samples[] = $sample[0]; }No entiendo por qué esto no se lee completamente en mi .csv, si cambio el índice de muestra [0] a cualquier otro índice, aparece el siguiente error:
Notice: Undefined offset: 1 in C:\xampp\htdocs\test\index.php on line 19Esto me sugiere que solo está leyendo la primera columna de cada fila, lo que se prueba si imprimo la matriz Muestras, obtengo lo que esperaría, que es lo siguiente:
Array ( [0] => 1157 [1] => 1157 [2] => 1157 [3] => 1157 [4] => 1157 [5] => 1157 [6] => 1157 [7] => 1157 [8] => 1157 [9] => 1157 [10] => 1157 [11] => 1157 [12] => 1157 [13] => 1157 [14] => 1157 [15] => 1157 [16] => 1157 [17] => 1157 [18] => 1157 [19] => 1157 [20] => 1157 [21] => 1157 [22] => 1157Y así sucesivamente lo que es correcto. ¿Alguien puede explicar por qué esto no se lee en mi archivo .csv completo?
Como muestra el documento de referencia , debe pasarle al constructor una cantidad de columnas para leer como un segundo argumento y solo le está pidiendo una columna. En el siguiente fragmento pongo otro número para obtener más columnas.
use Phpml\Dataset\CsvDataset; // the third argument makes it ignore the heading row $dataset = new CsvDataset('myNewCsvFile.csv',4,true); foreach ($dataset->getSamples() as $sample) { print_r($sample); }Salidas:
Array ( [0] => 101 [1] => 201 [2] => 301 [3] => 401 ) Array ( [0] => 102 [1] => 202 [2] => 302 [3] => 402 ) Y myNewCsvFile.csv es;
┌─────┬─────┬─────┬─────┬─────┬─────┐ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ ├─────┼─────┼─────┼─────┼─────┼─────┤ │ 101 │ 201 │ 301 │ 401 │ 501 │ 601 │ │ 102 │ 202 │ 302 │ 402 │ 502 │ 602 │ └─────┴─────┴─────┴─────┴─────┴─────┘