Estoy dando mis primeros pasos en la ciencia de datos y aprendizaje automático. Estoy experimentando con un proyecto donde tengo ni idea siquiera de qué enfoques yo podría empezar, así que agradecería cualquier conduce:
Tengo un conjunto de datos (para la explicación de la causa) de estudiante graduaciones. El conjunto de datos completa que contiene la totalidad de la población; todos los registros deben tener una fecha de graduación.
Sin embargo, debido a un mantenimiento de registros de fallo, los mayores registros tienen la fecha de graduación falta.
Tiene las siguientes características:
- Para graduaciones desde el 2014, tenemos una graduation_date
- Para graduaciones antes de 2014, la fecha de graduación falta
- Para todos los estudiantes, tenemos una fecha de nacimiento
- Para muchos estudiantes, la graduación será proporcional a la fecha de nacimiento. Por ejemplo, puede a menudo que se gradúan de 21 años después de nacer. Sin embargo, algunos serán estudiantes maduros, por lo que se pueden graduar muchos años después de la edad de 21 años.
- El Id de certificado son más o menos secuencial y numérico. Se puede suponer que el Id de certificado de cerca uno del otro, por tanto, representar a los estudiantes que se gradúan aproximadamente en la misma época
- La metáfora es algo imperfecto; se presupone que los estudiantes pueden graduarse en cualquier día
Mi reto es crear un enfoque en el que se puede inferir una fecha de graduación para todos los estudiantes, basados en la fecha de nacimiento.
El enfoque que he estado pensando en algo como esto:
- Para todos los estudiantes, donde ambas fechas están disponibles, tome un modo (graduation_age)
- El grupo de los estudiantes en bandejas de (digamos) 1000, de acuerdo a la secuencia de ID de certificado
- Encontrar el más común, mes y año de nacimiento para los estudiantes en cada bin
- Agregar el modo (graduation_age) para el más común de mes/año, para un determinado bin y asignar que como el graduation_date para todos los estudiantes en la papelera
Una muestra en la pandas podría parecerse a:
graduations = [
# Old data with missing graduation dates
{'certificate_id': '090029, 'birth_date': '01/01/1983', 'graduation_date': NaT},
{'certificate_id': '090048, 'birth_date': '04/01/1983', 'graduation_date': NaT},
...
# This is 'normal' students graduating roughly 21 years after
# their birth date
{'certificate_id': '120015, 'birth_date': '01/01/1993', 'graduation_date': 01/03/2014},
{'certificate_id': '120019, 'birth_date': '01/04/1993', 'graduation_date': 04/03/2014},
# However there are many exceptions, mature students or those
# graduating early
{'certificate_id': '120150, 'birth_date': '01/01/1966', 'graduation_date': 05/03/2014},
{'certificate_id': '120155, 'birth_date': '01/04/1996', 'graduation_date': 06/03/2014},
]
df = pd.DataFrame(graduations)
Se agradece cualquier ayuda, incluso si usted es capaz de decirme lo que este tipo de problema se llama para que yo pueda seguir investigando, o que me deje saber que no es posible con este conjunto de datos. Actualmente estoy ni siquiera seguro de cuál es la correcta etiquetas!