Форум сайта python.su
Коллеги добрый день!!!
есть некая простая нейронная сеть(4 входа,1 выход), задача спрогнозировать определенные величины по входным параметрам. Имеется csv файл с данными входными и выходными для обучения.
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from tensorflow import keras from tensorflow.keras import layers # Создание искусственных данных data_size = 10000 np.random.seed(42) # Генерация данных data = { 'ti': np.random.randint(0, 24, data_size), # Вход 1 'te': np.random.uniform(-30, 50, data_size), # Вход 2 'en': np.random.randint(0, 41, data_size), # Вход 3 'tem': np.random.uniform(40, 45, data_size), # Вход 4 'energy_consumption': None # Выход } # Создание DataFrame df = pd.DataFrame(data) # Формирование зависимости: создание искусственных данных для потребления энергии # На основании простого линейного уравнения с добавлением некоторого шума df['energy_consumption'] = ( 50 + 20 * df['ti'] + 15 * df['en'] - 0.5 * df['te '] + 5 * (df['tem'] - 40) + np.random.normal(0, 10, data_size) # добавление случайного шума ) # Разделение данных на признаки и целевую переменную X1 = df[['ti', 'te', 'en', 'tem']] y = df['energy_consumption'] # Разделение данных на обучающую и тестовую выборки X_train, X_test, y_train, y_test = train_test_split(X1, y, test_size=0.2, random_state=42) # Масштабирование признаков scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # Создание модели нейросети model = keras.Sequential([ layers.Dense(64, activation='relu', input_shape=(X_train_scaled.shape[1],)), layers.Dense(32, activation='relu'), layers.Dense(1) # Выходной слой, так как мы прогнозируем одно значение ]) # Компиляция модели model.compile(optimizer='adam', loss='mean_squared_error') # Обучение модели model.fit(X_train_scaled, y_train, epochs=100, batch_size=32, validation_split=0.2) # Оценка модели loss = model.evaluate(X_test_scaled, y_test) print(f"Тестовая потеря: {loss:.2f}") # Прогнозирование значений на тестовых данных y_pred = model.predict(X_test_scaled) # Вывод первых 5 прогнозируемых значений print("Первые 5 прогнозируемых значений:") print(y_pred[:5].flatten()) # Пример использования модели для прогноза h=[1, 2, 3, 4, 5, 6, 7, 8, 9,1] t=[10, 20, 30, 40, 30, 30, 20, 20, 20,10] e=[40, 40, 40, 40, 20, 20, 20, 20, 20,40] tg=[45, 45, 45, 45, 45, 45, 45, 45, 45,45] for i in range(10): sample_data = np.array([[h[i], t[i], e[i], tg[i]]]) sample_data_scaled = scaler.transform(sample_data) predicted_consumption = model.predict(sample_data_scaled) print(f"Прогноз =',{h[i]},'te=',{t[i]},' en=',{e[i]},'tem: {predicted_consumption[0][0]:.2f}")
Офлайн