ãð°ãŽãŒã«ãã³ãã³ããŒãºAIãâãã&ãã³ããŒãºåœéžæ°åäºæž¬ã·ã¹ãã ð
2024幎ã®ææ°ããŒã¿ãåºã«ããAIãã³ããŒãºäºæ³ã·ã¹ãã ãPythonã§éçºããŸããã䜿çšããŠããã·ã¹ãã ã¯ãéå»ã®åœéžããŒã¿ã解æãã次åã®åœéžçªå·ãäºæž¬ããããã«èšèšãããŠããŸãã
ð°æè¡ç°å¢ãšäœ¿çšããã°ã©ã
Python 3.9: ã¡ã€ã³ããã°ã©ãã³ã°èšèª
Pandas: ããŒã¿è§£æã©ã€ãã©ãªãããŒã¿ã®èªã¿èŸŒã¿ãæŽåœ¢ã解æãæ åœããŸãã
NumPy: æ°å€èšç®ã©ã€ãã©ãªãé«éãªæ°å€èšç®ãè¡ããŸãã
scikit-learn: æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ãæäŸããã©ã€ãã©ãªãã¢ãã«ã®åŠç¿ãšäºæž¬ã«äœ¿çšããŸãã
TensorFlow: ãã£ãŒãã©ãŒãã³ã°ãã¬ãŒã ã¯ãŒã¯ãè€éãªã¢ãã«ã®æ§ç¯ãšåŠç¿ã«äœ¿çšããŸãã
BeautifulSoup: ãŠã§ãã¹ã¯ã¬ã€ãã³ã°ããŒã«ããŠã§ãããããŒã¿ãåéããããã«äœ¿çšããŸãã
Selenium: ãŠã§ããã©ãŠã¶èªååããŒã«ãåçãªãŠã§ãããŒãžããããŒã¿ãåéããããã«äœ¿çšããŸãã
Flask: ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãã
ð°äºæž¬ææ³
ããŒã¿åé: BeautifulSoupãšSeleniumã䜿ã£ãŠãéå»ã®ãã³ããŒãºã®åœéžããŒã¿ããŠã§ãããåéããŸãã
ããŒã¿ååŠç: PandasãšNumPyã䜿ã£ãŠãåéããããŒã¿ã®ã¯ãªãŒãã³ã°ãšæŽåœ¢ãè¡ããŸãã
ã¢ãã«æ§ç¯: scikit-learnãšTensorFlowã䜿ãã以äžã®ãããªã¢ãã«ãæ§ç¯ããŸãã
ã©ã³ãã ãã©ã¬ã¹ã: å€æ°ã®æ±ºå®æšãçšããŠãããŒã¿ããç¹åŸŽãåŠç¿ããäºæž¬ãè¡ããŸãã
LSTM: é·çæèšæ¶ïŒLong Short-Term MemoryïŒãããã¯ãŒã¯ã䜿çšããæç³»åããŒã¿ã®ãã¿ãŒã³ãåŠç¿ããŸãã
äºæž¬: æ§ç¯ããã¢ãã«ã䜿ã£ãŠã次åã®åœéžçªå·ãäºæž¬ããŸãã
ð°ããŒã¿åéã¹ã¯ãªãã (data_collection.py)
url = 'ãã³ããŒãºã®ããŒã¿ãœãŒã¹URL'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# å¿
èŠãªããŒã¿ãæœåºããããŒã¿ãã¬ãŒã ã«å€æ
data = []
table = soup.find('table', {'id': 'results'})
rows = table.find_all('tr')
for row in rows[1:]:
cols = row.find_all('td')
date = cols[0].text
number = cols[1].text
data.append([date, number])
df = pd.DataFrame(data, columns=['date', 'number'])
df.to_csv('numbers_data.csv', index=False)
ð°ã¢ãã«æ§ç¯ã¹ã¯ãªãã (model_building.py)
# ããŒã¿ã®èªã¿èŸŒã¿ãšååŠç
data = pd.read_csv('numbers_data.csv')
data['number'] = data['number'].astype(int)
X = data[['date']]
y = data['number']
# ã©ã³ãã ãã©ã¬ã¹ãã¢ãã«ã®æ§ç¯
rf_model = RandomForestClassifier(n_estimators=100)
rf_model.fit(X, y)
# LSTMã¢ãã«ã®æ§ç¯
lstm_model = Sequential()
lstm_model.add(LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)))
lstm_model.add(LSTM(50))
lstm_model.add(Dense(1))
lstm_model.compile(optimizer='adam', loss='mse')
generator = TimeseriesGenerator(X.values.reshape(-1, 1), y, length=10, batch_size=32)
lstm_model.fit(generator, epochs=50)
ð°äºæž¬ã¹ã¯ãªãã (prediction.py)
# æ°ããããŒã¿ã®æºå
new_data = pd.read_csv('new_numbers_data.csv')
# äºæž¬
rf_prediction = rf_model.predict(new_data)
lstm_prediction = lstm_model.predict(new_data.values.reshape(-1, 1))
print('ã©ã³ãã ãã©ã¬ã¹ãäºæž¬:', rf_prediction)
print('LSTMäºæž¬:', lstm_prediction)
ð°ã©ã³ãã ãã©ã¬ã¹ãïŒRandom ForestïŒãéžãã çç±
é«ãäºæž¬ç²ŸåºŠ: ã©ã³ãã ãã©ã¬ã¹ãã¯ãå€æ°ã®æ±ºå®æšãæ§ç¯ãããã®å¹³åãåãããšã§äºæž¬ç²ŸåºŠãåäžãããŸãã
æ±ãããããšæ±çšæ§: ã©ã³ãã ãã©ã¬ã¹ãã¯åé¡åé¡ãååž°åé¡ã®äž¡æ¹ã«å¯Ÿå¿ããŠãããããŸããŸãªçš®é¡ã®ããŒã¿ã«é©çšå¯èœã§ãããã³ããŒãºã®äºæž¬ã§ã¯ãåœéžçªå·ãšããé¢æ£çãªå€ãäºæž¬ãããããã©ã³ãã ãã©ã¬ã¹ãã®é©çšãå¹æçã§ãã
ç¹åŸŽéã®éèŠåºŠè©äŸ¡: ã©ã³ãã ãã©ã¬ã¹ãã¯ãåç¹åŸŽéã®éèŠåºŠãèšç®ããããšãã§ããŸãã
èãã€ãºæ§: ã©ã³ãã ãã©ã¬ã¹ãã¯ããŒã¿ã®ãã€ãºã«å¯ŸããŠæ¯èŒçé å¥ã§ããè€æ°ã®æ±ºå®æšãçšããããšã§ãåã ã®æšãæã€ãã€ãºã®åœ±é¿ãå¹³ååããå®å®ããäºæž¬ãæäŸããŸãã
ãã©ã¡ãŒã¿ã®ãã¥ãŒãã³ã°ãæ¯èŒçç°¡å: ã©ã³ãã ãã©ã¬ã¹ãã«ã¯ããã€ãã®ãã€ããŒãã©ã¡ãŒã¿ããããŸãããä»ã®ã¢ãã«ãšæ¯èŒããŠé©åãªãã©ã¡ãŒã¿ãèŠã€ããã®ãæ¯èŒçç°¡åã§ãã
#æ°åéžæåŒå®ãã
#ãã³ããŒãº3
#ãã³ããŒãº4
#NUMBERS3
#NUMBERS4
#ãã³ããŒãº3äºæ³
#ãã³ããŒãº4äºæ³
#ãã6
#ãã6äºæ³
#ãã7
#ãã7äºæ³
#ãããã
#ããããäºæ³
ãã®èšäºãæ°ã«å ¥ã£ãããµããŒããããŠã¿ãŸãããïŒ