Я использую следующий код для оценки цен на основе других функций: < /p>
#Code for Hyperparameter Tuning
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from kerastuner.tuners import RandomSearch
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_absolute_error, mean_squared_error
# Load your dataset
# Assuming df is your DataFrame
X = df.drop(['Price', 'Log_Price'], axis=1) # Features
y_price = df['Price']# Target variable
y_log_price = df['Log_Price']
y=y_price
# Split data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Define the model-building function for Keras Tuner
def build_model(hp):
model = Sequential()
# Tune the number of layers
for i in range(hp.Int('num_layers', 1, 6)):
model.add(Dense(
units=hp.Int(f'units_{i}', min_value=32, max_value=256, step=32),
activation='relu'
))
model.add(Dense(1)) # Output layer
# Tune the learning rate
learning_rate = hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate),
loss='mse',
metrics=['mae']
)
return model
# Initialize the tuner
tuner = RandomSearch(
build_model,
objective='val_loss',
max_trials=20, # Number of hyperparameter combinations to try
executions_per_trial=2, # Number of models to train per trial
directory='tuner_results',
project_name='house_price_prediction'
)
# Perform hyperparameter search
tuner.search(
X_train, y_train,
epochs=100,
batch_size=32,
validation_split=0.2,
verbose=1
)
# Get the best model
best_model = tuner.get_best_models(num_models=1)[0]
# Evaluate the best model
y_pred = best_model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
print(f"Best Model MAE: {mae}, MSE: {mse}")
# Print the best hyperparameters
best_hyperparameters = tuner.get_best_hyperparameters()[0]
print("Best Hyperparameters:", best_hyperparameters.values)
< /code>
Здесь, в испытаниях, можно быть лучшим и уменьшить MAE как 3000000;
Следующее испытание, если начнется с этой конечной точки, это может дать лучшие результаты и уменьшить больше MAE; Br /> Но в следующем следе я снова получу начальную точку для MAE как 10000000, подобных значениям;
Как мне справиться? !
Если есть идея, это было бы приятно от курса.Price 1.000000
Size 0.591717
Room Count 0.462939
Floor 0.330746
Building Age -0.113272
Neighbourhood -0.160568
District -0.363924
< /code>
, как я искал, были некоторые решения следующим образом: < /p>
[*] Используйте более продвинутый тюнер, такой как байесовская оптимизация (Bayesianoptimization Tuner ) или гипербанд (гипербандный тюнер)
[*] Теплый старт из предыдущих испытаний
[*] Используйте меньшее пространство поиска
Но все же я не могу уменьшить Mae Blow 500, что может быть приемлемым в моем случае?>
Подробнее здесь: https://stackoverflow.com/questions/793 ... eter-tunin
Лучшая модель для прогнозирования цены жилья с использованием алгоритмов ML/DL с настройкой параметров ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение