見出し画像

⚫数字選択式宝くじAI予想サイト✨Pythonによる機械学習で購入数字を公開▶ナンバーズ3&ナンバーズ4&ビンゴ5&ミニロト&ロト6&ロト7🎊当選確率はnoteでトップクラス✨

👑だるま3兄弟+ちび太郎+ちび姫で運営中
▶両目入りだるま:魂が宿りあなたに恩返し

🟡『金』だるま
▶金運最強の長男:全てのビッグデータから解析
🔴『赤』だるま
▶人生幸福の次男:直近ビッグデータから解析
⚫『黒』だるま
▶事業繁栄の三男:曜日,週,セット球を分別後解析
🟠『桃色女子』ちび姫
▶全てビッグデータ+曜日,週,セット球から解析
🔵『水色男子』ちび太郎
▶全てビッグデータ+直近データから解析

※3兄弟+ちび太郎+ちび姫の予想は全て同じにはなりません。


🔴noteでトップクラスの数字選択宝くじのAI(人工知能)予想サイトです
🔴プログラミング言語Pythonによる機械学習で数字を5点公開
🔴的中率が高く多くの方が当選されています。
🔴幸運のエンジェルナンバーと呼ばれるゾロ目販売させて頂いております
🔴当選に対してのコメントを多く寄せられ心より感謝申し上げます。

※返信はしていませんのでご了承ください。


👑直近5か月成績表※当選のみ記載

🎊5月当選実績
▶ご購入者様当選おめでとうございます🎉

👑05/01(水)3️⃣B5️⃣4    🎊配当+12,200円+24,000円✨

🎊4月当選実績
▶ご購入者様当選おめでとうございます🎉

👑04/25(木)6️⃣4      🎊配当+9,700円✨
👑04/19(金)7️⃣4      🎊配当+10,900円✨
👑04/15(月)3️⃣S      🎊配当+56,300円✨
👑04/12(金)3️⃣S    
  🎊配当+56,300円✨
👑04/10(水)4️⃣B      🎊配当+34,800円✨
👑04/09(火)
*️⃣3      🎊配当+9,400円✨
👑04/03(水)4️⃣S5️⃣5    🎊配当+618,700円✨+1,700円 ✨
👑04/01(月)6️⃣4      🎊配当+5,300円 ✨

🎊3月当選実績
▶ご購入者様当選おめでとうございます🎉

👑03/26(火)3️⃣B*️⃣4     🎊配当+14,100円 ✨+1,000円 ✨
👑03/25(月)6️⃣5   
    🎊配当+1,000円✨
👑03/20(水)3️⃣B5️⃣5     🎊配当+16,200円✨+1,800円 ✨
👑03/19(火)4️⃣S       🎊配当+873,500円✨
👑03/12(火)4️⃣B       🎊配当+33,500円✨
👑03/11(月)4️⃣S6️⃣4     🎊配当+876,200円✨+7,200円 ✨
👑03/06(水)3️⃣S 
      🎊配当+93,100円✨
👑03/05(火)
*️⃣4       🎊配当+1,100円✨

🎊2月当選実績
▶ご購入者様当選おめでとうございます🎉

👑02/28(水)5️⃣5       🎊配当+700円 ✨
👑02/21(水)3️⃣B5️⃣3     🎊配当+12,000円✨+42,900円✨
👑02/15(木)4️⃣S       🎊配当+675,800円✨
👑02/08(木)3️⃣B6️⃣4     🎊配当+17,400円✨+5,300円✨
👑02/06(火)
*️⃣4       🎊配当+1,000円✨
👑02/01(木)3️⃣B6️⃣4     🎊配当+9,800円✨+8,600円✨

🎊1月当選実績
▶ご購入者様当選おめでとうございます🎉

👑01/30(火)*️⃣3      🎊配当+7,400円✨
👑01/29(月)6️⃣3      🎊配当+190,100円✨
👑01/12(金)7️⃣4      🎊配当+8,600円✨
👑01/09(火)3️⃣S      🎊配当+115,000円✨
👑01/04(木)6️⃣4      🎊配当+8,400円✨

🎊12月当選実績
▶ご購入者様当選おめでとうございます🎉

👑12/27(水)3️⃣S4️⃣B    🎊配当+67,800円✨+47,400円✨
👑12/25(月)3️⃣S     🎊配当+88,300円✨
👑12/21(木)3️⃣S6️⃣4  
 🎊配当+61,400円✨+10,000円✨
👑12/20(水)3️⃣S  
  🎊配当+69,500円✨

🎊11月当選実績
▶ご購入者様当選おめでとうございます🎉

👑11/22(水)3️⃣S     🎊配当+106,200円✨
👑11/20(月)3️⃣S     🎊配当+91,000円✨
👑11/16(木)6️⃣4    🎊配当+8,300円✨
👑11/15(水)3️⃣S5️⃣7
   🎊配当+ 86,300円✨+200円✨
👑11/14(火)3️⃣S*️⃣3
   🎊配当+ 105,600円✨+8,300円✨
👑11/01(水)5️⃣7     🎊配当+200円 ✨

👑各記号と掲載
3️⃣:ナンバーズ3▶Bボックス・Sストレート
4️⃣:ナンバーズ4▶Bボックス・Sストレート
5️⃣:ビンゴ5▶7等~
*️⃣:ミニロト▶4等~
6️⃣:ロト6▶5等~
7️⃣:ロト7▶6等~


👑毎回解析するので更新は平日22時頃
月曜日:3️⃣4️⃣6️⃣
火曜日:3️⃣4️⃣*️⃣
水曜日:3️⃣4️⃣5️⃣
木曜日:3️⃣4️⃣6️⃣
金曜日:3️⃣4️⃣7️⃣


👑数字選択宝くじのルールは、みずほ銀行宝くじホームページ参照


👑概要

Pythonを使って過去の当選番号を取得するクローラーを実現した上、LSTMアルゴリズムで次回の当選番号を予測するプログラムにて運営します。
全てのデータは
みずほ銀行の宝くじページから取得しています。

1.ナンバーズ3で例を示します

import requests
import csv
import re
import datetimeclass Lottery:
 def __init__(self):
     self.index = ""     # 回数
     self.date = ""      # 抽選日
     self.num1 = ""      # 数字1
     self.num2 = ""      # 数字2
     self.num3 = ""      # 数字3

2. スクローラーClass

class Crawler: # 初期化
 def __init__(self, old_url, new_url):
     self.old_url = old_url
     self.new_url = new_url# データ取得
 def get_data(self, begin_number, end_number):
     data = []
     if begin_number > 2700:
         for index in range(begin_number, end_number+1):
             print(index)
             new_data = self._get_new_data(index, self.new_url)
             data.append(new_data)
 def _get_new_data(self, index, url):
     url = url.format(index)
     result = requests.get(url)
     result.encoding = "Shift_JIS"
     lines = result.text.splitlines()lot = Lottery()
     
      # 回数
     lot.index = index  # 抽選日
     record = lines[1].split(",")[2]
     lot.date = self._get_date_from_string_jp(record)    # 番号
     num = lines[3].split(",")[1]
     lot.num1 = num[0]
     lot.num2 = num[1]
     lot.num3 = num[2]   return lot
     
     # 日付取得
 def _get_date_from_string_jp(self, str):
     pattern = r'([0-9]+)'
     ymd = re.findall(pattern, str)
     if str[0:2] == '平成':
         year = int(ymd[0]) + 1988
     elif str[0:2] == '令和':
         year = 2021
     else:
         raise "error"
     date = datetime.date(year, int(ymd[1]), int(ymd[2]))
     return date
     
     # CSVファイル保存
 def save(self, file_name, columns, data):
 
   # ファイルを開く
     f = open(file_name, 'w')
     writer = csv.writer(f)
     
     # タイトル
     writer.writerow(columns)
     
     # 当選番号
     for datum in data:
         writer.writerow([datum.index, datum.date, datum.num1, datum.num2, datum.num3])
         
     # ファイルを閉じる
     f.close()

3. セット

if __name__ == '__main__':# スクローラーインスタンス生成
 crawler = Crawler(url)
 
# データ取得(開始回数、終了回数)
 data = crawler.get_data(2900, 5723)
  
 # CSVファイルに保存
 crawler.save("data.csv", ["no", "date", "num1", "num_2", "num_3"], data)

4. LSTM Class

Import numpy as np
import pandas as pd
import tflearn
import time
from sklearn import preprocessingclass PredictionLSTM:
 def __init__(self):
     # LSTMパラメータ設定
     self.steps_of_history = 10
     self.steps_of_furture = 1
     self.units = 6
     self.epochs = 100
     self.batch_size = 1
# データセット作成
 def create_dataset(self, data):
     x, y = [], []
     for i in range(0, len(data) - self.steps_of_history, self.steps_of_furture):
         a = i + self.steps_of_history
         x.append(data[i:a])
         y.append(data[a])
     x = np.reshape(np.array(x), [-1, self.steps_of_history, 1])
     y = np.reshape(np.array(y), [-1, 1])
     return x, y
 
# 予測用データ作成
 def create_predict_dataset(self, data):
     latest_x = np.array([data[-self.steps_of_history:]])
     latest_x = np.reshape(latest_x, (-1, self.steps_of_history, 1))
     return latest_x
 
# 評価データ分割
 def split_dataset(self, x, y, test_size=0.1):
     pos = round(len(x) * (1 - test_size))
     train_x, train_y = x[:pos], y[:pos]
     test_x, test_y = x[pos:], y[pos:]
     return train_x, train_y, test_x, test_y
 
 # モデル作成
 def _create_model_by_tflearn(self):
     net = tflearn.input_data(shape=[None, self.steps_of_history, 1])
     # LSTM
     net = tflearn.lstm(net, n_units=self.units)
     # GRU
     # net = tflearn.gru(net, n_units=self.units)
     # GRU 複数層
     # net = tflearn.gru(net, n_units=self.units, return_seq=True)
     # net = tflearn.gru(net, n_units=self.units)
     net = tflearn.fully_connected(net, 1, activation='linear')
     net = tflearn.regression(net, optimizer='adam', learning_rate=0.001, loss='mean_square')
     model = tflearn.DNN(net, tensorboard_verbose=0)
     return model
 
 # セット
 def train(self, train_x, train_y):
     model = self._create_model_by_tflearn()
     model.fit(train_x, train_y, validation_set=0.1, batch_size=self.batch_size, n_epoch=self.epochs)
     return model
 
 # 予測
 def predict(self, model, data):
     return model.predict(data)
 
 # 評価アルゴリズム
 # RMSE(Root Mean Squared Error)
 def rmse(self, y_pred, y_true):
     return np.sqrt(((y_true - y_pred) ** 2).mean())
 # RMSLE(Root Mean Squared Logarithmic Error)
 def rmsle(self, y_pred, y_true):
     return np.sqrt(np.square(np.log(y_true + 1) - np.log(y_pred + 1)).mean())
 # MAE(Mean Absolute Error)
 def mae(self, y_pred, y_true):
     return np.mean(np.abs((y_true - y_pred)))
 # MAPE(Mean Absolute Percentage Error)
 def mape(self, y_pred, y_true):
     return np.mean(np.abs((y_true - y_pred) / y_true)) * 100

5. メインプログラム

 # データを読み込む
 dataframe = pd.read_csv('./data.csv')
 dataframe = dataframe[['num_1', 'num_2', 'num_3']]
 data = dataframe.index.map(lambda _:int(str(dataframe.num_1[_]) + str(dataframe.num_2[_]) + str(dataframe.num_3[_])))
 data = data.values.reshape(data.shape[0], 1).astype(dtype=np.float32)
 
     # 正規化
 scaler = preprocessing.MinMaxScaler()
 data = scaler.fit_transform(data)
 
     # LSTMインスタンス作成
 lstm = PredictionLSTM()
 
     # 評価データ作成
 x, y = lstm.create_dataset(data)
 train_x, train_y, test_x, test_y = lstm.split_dataset(x, y)
 
     # セット
 model = lstm.train(train_x, train_y)
 
     # 評価
 train_predict = lstm.predict(model, train_x)
 test_predict = lstm.predict(model, test_x)
 # RMSE(Root Mean Squared Error)
 train_score = lstm.rmse(train_y, train_predict)
 test_score = lstm.rmse(test_y, test_predict)
 print("Train Score: {0:.3f} RMSE".format(train_score))
 print("Test  Score: {0:.3f} RMSE".format(test_score))
 
     # 予測
 latest_x = lstm.create_predict_dataset(data)
 next_prediction = model.predict(latest_x)
 next_prediction = scaler.inverse_transform(next_prediction)
 print("Next prediction: {0:.0f}".format(list(next_prediction)[0][0]))
 print("Time: {0:.1f}sec".format(time.time() - START_TIME))

※コメントは全て消します。AI予想結果だけ見て下さい。

#ナンバーズ3
#ナンバーズ3予想
#ナンバーズ
#宝くじ
#数字選択式宝くじ
#ナンバーズ4
#ナンバーズ4予想
#ロト
#ロト6
#ロト7
#ミニロト
#ビンゴ5
#ロト予想
#ロト6予想
#ロト7予想
#ミニロト予想
#ビンゴ5予想


この記事が参加している募集

スキしてみて

この記事が気に入ったらサポートをしてみませんか?