Todos los datos están almacenados en /nfs/astro/torradeflot/MOOC/GalaxyZoo1
.
Las rutas a los datos hacen referencia a ubicaciones dentro de esta carpeta.
Extracción de datos del DR14 de SkyServer
Select * from Zoospec
- Total de 667944 registros
DR14_ZooSpec.csv
- Muestra aleatoria de 10.000 registros
DR14_ZooSpec_10000.csv
- De la anterior muestra, los que están clasificados:
DR14_ZooSpec_10000_classified.csv
Especificación de los campos en Sky Server Schema Browser
En algunos casos, los valores de los campos `elliptical` y `spiral` no se corresponden con su definición. Teóricamente:
- elliptical: flag for elliptical - 1 if debiased elliptical fraction > 0.8, 0 otherwise
- spiral: flag for combined spiral - 1 if debiased spiral fraction > 0.8, 0 otherwise
En la tabla a continuación se puede ver la correspondencia entre la definición y el valor de los campos.
result | type_prob | type_raw | N |
Coherent values | uncertain | uncertain | 373,719 |
spiral | spiral | 147,138 | |
elliptical | elliptical | 57,755 | |
Non coherent values | uncertain | elliptical | 4,435 |
elliptical | spiral | 165 | |
uncertain | spiral | 42,922 | |
elliptical | uncertain | 28,182 | |
spiral | uncertain | 13,628 |
Dónde type_prob
es el tipo de galaxia extraído de las probabilidades p_cs_debiased
y p_el_debiased
y
y type_raw
es el tipo informado en la tabla ZooSpec.
Sugiero ignorar los campos elliptical
y spiral
y utilizar únicamente los campos p_cs_debiased
y p_el_debiased
Utilizando estos para el cálculo del target sobre DR14_ZooSpec_10000.csv
queda:
spiral | 2,410 |
elliptical | 1,291 |
uncertain | 6,299 |
Algunas imágenes jpeg de muestra se han descargado en images
:
images
└── 0.4
├── 16x16
├── 32x32
└── 64x64
Corresponden a objetos seleccionados aleatoriamente de entre los del Galaxy Zoo, con pixel scale=0.4 y tamaño 16x16, 32x32 o 64x64 píxeles.
# /image_script.py get_jpegs -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec.csv -n 100 -f /nfs/astro/torradeflot/MOOC/GalaxyZoo1
# /image_script.py get_jpegs -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec.csv -n 100 -f /nfs/astro/torradeflot/MOOC/GalaxyZoo1 -d 32
# /image_script.py get_jpegs -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec.csv -n 100 -f /nfs/astro/torradeflot/MOOC/GalaxyZoo1 -d 16
-
Dividir el csv con datos del Galaxy Zoo en chunks:
./image_script.py split_csvs -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec_10000.csv -c 100 -d /tmp
-
Para cada fichero recoger las imágenes de todos los objetos y guardarlo en un csv
./image_script.py get_features -o /tmp/{file_name}
Este csv tendrá 64*64 + 1 = 4097 campos.
-
Hacer merge de todos los ficheros de features:
./image_script.py merge_csvs -o /tmp/{f1},...,/tmp/{fn} -d /nfs/astro/torradeflot/MOOC/GalaxyZoo1/F_DR14_ZooSpec_10000.csv
-
Filtrar solamente las imágenes clasificadas. El fichero de salida tiene un tamaño de 600MiB e incluye también imágenes que no han sido satisfactoriamente clasificadas. Esto quiere decir que no tienen almenos un 80% de votos en uno de los sentidos. Éstas imágenes no van a ser utilizadas para la clasificación, así que para el entreno y validación del modelo las podemos filtrar.
Seleccionamos aquellos objetos de
ZooSpec
conspiral==1
oelliptical==1
y nos quedan 3788 registros y el fichero de features se "reduce" a 200MiB.Los datos filtrados son:
DR14_ZooSpec_10000_classified.csv
iF_DR14_ZooSpec_10000_classified.csv
-
Generación de un sample aleatorio de imágenes
./image_script.py plot_sample_images -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/F_DR14_ZooSpec_10000.csv -s 3,3
-
Generación de la imagen de una galaxia por su id:
./image_script.py plot_sample_images -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/F_DR14_ZooSpec_10000.csv -i 587741726583292117
A partir de los campos p_cs_debiased
y p_el_debiased
se ha generado una base de datos ficticia de votos.
Este script genera un fichero csv de votos con los campos:
- dr7objid
- user_id: identificación del usuario que ha hecho el voto
- 1 o 0: sentido del voto 1=espiral, 0=elíptica
El mismo script tiene un método para comprobar que las clasificaciones obtenidas a partir de los votos serán las mismas que se obtienen de los datos de ZooSpec:
./votes.py check_votes -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec_10000.csv -v /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec_10000_good_votes.csv
NO errors for fields votes_el and or_el
NO errors for fields votes_cs and or_cs
NO errors for fields votes_uc and or_uc
El script provee un método para la generación de usuarios que muestran un perfil de voto alejado de la media. O sea, usuarios que votan frecuentemente en sentido contrario a la mayoría de gente y que, por lo tanto, son susceptibles de generar votos inválidos.
Para a generación de estos usuarios se realizan varios pasos:
- se calcula el voto medio de cada imagen
mi
. - se calcula la "varianza" respecto a la media de cada usuario:
sum((vi - mi)**2)/n
dondevi
es el voto del usuario para la imageni
yn
es el número de votos del usuario. - se generan un numero aleatorio de usuarios malos con un "varianzas" superiores a un límite.
- el fichero de salida contiene tanto los usuarios "buenos" como "malos"
./votes.py add_bad_votes -o /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec_10000_good_votes.csv \
-d /nfs/astro/torradeflot/MOOC/GalaxyZoo1/DR14_ZooSpec_10000_good_and_bad_votes.csv