SatuRno17
Senior Member
Apro questa discussione per condividere con gli appassionati di IA questo codice in python che addestra un rete neurale (tensorflow) per fare previsioni lotto.
Considerazioni importanti:
1. Il codice è stato creato con l'aiuto di chatGpt ma ho dovuto modificarlo altrimenti non funzionava correttamente.
2. Il codice elabora una previsione che per il momento non è attendibile (dalle prove fatte per adesso ha un' accuracy intorno al 20%) ma tutto si può migliorare quindi chiunque voglia modificarlo è ben accetto. Ovviamente sto cercando di modificarlo ma venendo dal basic mi trovo molto in difficoltà con questo linguaggio e perdo tanto tempo tra gli errori di scrittura.
3. Siccome c'è bisogno di un'archivio.csv, io ho provato a cercare/creare qualcosa ma per il momento sono riuscito solo ad ottenere un archivio di Bari anno 2024 che non mi fa allegare non so perchè (dimensione 6 Kb).
N.B. per eseguire il codice serve Python versione 3.10 e serve aver installato le librerie : numpy, pandas, tensorflow
Considerazioni importanti:
1. Il codice è stato creato con l'aiuto di chatGpt ma ho dovuto modificarlo altrimenti non funzionava correttamente.
2. Il codice elabora una previsione che per il momento non è attendibile (dalle prove fatte per adesso ha un' accuracy intorno al 20%) ma tutto si può migliorare quindi chiunque voglia modificarlo è ben accetto. Ovviamente sto cercando di modificarlo ma venendo dal basic mi trovo molto in difficoltà con questo linguaggio e perdo tanto tempo tra gli errori di scrittura.
3. Siccome c'è bisogno di un'archivio.csv, io ho provato a cercare/creare qualcosa ma per il momento sono riuscito solo ad ottenere un archivio di Bari anno 2024 che non mi fa allegare non so perchè (dimensione 6 Kb).
N.B. per eseguire il codice serve Python versione 3.10 e serve aver installato le librerie : numpy, pandas, tensorflow
Python:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
data = pd.read_csv(r"2024_BA.csv",header=None,sep=";")
# Filtra i numeri estratti
numeri = data.iloc[:, 1:6].values # Seleziona le colonne con gli estratti
# Normalizza i numeri (ad esempio da 1-90 a 0-1)
scaler = MinMaxScaler(feature_range=(0, 1))
numeri_normalizzati = scaler.fit_transform(numeri)
# Creazione dei dati di input (X) e output (y)
X = numeri_normalizzati[:-1] # Tutti i gruppi tranne l'ultimo
y = numeri_normalizzati[1:] # Gruppi spostati in avanti di una riga
# Dividere i dati in train e test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. Creare il modello di rete neurale
model = Sequential()
model.add(Dense(128, input_dim=X.shape[1], activation="relu")) # Primo livello
model.add(Dense(64, activation="relu")) # Secondo livello
model.add(Dense(X.shape[1], activation="sigmoid")) # Livello di output
# 4. Compilare il modello
model.compile(optimizer="adam", loss="mean_squared_error", metrics=["accuracy"])
# 5. Addestrare il modello
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))
# 6. Valutare il modello
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Loss: {loss}, accuracy: {accuracy}")
# 7. Previsione
# Prevedere il prossimo gruppo di numeri (esempio)
next_prediction = model.predict(X_test[:1]) # Usa il primo elemento del test set
numeri_originali = scaler.inverse_transform(next_prediction) # Riconverti i numeri al range originale
numeri_interi = numeri_originali.round().astype(int)
print("Prossima previsione:", numeri_interi[0])