당신은 주제를 찾고 있습니까 “로또 번호 예측 알고리즘 – 딥러닝이 예측한 로또 번호는 당첨이 잘될까?“? 다음 카테고리의 웹사이트 https://you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 조코딩 JoCoding 이(가) 작성한 기사에는 조회수 559,995회 및 좋아요 7,962개 개의 좋아요가 있습니다.
알파고의 알고리즘은 ‘몬테카를로 트리검색‘(MCTS)이다. 이 방식은 확률적인 문제를 풀 때 사용하는 계산법으로 기대 값을 가정한 후 수학적 통계를 반복함으로써 평균값을 구하는 방식이다. 로또도 ‘몬테카를로 알고리즘’을 통해 예상번호를 추출할 수 있다.
로또 번호 예측 알고리즘 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 딥러닝이 예측한 로또 번호는 당첨이 잘될까? – 로또 번호 예측 알고리즘 주제에 대한 세부정보를 참조하세요
로또 번호 데이터를 딥러닝(LSTM)으로 학습시키고 다음 회차를 예측해보면 당첨이 잘되는지 검증을 해보고 직접 나온 번호로 로또를 구매해보는 영상입니다.
조코딩 멤버십 가입(멤버십 전용 강의 월별 무제한 수강)
▶https://www.youtube.com/channel/UCQNE2JmbasNYbjGAcuBiRRg/join
조코딩 채널 강사 지원
▶https://forms.gle/LsbgU8xFL9gtzRSt6
디스코드 조코딩의 코딩 커뮤니티
▶https://discord.gg/zny87VeSaX
결론적으로 로또는 독립시행이라 예측 모델이 의미 없지만 유료 로또 서비스 쓸바에는 공짜로 이거 쓰세요!
딥러닝 로또 예측 사이트: https://animalface.site/lotto
완성 코드: https://github.com/youtube-jocoding/lotto-deeplearning
동행복권: https://dhlottery.co.kr/
목차
00:00 미리보기
00:09 인트로
00:22 수 많은 유료 로또 번호 예측 사이트
01:04 강의 목차
01:29 경고
01:45 참고 문헌
02:04 인공지능, 딥러닝 개념
03:08 딥러닝 로또 번호 예측 소개
03:43 로또 번호 데이터 수집
07:22 데이터 전처리
07:26 데이터의 종류 – 수치형, 범주형
08:14 원핫인코딩
09:33 Colab 개발 환경 소개
09:47 완성 코드 github
10:04 Colab 연결 및 데이터 불러오기
10:29 라이브러리 설치 및 데이터 전처리 준비
11:44 모델 구성 및 학습
11:50 LSTM 설명
12:27 지도학습 설명
13:41 코드로 학습 수행
14:30 학습된 모델 성능 검증
16:15 여러개의 로또 예측 번호 생성 방법
18:29 모델 평가 방법
19:05 모델 평가
20:38 실제 로또 구매 결과
22:10 딥러닝 로또 번호 예측 사이트 무료 공개
22:49 구독, 좋아요, 알림설정 부탁드립니다
23:01 아웃트로
—
[참고 문헌]김태영님 블로그: https://tykimos.github.io/2020/01/25/keras_lstm_lotto_v895
김태영님 유튜브 채널:
https://youtube.com/channel/UCG9LWKvg0zADFS_JvVktILg
인공지능 퀀트 코리아
https://www.facebook.com/groups/aiquantkorea/
#인공지능 #딥러닝 #로또
로또 번호 예측 알고리즘 주제에 대한 자세한 내용은 여기를 참조하세요.
딥러닝이 예측한 로또 번호는 당첨이 잘될까? 검증 해봤습니다
로또 번호 데이터를 RNN 계열의 딥러닝 알고리즘 LSTM으로 학습시키고 다음 회차를 예측해보면 당첨이 잘되는지 검증을 해보고 직접 나온 번호로 로또 …
Source: developerdk.tistory.com
Date Published: 10/3/2021
View: 9952
로또 당첨번호 예측 이론/알고리즘 모음 (2) – 제외수, 달력, 미출현
로또 당첨번호 예측 이론/알고리즘 모음 (2) – 제외수, 달력, 미출현. 4. 로또번호 45개 숫자 중에서 필요 없는 숫자 걸러내기 (제외수)
Source: duddal.tistory.com
Date Published: 12/15/2021
View: 8133
조코딩 인공지능 딥러닝 로또 번호 예측 – 동물상 테스트
딥러닝(LSTM)을 활용하여 로또 번호를 예측합니다. · 원리는 아래 유튜브 영상을 참고해주세요! · 딥러닝 1027회차 당첨 번호 예측 · 딥러닝 1022회차 결과 – 5등 5번 당첨.
Source: animalface.site
Date Published: 11/12/2021
View: 2960
로또 당첨번호 예측 이론/알고리즘 모음 (1) – 고정수, 123456 …
로또 당첨번호 예측 이론/알고리즘 모음 (1) – 고정수, 123456, 화성인. lh.m 2019. 7. 2. 16:41. 1. 고정수 이론 – 아날로그 기계로 추첨하니 분석 가능하다.
Source: bomsoft.com
Date Published: 5/22/2022
View: 4063
알파고는 로또 번호를 예상하고 맞출 수 있을까? – Steemit
오늘의 포스팅에서는 인공지능 프로그램인 알파고가 과연 로또 당첨번호를 예측하고 1등 번호를 맞출 수 있는 것인지 알아보았습니다.
Source: steemit.com
Date Published: 5/5/2022
View: 5085
통계에 근거한 Lotto번호 생성기 – Google Play 앱
수학적 알고리즘은 특정 기준에 의한 알고리즘을 통해 Lotto번호를 생성합니다. □ 양자역학은 세계에서 가장 효율적인 양자난수 생성기(EYL 기술, 보스톤 매스챌린지 …
Source: play.google.com
Date Published: 10/22/2022
View: 9870
딥러닝으로 로또 당첨 번호를 예측할 수 있을까? > 학습
물론, 이런 업체들이 내세우는 알고리즘 또는 인공지능 기술이 어떤것인지는 모르겠지만 로또와 같은 인과 관계가 없는 연속된 데이타를 예측한다는건 불가능합니다.
Source: ngmsoftware.com
Date Published: 11/13/2022
View: 7968
Python Machine Learning을 이용한 Lotto 번호 생성 프로그램
이번에 파이썬을 이용하여 Lotto 번호 6자리를 뽑아내는 프로그램을 만들어 보았다 … 중 XGBoost 알고리즘을 통해 다음 차수의 번호 합을 예측한다.
Source: superhky.tistory.com
Date Published: 8/16/2022
View: 5594
주제와 관련된 이미지 로또 번호 예측 알고리즘
주제와 관련된 더 많은 사진을 참조하십시오 딥러닝이 예측한 로또 번호는 당첨이 잘될까?. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 로또 번호 예측 알고리즘
- Author: 조코딩 JoCoding
- Views: 조회수 559,995회
- Likes: 좋아요 7,962개
- Date Published: 2021. 6. 19.
- Video Url link: https://www.youtube.com/watch?v=3G3zExNItj0
딥러닝이 예측한 로또 번호는 당첨이 잘될까? 검증 해봤습니다
로또 번호 데이터를 RNN 계열의 딥러닝 알고리즘 LSTM으로 학습시키고 다음 회차를 예측해보면 당첨이 잘되는지 검증을 해보고 직접 나온 번호로 로또를 구매해보는 영상입니다. 결론적으로 로또는 독립시행이라 예측 모델이 의미 없지만 유료 로또 서비스 쓸바에는 공짜로 이거 쓰세요!
딥러닝 로또 예측 사이트: https://animalface.site/lotto
완성 코드: https://github.com/youtube-jocoding/lotto-deeplearning
동행복권: https://dhlottery.co.kr/
목차
00:00 미리보기
00:09 인트로
00:22 수 많은 유료 로또 번호 예측 사이트
01:04 강의 목차
01:29 경고
01:45 참고 문헌
02:04 인공지능, 딥러닝 개념
03:08 딥러닝 로또 번호 예측 소개
03:43 로또 번호 데이터 수집
07:22 데이터 전처리
07:26 데이터의 종류 – 수치형, 범주형
08:14 원핫인코딩
09:33 Colab 개발 환경 소개
09:47 완성 코드 github
10:04 Colab 연결 및 데이터 불러오기
10:29 라이브러리 설치 및 데이터 전처리 준비
11:44 모델 구성 및 학습
11:50 LSTM 설명
12:27 지도학습 설명
13:41 코드로 학습 수행
14:30 학습된 모델 성능 검증
16:15 여러개의 로또 예측 번호 생성 방법
18:29 모델 평가 방법
19:05 모델 평가
20:38 실제 로또 구매 결과
22:10 딥러닝 로또 번호 예측 사이트 무료 공개
22:49 구독, 좋아요, 알림설정 부탁드립니다
23:01 아웃트로
—
[참고 문헌]김태영님 블로그: https://tykimos.github.io/2020/01/25/keras_lstm_lotto_v895
김태영님 유튜브 채널: https://youtube.com/channel/UCG9LWKvg0zADFS_JvVktILg
인공지능 퀀트 코리아 https://www.facebook.com/groups/aiquantkorea/
조코딩 인공지능 딥러닝 로또 번호 예측
조코딩 인공지능 딥러닝 로또 번호 예측
딥러닝(LSTM)을 활용하여 로또 번호를 예측합니다.
원리는 아래 유튜브 영상을 참고해주세요!
* 로또는 독립시행 확률이라 예측 모델이 의미 없지만 유료 로또 서비스 쓸바에는 공짜로 이거 쓰세요
로또 당첨번호 예측 이론/알고리즘 모음 (1) – 고정수, 123456, 화성인
1. 고정수 이론 – 아날로그 기계로 추첨하니 분석 가능하다.
사실 로또 1등 당첨 번호가 가장 정확하게 랜덤으로 뽑힐려면 디지털 기계로 추첨을 해야 되는데, 그러나 많은 사람들이 뭔가 눈으로 확인 되는 것을 원하기 때문에 이 시대에도 로또 1등 추첨은 아날로그 기계로 하고 있다. 이것 때문에 당첨 번호 분석이 가능하다는 이론이다.
카오스 이론이 있기 때문이다. 그것이 혼돈이나 무질서처럼 보이더라도 사실은 규칙성이나 질서가 존재한다는 것이고 그 규칙성이나 질서를 찾아낸다면, 당첨번호도 찾아낼 수 있다는 것이다. 카오스 이론의 대전제는 혼돈과 무질서인데, 로또 1등 당첨 기계를 무질서로 간주하는 것이고, 랜덤으로 바람이 계속 불고 랜덤으로 빨려 들어가기 때문에, 그 기계속에도 규칙이 있다고 믿고 분석하는 것이다.
이와 관련되서 가장 대표적 사례는 가장 유명한 4~7회차 때 40, 42 4주 연속 고정 수 출현 사건이다. 당시 폐쇄형 로또 카페에 어떤 분이 4회차 5회차에 2주 연속으로 40, 42가 나오는 것을 보고 “이건 분명 무규칙 속에 규칙이 이뤄지고 있다. 이 현상이 언제 바뀔지 모르겠으나 단기간 내에는 분명 효과가 있을 것“이라고 글을 남기고 6회차 때 40, 42를 기본수로 해서 대출 받아서 랜덤으로 1000만원치를 샀던 분이 있었다. 도박으로 치면 “기회다!” 라고 생각하고 올인 한 것이다. 카페 사람들 모두 수학적 근거를 들먹이며 말도 안되는 소리라고 그랬었다. 그런데.
결과는, 6회차 때 또 40, 42가 나왔다는 것이다. 그리고 그 분은 다음 카페를 탈퇴해 버렸다고 한다. (당시 6회차 1등 당첨금 세전 65억, 2등 당첨금 세전 1억 9천만원)
당시만 해도 1등 되면 이러 저러한 이유 때문에, 당첨 사실을 숨기고 싶어 했었다.
참고로,
로또 4회차 1등 당첨 번호 14, 27, 30, 31, 40, 42 +2
로또 5회차 1등 당첨 번호 16, 24, 29, 40, 41, 42 +3
로또 6회차 1등 당첨 번호 14, 15, 26, 27, 40, 42 +34
로또 7회차 1등 당첨 번호 2, 9, 16, 25, 26, 40 + 42
2. 1-2-3-4-5-6 이론
지금까지 로또 1등 당첨 번호 중 1-2-3-4-5-6은 나온 적이 없다는 이론이다. 즉, 극단적인 조합이 나오지 않는다는 이론이다.
그러니까 그 ‘잘’ 나오지 않는 그 날만 피해서 투자하면 훨씬 적은 돈으로 1등 확률을 높일 수 있다는 이론이다.
대표적으로, 6연번은 잘 안나온다, (30-31-32-33-34-35-36 등)
6번호 연속 행렬 조합은 잘 안나온다, (6-12-18-24-30-36, 5-10-15-20-25-30 등)
특정 번호대에서만 6번호가 모두 나오는 조합은 잘 안나온다, (21-23-24-27-28-29 등)
첫수가 30 이상인 경우는 잘 안나온다 (30-32-34-35-39-41 등)
끝수가 15 이하인 경우는 잘 안나온다 (1-3-4-9-12-14 등)
6개의 모든 번호가 홀수이거나 짝수인 경우는 잘 안나온다 (3-13-17-21-35-39 등)
1-2-3-4-5-6 이나 아니면 모든 번호가 홀수인 번호 조합 등의 극단적인 번호를 제외시키고 평균적인 모든 조합을 옵션에 따라 약 1천만원~8천만원 정도만으로 평균적인 조합을 다 살 수 있다고 한다.
쉽게 말해, 1등 확률이 800만분의 1이라 했을 때 , 1등 당첨 확률이 100%가 되려면 80억치를 사야 한다. 그런데 그 80억치의 조합엔 1-2-3-4-5-6도 있고 23-24-25-26-27-28 의 조합도 있다.
그런데 이 이론을 적용해서 그런 조합들을 모조리 다 빼면 80억치를 사지 않고 1천만원치~8천만원치 정도로 100%에 가까운 확률을 얻을 수 있다는 주장이다.
3. 화성인바이러스 이론
로또 1등 당첨자 최초로 TV에 얼굴을 공개하고(2009년 6월 2일 화성인바이러스 10회) 본인의 비법을 전국적으로 공개하신 박삼수씨의 로또 분석 이론이다.
(1) 일, 월, 화, 수, 목, 금, 토 매일 5게임 이상,
한번 구입시 한 용지에 5천원 Full로 ‘자동’으로 구입을 한다.
(2) 5게임 중에 3게임 이상 3개의 연속된 번호가 징검다리 형식으로 배열되어 있으면, 그 번호가 나올 확률이 높다.
이렇게
7,25,40
5,30,42
7,25,40
2,15,30
7,25,40
이렇게 7,25,40이 징검다리 형식으로 3개 나열되어 있다. 그렇다면 저 3개의 번호 모두 또는 그 중 하나가 나올 확률이 높다.
(3) 같은 번호가 3개 이상 대각선으로 연결되어 있으면 그 번호는 나올 확률이 높다.
이렇게
X,7,X,X,X,X
X,X,7,X,X,X
X,X,X,7,X,X
X,X,X,X,X,X
X,X,X,X,X,X
(4) 같은 번호 3개가 삼각형으로 연결되어 있으면 그 번호가 나올 확률이 높고, 또한 그 주변에 a수도 눈여겨 봐야 한다.
이렇게
X,X,7,a,X,X
X,X,a,7,X,X
X,X,7,a,X,X
X,X,X,X,X,X
X,X,X,X,X,X
(5) 1게임에서 3연번이 나오면 그 번호 모두 또는 그 중 하나가 나올 확률이 높다.
1,2,3이나 10,11,12 나 15,16,17과 같은 수.
(6) 자동 5게임 중에서 제일 첫번째 시작 수가 10번 이상이면 그 번호는 나올 확률이 높다.
이렇게
1,x,x,x,x,x
8,x,x,x,x,x
5,x,x,x,x,x
14,x,x,x,x,x
2,x,x,x,x,x
그렇다면 14가 나올 확률이 높다.
(7) 자동 5게임 중에서 제일 끝수가 35번 이하이면 그 번호는 나올 확률이 높다.
x,x,x,x,x,39
x,x,x,x,x,44
x,x,x,x,x,41
x,x,x,x,x,43
x,x,x,x,x,34
그렇다면 34가 나올 확률이 높다.
이 정도가 화성인 바이러스 방송에서 공개한 내용들이다. 마치 ‘오늘의 운세’처럼 매일매일 자동으로 자신이 직접 구입을 하고, 그 구입한 종이를 토대로 해서 1등 당첨수를 추려낸 후 다양한 조합을 통해, 당첨번호를 마킹한다는 내용이다.
위 주장들에는 반론이 많기는 하지만, 주장에는 나름 감성적인 설득력이 있다.
통계에 근거한 Lotto번호 생성기
■ 수학적 알고리즘은 특정 기준에 의한 알고리즘을 통해 Lotto번호를 생성합니다.
■ 양자역학은 세계에서 가장 효율적인 양자난수 생성기(EYL 기술, 보스톤 매스챌린지 최고상)를 통해 예측 불가능한 Lotto번호를 생성합니다.
■ 마지막으로 통계학에 근거하는 번호는 기존에 나온 모든 Lotto번호를 분석하여 가장 당첨확률이 높은 번호를 제공합니다.
업데이트 날짜 2019. 8. 3.
매크로 제작 커뮤니티 – 업무 자동화 (AI RPA 매크로)
안녕하세요. 엔지엠소프트웨어입니다. 여러분들도 일정 금액을 받고 매주 로또 당첨 번호를 보내주는 광고를 접한 경험이 있을겁니다. 사실 저처럼 제조 환경에서 수율을 개선하고, 통계쪽 개발하는 개발자는 로또 당첨 번호를 예측한다는게 얼마나 말이 안되는것인지 잘 알고 있을겁니다. 하지만~ 많은 사람들이 유료로 결제해서 이런 서비스를 이용하고 있다는걸 알게 되었습니다. 물론, 이런 업체들이 내세우는 알고리즘 또는 인공지능 기술이 어떤것인지는 모르겠지만 로또와 같은 인과 관계가 없는 연속된 데이타를 예측한다는건 불가능합니다. 로또 번호와 같이 독립적 사건은 언제나 한 번호가 뽑힐 확률은 45/1이기 때문입니다. 저번주에 나온 번호와 이번주에 나올 번호와는 그 어떠한 인과 관계가 존재하지 않는다는 뜻입니다. 만약, 통계적으로 예측이 가능하다면 세계의 모든 수학자들은 이미 부자가 되어 있어야 합니다. 실상은 그렇지 않죠^^;
※ 로또 보다는 카지노에 가서 덱(보통 6덱 사용)에서 빠진 카드를 계산하는게 돈 버는 확률은 더 높습니다. 카드 카운팅이 불법은 아니기 때문이죠. 머리가 좋아야 가능한 부분이다보니 누구나 다 적용되는건 아닙니다. 6덱에서 카드 카운팅 후 확률을 계산해서 베팅해야 하기 때문에 암기와 암산 능력이 탁월한 또는 훈련된 사람만 가능합니다. CRM이라는 카지노 운영 시스템을 개발 및 관리한 경험 때문에 알고 있는 내용입니다-_-;
유튜브에 검색해보면 수많은 자료를 볼 수 있을겁니다. 요즘은 파이썬과 텐서플로우로 인해 많은 개발자가 빠르고 쉽게 머신 러닝을 테스트하고 평가해볼 수 있는 환경이 되었습니다. 엔지엠소프트웨어에서도 이런 딥러닝으로 학습한 모델을 이용하여 그동안 매크로로 할 수 없었던 많은 것들을 처리할 수 있게 되었습니다. 요즘은 RPA라는 용어로 자동화를 진행하고 있습니다. 이 내용은 재미로만 봐주시고, 문제점에 대해서는 언제든지 피드백을 주시면 수정하도록 하겠습니다.
※ 이 글은 유튜버 조코딩님의 강좌를 참고했습니다.
딥러닝을 하기 위해서는 학습할 데이타셋(그동안 1등 당첨된 번호들)이 필요하고, 이 데이타셋을 어떻게 학습시킬건지 설정해야 합니다. 그리고, 데이타셋을 기반으로 학습된 모델을 이용해서 다음 회차에 어떤 번호가 1등으로 당첨될지 예측하는 순서로 진행됩니다. 자~ 첫번째로 해야할 일은 그동안 누적된 1등 당첨 번호를 알아내야 합니다. 다행스럽게도 로또645에서는 그동안 1등 번호들을 정리해서 제공하고 있습니다. 아래 링크를 클릭하여 로또645 페이지로 이동하세요.
[ 로또645 ]마지막으로 스크롤을 내려보면 회차별로 엑셀 파일을 다운로드 받을 수 있습니다. 아래 그림과같이 1부터 마지막 회차까지 선택하고, “엑셀다운로드”를 클릭하세요.
다운로드 받은 엑셀 파일을 열어보면 1회차부터 선택한 마지막 회차까지 모든 정보가 정리되어 있는걸 확인할 수 있습니다.
이 데이타를 직접 사용할수는 없습니다. 프로그래밍으로 데이타를 정리하고 파싱해서 사용해도 되지만, 이런 코딩까지 작성하려면 많은 시간과 노력이 필요합니다. 데이타 정제에 대한 내용이 아니므로 이 부분은 수동으로 진행해야 합니다. 엑셀에서 불필요한 데이타를 모두 삭제하고 CSV로 만들어서 첨부해두었으니 여러분들은 첨부된 파일을 다운로드해서 테스트 해보세요. “로또645.csv” 파일이 다운로드 되었으면 Visual Stduio Code에서 열어보세요. 쉼표(Comma)로 구분된 데이타셋을 확인할 수 있습니다.
데이타셋을 보면 당첨 금액쪽에 쉼표 사이에 공백이 있는걸 알 수 있습니다. 이 공백들도 모두 제거해줘야 합니다. 아래 동영상처럼 공백을 하나 선택하고 Ctrl+H를 눌러서 모두 바꾸기를 클릭하세요. 여러분들도 모든 공백이 사라졌을겁니다. 만약, 단축키로 동작하지 않으면 메뉴의 편집 > 바꾸기를 이용하셔도 됩니다.
범주형 데이타를 딥러닝에서 이용하기 위해 원핫인코딩으로 변형해서 진행해야 합니다. 원핫인코딩은 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스에는 0을 부여하는 단어의 벡터 표현 방식입니다. 이렇게 표현된 벡터를 원핫 벡터(One Hot Vector)라고 합니다. 사실 어떤 데이타를 어떻게 전처리할지는 분석하려는 대상에 따라 달라질 수 있다는걸 알아야 합니다. 우리가 분석할 데이타는 야구에서 보면 출루율, 타율, 방어율과 같은 수치형 데이타와 지역, 성씨, 정세등과 같은 범주형 데이타로 나눌 수 있습니다. 로또 당첨 번호는 숫자지만 연속된 인과 관계가 없으므로 매번 출현하는 번호는 범주형으로 분류할 수 있습니다. Visual Studio Code를 실행하고, “lotto645.py” 파일을 추가합니다.
첨부되어 있는 “로또645.csv” 파일을 워크스페이스의 dataset에 복사해줍니다.
아래 코드를 붙여넣기하고, 저장(Ctrl+S) 후 실행(F5) 해보세요.
※ 출처는 [ 조코딩님 깃헙 ]입니다. 보통은 내용을 보고 직접 타이핑하지만… 이건 내용이 길어서 복붙 후 로컬 환경에서 동작하도록 약간 수정했습니다.
import os os.add_dll_directory(‘C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.0\\bin’) import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras import models import matplotlib.pyplot as plt from matplotlib.ticker import MaxNLocator rows = np.loadtxt(“./dataset/로또645.csv”, delimiter=”,”) row_count = len(rows) # 당첨번호를 원핫인코딩벡터(ohbin)으로 변환 def numbers2ohbin(numbers): ohbin = np.zeros(45) #45개의 빈 칸을 만듬 for i in range(6): #여섯개의 당첨번호에 대해서 반복함 ohbin[int(numbers[i])-1] = 1 #로또번호가 1부터 시작하지만 벡터의 인덱스 시작은 0부터 시작하므로 1을 뺌 return ohbin # 원핫인코딩벡터(ohbin)를 번호로 변환 def ohbin2numbers(ohbin): numbers = [] for i in range(len(ohbin)): if ohbin[i] == 1.0: # 1.0으로 설정되어 있으면 해당 번호를 반환값에 추가한다. numbers.append(i+1) return numbers numbers = rows[:, 1:7] ohbins = list(map(numbers2ohbin, numbers)) x_samples = ohbins[0:row_count-1] y_samples = ohbins[1:row_count] #원핫인코딩으로 표시 print(“ohbins”) print(“X[0]: ” + str(x_samples[0])) print(“Y[0]: ” + str(y_samples[0])) #번호로 표시 print(“numbers”) print(“X[0]: ” + str(ohbin2numbers(x_samples[0]))) print(“Y[0]: ” + str(ohbin2numbers(y_samples[0]))) train_idx = (0, 800) val_idx = (801, 900) test_idx = (901, len(x_samples)) print(“train: {0}, val: {1}, test: {2}”.format(train_idx, val_idx, test_idx)) # 모델을 정의합니다. model = keras.Sequential([ keras.layers.LSTM(128, batch_input_shape=(1, 1, 45), return_sequences=False, stateful=True), keras.layers.Dense(45, activation=’sigmoid’) ]) # 모델을 컴파일합니다. model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’]) # 매 에포크마다 훈련과 검증의 손실 및 정확도를 기록하기 위한 변수 train_loss = [] train_acc = [] val_loss = [] val_acc = [] # 최대 100번 에포크까지 수행 for epoch in range(100): model.reset_states() # 중요! 매 에포크마다 1회부터 다시 훈련하므로 상태 초기화 필요 batch_train_loss = [] batch_train_acc = [] for i in range(train_idx[0], train_idx[1]): xs = x_samples[i].reshape(1, 1, 45) ys = y_samples[i].reshape(1, 45) loss, acc = model.train_on_batch(xs, ys) #배치만큼 모델에 학습시킴 batch_train_loss.append(loss) batch_train_acc.append(acc) train_loss.append(np.mean(batch_train_loss)) train_acc.append(np.mean(batch_train_acc)) batch_val_loss = [] batch_val_acc = [] for i in range(val_idx[0], val_idx[1]): xs = x_samples[i].reshape(1, 1, 45) ys = y_samples[i].reshape(1, 45) loss, acc = model.test_on_batch(xs, ys) #배치만큼 모델에 입력하여 나온 답을 정답과 비교함 batch_val_loss.append(loss) batch_val_acc.append(acc) val_loss.append(np.mean(batch_val_loss)) val_acc.append(np.mean(batch_val_acc)) print(‘epoch {0:4d} train acc {1:0.3f} loss {2:0.3f} val acc {3:0.3f} loss {4:0.3f}’.format(epoch, np.mean(batch_train_acc), np.mean(batch_train_loss), np.mean(batch_val_acc), np.mean(batch_val_loss))) fig, loss_ax = plt.subplots() acc_ax = loss_ax.twinx() loss_ax.plot(train_loss, ‘y’, label=’train loss’) loss_ax.plot(val_loss, ‘r’, label=’val loss’) acc_ax.plot(train_acc, ‘b’, label=’train acc’) acc_ax.plot(val_acc, ‘g’, label=’val acc’) loss_ax.set_xlabel(‘epoch’) loss_ax.set_ylabel(‘loss’) acc_ax.set_ylabel(‘accuray’) loss_ax.legend(loc=’upper left’) acc_ax.legend(loc=’lower left’) plt.show() # 88회부터 지금까지 1등부터 5등까지 상금의 평균낸다. mean_prize = [ np.mean(rows[87:, 8]), np.mean(rows[87:, 9]), np.mean(rows[87:, 10]), np.mean(rows[87:, 11]), np.mean(rows[87:, 12])] print(mean_prize) # 등수와 상금을 반환함 # 순위에 오르지 못한 경우에는 등수가 0으로 반환함 def calc_reward(true_numbers, true_bonus, pred_numbers): count = 0 for ps in pred_numbers: if ps in true_numbers: count += 1 if count == 6: return 0, mean_prize[0] elif count == 5 and true_bonus in pred_numbers: return 1, mean_prize[1] elif count == 5: return 2, mean_prize[2] elif count == 4: return 3, mean_prize[3] elif count == 3: return 4, mean_prize[4] return 5, 0 def gen_numbers_from_probability(nums_prob): ball_box = [] for n in range(45): ball_count = int(nums_prob[n] * 100 + 1) ball = np.full((ball_count), n+1) #1부터 시작 ball_box += list(ball) selected_balls = [] while True: if len(selected_balls) == 6: break ball_index = np.random.randint(len(ball_box), size=1)[0] ball = ball_box[ball_index] if ball not in selected_balls: selected_balls.append(ball) return selected_balls train_total_reward = [] train_total_grade = np.zeros(6, dtype=int) val_total_reward = [] val_total_grade = np.zeros(6, dtype=int) test_total_reward = [] test_total_grade = np.zeros(6, dtype=int) model.reset_states() print(‘[No. ] 1st 2nd 3rd 4th 5th 6th Rewards’) for i in range(len(x_samples)): xs = x_samples[i].reshape(1, 1, 45) ys_pred = model.predict_on_batch(xs) # 모델의 출력값을 얻음 sum_reward = 0 sum_grade = np.zeros(6, dtype=int) # 6등까지 변수 for n in range(10): # 10판 수행 numbers = gen_numbers_from_probability(ys_pred[0]) #i회차 입력 후 나온 출력을 i+1회차와 비교함 grade, reward = calc_reward(rows[i+1,1:7], rows[i+1,7], numbers) sum_reward += reward sum_grade[grade] += 1 if i >= train_idx[0] and i < train_idx[1]: train_total_grade[grade] += 1 elif i >= val_idx[0] and i < val_idx[1]: val_total_grade[grade] += 1 elif i >= test_idx[0] and i < test_idx[1]: val_total_grade[grade] += 1 if i >= train_idx[0] and i < train_idx[1]: train_total_reward.append(sum_reward) elif i >= val_idx[0] and i < val_idx[1]: val_total_reward.append(sum_reward) elif i >= test_idx[0] and i < test_idx[1]: test_total_reward.append(sum_reward) print('[{0:4d}] {1:3d} {2:3d} {3:3d} {4:3d} {5:3d} {6:3d} {7:15,d}'.format(i+1, sum_grade[0], sum_grade[1], sum_grade[2], sum_grade[3], sum_grade[4], sum_grade[5], int(sum_reward))) print('Total') print('==========') print('Train {0:5d} {1:5d} {2:5d} {3:5d} {4:5d} {5:5d} {6:15,d}'.format(train_total_grade[0], train_total_grade[1], train_total_grade[2], train_total_grade[3], train_total_grade[4], train_total_grade[5], int(sum(train_total_reward)))) print('Val {0:5d} {1:5d} {2:5d} {3:5d} {4:5d} {5:5d} {6:15,d}'.format(val_total_grade[0], val_total_grade[1], val_total_grade[2], val_total_grade[3], val_total_grade[4], val_total_grade[5], int(sum(val_total_reward)))) print('Test {0:5d} {1:5d} {2:5d} {3:5d} {4:5d} {5:5d} {6:15,d}'.format(test_total_grade[0], test_total_grade[1], test_total_grade[2], test_total_grade[3], test_total_grade[4], test_total_grade[5], int(sum(test_total_reward)))) print('==========') total_reward = train_total_reward + val_total_reward + test_total_reward plt.plot(total_reward) plt.ylabel('rewards') plt.show() ax = plt.figure().gca() ax.xaxis.set_major_locator(MaxNLocator(integer=True)) rewards = [sum(train_total_reward), sum(val_total_reward), sum(test_total_reward)] class_color=['green', 'blue', 'red'] plt.bar(['train', 'val', 'test'], rewards, color=class_color) plt.ylabel('rewards') plt.show() # 최대 100번 에포크까지 수행 for epoch in range(100): model.reset_states() # 중요! 매 에포크마다 1회부터 다시 훈련하므로 상태 초기화 필요 for i in range(len(x_samples)): xs = x_samples[i].reshape(1, 1, 45) ys = y_samples[i].reshape(1, 45) loss, acc = model.train_on_batch(xs, ys) #배치만큼 모델에 학습시킴 batch_train_loss.append(loss) batch_train_acc.append(acc) train_loss.append(np.mean(batch_train_loss)) train_acc.append(np.mean(batch_train_acc)) print('epoch {0:4d} train acc {1:0.3f} loss {2:0.3f}'.format(epoch, np.mean(batch_train_acc), np.mean(batch_train_loss))) # 마지막 회차까지 학습한 모델로 다음 회차 추론 print('receive numbers') xs = x_samples[-1].reshape(1, 1, 45) ys_pred = model.predict_on_batch(xs) list_numbers = [] for n in range(10): numbers = gen_numbers_from_probability(ys_pred[0]) numbers.sort() print('{0} : {1}'.format(n, numbers)) list_numbers.append(numbers) 훈련셋(train loss)에 대해서는 에포크¹가 늘어날수록 정확도가 올라가고 손실은 떨어지는것을 확인할 수 있습니다. 하지만, 검증셋은 일반적인 학습 모델과는 다른 양상을 보여줍니다. 1) 에포크란? CNN과 같은 딥러닝 모델을 훈련시키다보면 꼭 만나게 되는 것이 배치(batch), 에포크(epoch)라는 단어입니다. 이 두 단어가 무엇을 지칭하는 것인지를 알아야 모델을 제대로 훈련시킬 수 있습니다. 먼저 batch의 사전적 의미에는 "집단, 무리, 한 회분, (일괄 처리를 위해) 함께 묶다" 등이 있습니다. 딥러닝에서 배치는 모델의 가중치를 한번 업데이트 시킬 때 사용되는 샘플들의 묶음을 의미합니다. 만약에 총 1000개의 훈련 샘플이 있는데, 배치 사이즈가 20이라면 20개의 샘플 단위마다 모델의 가중치를 한번씩 업데이트 시킵니다. 그러니까 총 50번(=1000/20) 가중치가 업데이트 되겠죠. 하나의 데이터셋을 총 50개의 배치로 나눠서 훈련을 진행한겁니다. epoch의 사전적 의미는 "시대(중요한 사건, 변화들이 일어난)"입니다. 딥러닝에서 에포크는 학습의 횟수를 의미합니다. 만약 에포크가 10이고 배치 사이즈가 20이면, 가중치를 50번 업데이트하는 것을 총 10번 반복합니다. 각 데이터 샘플이 총 10번씩 사용되는 것입니다. 결과적으로 가중치가 총 500번 업데이트 됩니다. 학습 데이타로 훈련한 구간이 아닌 800회부터는 당첨이 안되는걸 알 수 있습니다. 다른 그래프로 확인해봐도 동일한 결과가 나오는 것을 알 수 있습니다. 딥러닝으로 학습한 후 예측한 결과 값은 아래와 같습니다. 오늘이 토요일이라서 저 결과로 로또를 사보겠습니다-_-; 사실 로또는 운입니다. 기대하면 안됩니다. 반도체 공정쪽에서 수율을 증가시키기 위한 여러가지 활동들이 있습니다. 장비의 상태나 날씨, PM, 재료, RMS, 시간, 두께, 습도등등... 많은 변수를 y값으로 통계적으로 계산합니다. 그래도~ 예측이 어렵습니다. 이전 Raw data가 상관 관계를 가지고 있을것이라고 생각하고 여러가지 방법으로 전처리를 한 후 가우스 분석, 변량 분석, 아노바 분석, 페르마나 프랙탈, 회귀, 분산분포등등... 이런 분석에는 다양한 외부 환경 요인도 가중치를 계산해서 넣어줘야 합니다. 다시 로또 당첨 번호 예측을 하려면 단순히 1등 번호만으로는 불가능하다는걸 여러분들도 이제 알게 되었을겁니다. 여기서, 로또 번호를 추첨할 당시에 기상 상황, 스테이지의 컨디션, 추첨 기계의 노후나 정비 상태, 건물의 떨림 척도를 계측할 수 있는 진동 스펙트럼등등... 수많은 변수를 대입해서 처리하면 될수도 있지 않을까 하는 생각을 해봅니다. 1번 공이 나올때와 100프로 일치하는 시공간적 환경을 만들어준다면 똑같이 1이 나오지 않을까요? 하지만, 저런 환경을 만든다는것 자체가 불가능하기 때문에 즐거운 상상으로만 만족하시길 바랍니다^^ 개발자에게 후원하기 추천, 구독, 홍보 꼭~ 부탁드립니다. 여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~ 감사합니다~
Python Machine Learning을 이용한 Lotto 번호 생성 프로그램 – (1)
반응형
이번에 파이썬을 이용하여 Lotto 번호 6자리를 뽑아내는 프로그램을 만들어 보았다.
많은 사람들이 Lotto 번호를 만드는 프로그램을 만들었으며 대부분은 random() 함수를 이용하여 난수를 생성한다.
그러나 여기서는 Machine Learning 중 XGBoost 알고리즘을 이용하고 그동안의 Lotto 번호 통계를 바탕으로 6개의 숫자를 뽑는 프로그램을 구현해 보았다.
Lotto 는 45개의 숫자 중 순서에 상관없이 6개의 숫자가 모두 맞아야 하기 때문에 그 확률은 1/8,145,060 이 된다.
또한, 이전 차수까지 많이 나온 숫자가 앞으로도 많이 나온다거나 아니면 앞으로는 적게 나온다거나 하지 않으므로 Lotto 1등 번호를 예측하기란 사실상 불가하다고 볼 수 있다. (어떻게 보면 다른 사람들이 많이들 했던 random() 함수를 이용한 난수 생성이 더 확률이 높을지도 모르겠다.)
그러나 쉽게 번호를 추출하기 보다는 Machine Learning도 이용하고 무언가 분석을 통해 찾은 것 같은 뿌듯함(?)이 있을 것 같아 해 보게 되었다.
그리고 무엇보다 개인의 Python 공부가 목적이고 이렇게 무언가를 만들어 보는 것이 가장 큰 도움이 되기에 해보게 되었다.
그렇기 때문에 앞으로 나오는 내용에 대해서는 그냥 재미로 봐주었으면 한다.
그럼 본격적으로 설명해 보도록 하겠다.
먼저 프로그램은 아래의 그림과 같은 구성으로 되어 있다.
(Lotto 번호 추출 프로그램 구성 )
Lotto 당첨번호를 다운로드하여서 각 1등 당첨 번호 6개의 합들을 구한다. 그리고 Machine Learning 중 XGBoost 알고리즘을 통해 다음 차수의 번호 합을 예측한다.
예측된 합을 구성하는 6개의 번호 조합을 만드는 것은 다운로드한 데이터에서 가장 많이 나온 숫자들을 바탕으로 조합을 만들고 또한, 가장 적게 나온 숫자를 바탕으로 조합을 만든다.
가장 많이 나온 숫자 순으로 조합을 만드는 이유는 아무래도 또 나오지 않을까 하는 기대 심리에서 한 것이고 가장 적게 나온 순으로 조합을 만드는 이유는 이제까지 안 나왔으니 이제는 나올 거라는 기대 심리에서 하게 되었다. 그 외에 이유는 없다.
[1. 로또 당첨번호 다운로드](Lotto 데이터 다운로드 코드 )
위의 코드는 인터넷 상에서 구한 것으로 이 코드를 통해 Lotto 사이트에서 당첨 번호와 당첨 금액 등이 포함된 데이터를 다운로드할 수 있다.
위 코드의 마지막에 보면 “940”는940 차수까지의 데이터를 다운로드하는 것을 의미하며 다운로드한 데이터는 “lotto_df”에 저장한다.
저장된 데이터는 “lotto_df.to_csv(“lotto_940.csv”, index=False)” 코드를 통해 “lotto_940”이란 이름의 CSV파일로 저장할 수 있다.
“Index=False” 는 index를 추가하지 않고 저장한다는 의미이다.
다음의 코드는 google drive에 저장한 Lotto 데이터를 읽어온다.
전체 작업을 google colab에서 했고 사이트에서 다운로드하여로 저장한 파일을 google drive에 넣어두고 필요할 때 불러와서 사용하면 편리하다.
(Google Drive 에 있는 파일을 여는 코드 )
위 코드를 실행하면 Lotto의 데이터는 아래처럼 구성되어 있다.
(Lotto 데이터 )
[2. 각 1등 당첨번호의 합 구하기]각 1등이 된 6개 번호의 합은 위의 그림에서 Num1 ~ Num6까지를 더하면 되며 아래의 코드와 같다.
(1 등 번호들 간의 합을 구하는 코드 )
각각 더해진 값에서 index를 빼고 실제 값만을 “. values”기능을 통해 뽑아서 “values”에 저장하고 결과를 보면 다음과 같다.
( 각 1 등 번호들의 합 )
[3. XGBoost를 통한 다음 차수의 합 예측하기]다음의 코드를 통해 XGBoost를 이용하여 다음 차수의 1등 번호 6개 숫자의 합을 예측한다.
XGBoost를 적용한 이유는 이전에 주식 종가 예측 프로그램을 만들 때에 이용했던 알고리즘이고 무엇보다 유일하게 알고 있는 것이며 바로 적용할 수 있기 때문이었다.
실제로 여기서도 거의 그대로 적용하였다.
(XGBoost 를 이용한 다음 차수의 1 등 숫자 합을 구하는 코드 )
XGBoost를 이용하는 코드에 대한 설명은 이전 글인 “XGBoost를 이용한 주식 예측”을 참고하고 여기서는 다루지 않겠다.
이전 주식 종가 예측에서는 XGBoost의 파라미터를 최적화하는 부분이 없었는데, 이번에는 “GridSearchCV”를 통해 파라미터 최적화 코드를 추가하였다.
이러한 부분은 인터넷을 통해 참고하여 넣었으며 내용을 잘 모르기 때문에 설명을 할 수는 없다.
(실제 최적화가 되었는지도 미지수다.)
다만, Lotto 데이터에서 가장 최신 날짜의 데이터를 삭제하고 예측을 수행하여 삭제했던 최신 날짜의 데이터와 거의 동일하게 될 때까지 변수를 수정하려는 노력은 하였다.
(쓸데없는 짓이지만 유일하게 해 볼 수 있는 일이기도 했다.)
이렇게 해서 예측된 합은142.719이며 결과의 소수점이 있는 경우에 반올림을 통해 정수로 만들어 주면 143이 된다.
1부는 여기서 끝내고 2부에서는 예측된 합이 되기 위한 6개 숫자의 조합을 찾도록 하겠다.
반응형
키워드에 대한 정보 로또 번호 예측 알고리즘
다음은 Bing에서 로또 번호 예측 알고리즘 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 딥러닝이 예측한 로또 번호는 당첨이 잘될까?
- 로또
- 인공지능
- 딥러닝
- 예측
딥러닝이 #예측한 #로또 #번호는 #당첨이 #잘될까?
YouTube에서 로또 번호 예측 알고리즘 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 딥러닝이 예측한 로또 번호는 당첨이 잘될까? | 로또 번호 예측 알고리즘, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.