데이터는 다음과 같습니다. (학습 데이터) - train.json, train.txt - 1회차부터 800회차 (검증 데이터) - valid.json, valid.txt - 801회차부터 1000회차 파일 구조를 먼저 이해하세요. - train.py, valid.py는 각 데이터에 대한 당첨 여부 확인입니다. filter_model.py를 이용하여 그 동안 몇회 당첨이 되었는지와 어떤 규칙으로 탈락이 되었는지를 분석해 줍니다. 로또 추출 로직은 다음 파일입니다. - filter_model.py (filter_model의 필터 설명) - filterPairBall는 함께 나오지 않을 만한 2개 숫자에 대한 조합입니다. - filterTriplePairBall는 함께 나오지 않을 만한 3개 숫자에 대한 조합입니다. - filterPatternInPaper1 ~ filterPatternInPaper6까지 함수는 용지 영역에서 함께 나오지 않을 법한 숫자 조합입니다. - 그 외 숫자 합, 숫자 평균, AC 값 등 로직 포함 (요구사항) - 100회차에 최소 1회 당첨 필터 로직 만드는 것입니다. - filter_model.py를 최적화 해야 합니다. -- 만약 불필요한 로직이 있다면 제거해도 좋습니다. -- filterPairBall과 filterTriplePairBall, filterPatternInPaper1 ~ filterPatternInPaper6의 필터도 학습 데이터를 분석해서 최적화 해주세요. -- 다음의 다른 모든 필터 로직도 재설계 및 최적화 해주세요... --- 당첨번호 6개 합 --- 당첨번호 6개 합에 대한 전주와 차이 --- 당첨번호 6개 평균 --- 당첨번호 6개 평균에 대한 전주와 차이 --- 앞 3개 볼의 합 --- 앞 3개 볼의 합에 대한 전주와 차이 --- 뒤 3개 볼의 합 --- 뒤 3개 볼의 합에 대한 전주와 차이 --- 23기준 작은 숫자 개수와 큰 숫자 개수 --- 고저합 (가장 큰 수와 가작 작은 숫자의 합) --- 고저합 (가장 큰 수와 가작 작은 숫자의 합)에 대한 전주와 차이 --- ball 간격의 합 --- ball 간격의 합에 대한 전주와 차이 --- 두 자리 중 첫자리 숫자의 합 (예, 8은 0, 15는 1, 28은 2) --- 두 자리 중 첫자리 숫자의 합 (예, 8은 0, 15는 1, 28은 2)에 대한 전주와 차이 --- 두 자리 중 두번째 자리 숫자의 합 (예, 8은 8, 15는 5, 27은 7) --- 두 자리 중 두번째 자리 숫자의 합 (예, 8은 8, 15는 5, 27은 7)에 대한 전주와 차이 --- 첫번째 숫자 --- 첫번째 숫자에 대한 전주와 차이 --- 마지막 숫자 --- 마지막 숫자에 대한 전주와 차이 --- Uniq한 끝자리 숫자 개수 ([8, 18, 22, 31, 40, 44]는 8, 2, 1, 0, 4 이렇게 5개임) --- Uniq한 끝자리 숫자 개수 ([8, 18, 22, 31, 40, 44]는 8, 2, 1, 0, 4 이렇게 5개임)에 대한 전주와 차이 --- AC 값 --- AC 값에 대한 전주와 차이 --- 3의 배수의 개수 --- 3의 배수의 개수에 대한 전주와 차이 --- 4의 배수의 개수 --- 4의 배수의 개수에 대한 전주와 차이 --- 5의 배수의 개수 --- 5의 배수의 개수에 대한 전주와 차이 --- 6의 배수의 개수 --- 6의 배수의 개수에 대한 전주와 차이 --- 7의 배수의 개수 --- 7의 배수의 개수에 대한 전주와 차이 --- 8의 배수의 개수 --- 8의 배수의 개수에 대한 전주와 차이 --- 9의 배수의 개수 --- 9의 배수의 개수에 대한 전주와 차이 --- 10의 배수의 개수 --- 10의 배수의 개수에 대한 전주와 차이 --- 11의 배수의 개수 --- 11의 배수의 개수에 대한 전주와 차이 --- 13의 배수의 개수 --- 13의 배수의 개수에 대한 전주와 차이 --- 17의 배수의 개수 --- 17의 배수의 개수에 대한 전주와 차이 --- 19의 배수의 개수 --- 19의 배수의 개수에 대한 전주와 차이 --- 23의 배수의 개수 --- 23의 배수의 개수에 대한 전주와 차이 --- 소수 포함 개수 --- 복소수 포함 개수 --- 복소수 포함 개수에 대한 전주와 차이 --- 홀짝 개수 --- 홀짝 개수에 대한 전주와 차이 --- 용지에 안나올 것 같은 마킹 위치 (filterPatternInPaper1~filterPatternInPaper6) --- 전회차와 주어진 볼과 전후 볼 --- 공 6개가 1번대, 10번대, 20번대, 30번대, 40번대 중 공이 존재하는 구간의 개수 --- 공 6개가 1번대, 10번대, 20번대, 30번대, 40번대 중 공이 존재하는 구간의 개수에 대한 전주와 차이 --- 최근 8주간 모든 당첨번호에 포함되는 금주 번호 개수 --- 최근 8주간 모든 당첨번호에 포함되는 금주 번호 개수에 대한 전주와 차이 --- 최근 12주간 모든 당첨번호에 포함되는 금주 번호 개수 --- 최근 12주간 모든 당첨번호에 포함되는 금주 번호 개수에 대한 전주와 차이 --- 최근 16주간 모든 당첨번호에 포함되는 금주 번호 개수 --- 최근 16주간 모든 당첨번호에 포함되는 금주 번호 개수에 대한 전주와 차이 --- 최근 20주간 모든 당첨번호에 포함되는 금주 번호 개수 --- 최근 20주간 모든 당첨번호에 포함되는 금주 번호 개수에 대한 전주와 차이 --- 통계적으로 잘 나올 것 같지 않은 3개 공 조합 체크 --- 이전 7회차에서 안나온 값이 없는 경우 --- 하나의 당첨 번호에서 N개 연속된 숫자인지 체크 -- 최적화된 로직은 매우 엄격해야 합니다. --- 매 회차에서 필터에 걸리지 않고 살아남는 조합의 개수는 300개 이내이면 좋겠습니다. --- 301개 넘는 다고 중단하라는 의미는 아닙니다. --- 가급적 필터에 많이 걸러서 적은 비용으로 구매할 수 있도록 해달라는 의미입니다. - train 데이터를 이용하여 filter_model의 필터 로직을 만들고 valid 데이터로 실험을 하세요. -- valid 데이터는 200회차가 존재함으로 최소 3회 이상 당첨이 되어야 합니다. 먼저 진행해야할 일에 대해서 생각하고 정리하세요. 그리고 요구사항에 대해서 시도 방법을 설계하세요. 그리고 반복적으로 실행해서 최적화된 방법을 찾아서 적용해주세요. (최적화는 언제든 학습 데이터로 최적화를 해야 합니다. 그리고 검증 데이터로 테스트만 수행하세요.)