2023-06-30 19:12:47 +02:00
|
|
|
import tensorflow as tf
|
2023-06-30 20:42:31 +02:00
|
|
|
import pandas as pd
|
2023-06-30 19:12:47 +02:00
|
|
|
import numpy as np
|
|
|
|
|
2023-06-30 20:42:31 +02:00
|
|
|
# Wczytanie danych treningowych
|
2023-06-30 20:35:10 +02:00
|
|
|
data = pd.read_csv('data/winemag-data_first150k.csv')
|
2023-06-30 19:12:47 +02:00
|
|
|
|
2023-06-30 20:42:31 +02:00
|
|
|
# Usunięcie rekordów zawierających wartości NaN w kolumnach 'points' i 'price'
|
|
|
|
data = data.dropna(subset=['points', 'price'])
|
2023-06-30 19:12:47 +02:00
|
|
|
|
2023-06-30 20:42:31 +02:00
|
|
|
# Przygotowanie danych wejściowych i wyjściowych
|
|
|
|
input_data = data[['price', 'points']] # Wejście modelu (kolumny 'price' i 'points')
|
|
|
|
output_data = data['price'] # Oczekiwane wyjście modelu (kolumna 'price')
|
2023-06-30 19:12:47 +02:00
|
|
|
|
|
|
|
# Konwersja danych do numpy arrays
|
2023-06-30 20:42:31 +02:00
|
|
|
input_array = input_data.values
|
|
|
|
output_array = output_data.values
|
2023-06-30 19:12:47 +02:00
|
|
|
|
|
|
|
# Normalizacja danych wejściowych
|
2023-06-30 20:42:31 +02:00
|
|
|
input_mean = np.mean(input_array, axis=0)
|
|
|
|
input_std = np.std(input_array, axis=0)
|
|
|
|
input_array = (input_array - input_mean) / input_std
|
2023-06-30 19:12:47 +02:00
|
|
|
|
|
|
|
# Utworzenie modelu przy użyciu TensorFlow
|
2023-06-30 20:42:31 +02:00
|
|
|
input_size = input_array.shape[1]
|
2023-06-30 19:12:47 +02:00
|
|
|
output_size = 1 # Jeden wymiar dla wyjścia modelu (kolumna 'price')
|
|
|
|
|
|
|
|
model = tf.keras.models.Sequential([
|
|
|
|
tf.keras.layers.Dense(64, activation='relu', input_shape=(input_size,)),
|
|
|
|
tf.keras.layers.Dense(64, activation='relu'),
|
|
|
|
tf.keras.layers.Dense(output_size)
|
|
|
|
])
|
|
|
|
|
|
|
|
# Kompilacja modelu
|
|
|
|
model.compile(optimizer='adam', loss='mse')
|
|
|
|
|
|
|
|
# Uczenie modelu
|
2023-06-30 20:42:31 +02:00
|
|
|
history = model.fit(input_array, output_array, epochs=10, batch_size=32, verbose=1)
|
2023-06-30 19:12:47 +02:00
|
|
|
|
2023-06-30 20:42:31 +02:00
|
|
|
# Zapisanie wytrenowanego modelu do pliku
|
2023-06-30 19:12:47 +02:00
|
|
|
model.save('trained_model_tf.h5')
|