Tôi đang thực hiện những bước đầu tiên của tôi trong khoa học dữ liệu và học máy. Tôi đang thử nghiệm một dự án mà tôi không biết ngay cả những cách tiếp cận nào tôi có thể bắt đầu, vì vậy tôi đánh giá cao bất kỳ khách hàng tiềm năng nào:
Tôi có một bộ dữ liệu (để giải thích vì lợi ích) của sinh viên tốt nghiệp. Tập dữ liệu hoàn chỉnh ở chỗ nó chứa toàn bộ dân số; tất cả các hồ sơ nên có một ngày tốt nghiệp.
Tuy nhiên, do thất bại trong việc lưu giữ hồ sơ, hồ sơ cũ có ngày tốt nghiệp bị mất tích.
Nó có các tính năng sau:
- Để tốt nghiệp từ năm 2014, chúng tôi có bằng tốt nghiệp
- Đối với tốt nghiệp trước năm 2014, ngày tốt nghiệp bị thiếu
- Đối với tất cả học sinh, chúng tôi có một ngày sinh
- Đối với nhiều sinh viên, tốt nghiệp sẽ tương quan với ngày sinh. Ví dụ, thường có thể họ tốt nghiệp 21 năm sau khi họ được sinh ra. Tuy nhiên, một số sẽ là sinh viên trưởng thành để họ có thể tốt nghiệp nhiều năm sau 21 tuổi.
- ID chứng chỉ nhiều hoặc ít hơn theo thứ tự và số. Có thể giả định rằng ID chứng chỉ gần nhau do đó đại diện cho sinh viên tốt nghiệp cùng một lúc
- Phép ẩn dụ có phần thiếu sót; cho rằng sinh viên có thể tốt nghiệp vào bất cứ ngày nào
Thách thức của tôi là tạo ra một cách tiếp cận có thể suy ra ngày tốt nghiệp cho tất cả sinh viên, dựa trên ngày sinh.
Cách tiếp cận tôi đã suy nghĩ về việc đi một cái gì đó như thế này:
- Đối với tất cả các sinh viên có sẵn cả hai ngày, hãy chọn một chế độ (tốt nghiệp_age)
- Nhóm các sinh viên vào các thùng của (giả sử) 1000, theo ID chứng chỉ tuần tự
- Tìm tháng và năm sinh phổ biến nhất cho các sinh viên trong mỗi thùng
- Thêm chế độ (tốt nghiệp_age) vào tháng / năm phổ biến nhất cho một thùng cụ thể và gán đó là tốt nghiệp_date cho tất cả học sinh trong thùng
Một mẫu trong gấu trúc có thể trông giống như:
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)
Bất kỳ trợ giúp sẽ được đánh giá cao, ngay cả khi bạn có thể cho tôi biết loại vấn đề này được gọi là gì để tôi có thể nghiên cứu thêm hoặc để cho tôi biết điều đó là không thể với bộ dữ liệu này. Tôi hiện không chắc chắn các thẻ chính xác là gì!
NaN
cho NULL
. Xem: pandas.pydata.org/pandas-docs/urdy/missing_data.html . Tuy nhiên, đọc lại một lần nữa tôi phát hiện ra rằng về mặt kỹ thuật tôi nên có NaT
(không phải là một thời gian) - tôi đã chỉnh sửa điều này.