Artificial Intelligence 3 min read

Build a Regression MLP with Keras: Predict California Housing Prices

Learn how to load the California housing dataset, preprocess features, construct a Keras sequential regression MLP, train it with SGD, evaluate performance, and make predictions, all illustrated with concise Python code snippets.

Model Perspective
Model Perspective
Model Perspective
Build a Regression MLP with Keras: Predict California Housing Prices

Implement a Multilayer Perceptron with Keras

We use the California housing problem as an example and employ a regression neural network for prediction. The Scikit‑Learn fetch_california_housing() function loads the dataset, which contains only numeric features and no missing values. After loading, we split the data into training, validation, and test sets and scale all features:

<code># Import libraries
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Load data
housing = fetch_california_housing()
# Split dataset into training, validation, test sets
X_train_full, X_test, y_train_full, y_test = train_test_split(
    housing.data, housing.target, random_state=42)
X_train, X_valid, y_train, y_valid = train_test_split(
    X_train_full, y_train_full, random_state=42)
# Scale features
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_valid = scaler.transform(X_valid)
X_test = scaler.transform(X_test)
</code>

Using the Sequential API, we build, train, and evaluate a regression MLP, which is similar to the classification MLP except the output layer has a single neuron (no activation) and uses mean‑squared error loss. Because the dataset is noisy, we use a hidden layer with fewer neurons to avoid over‑fitting:

<code>np.random.seed(42)
tf.random.set_seed(42)
model = keras.models.Sequential([
    keras.layers.Dense(30, activation="relu", input_shape=X_train.shape[1:]),
    keras.layers.Dense(1)
])
model.compile(loss="mean_squared_error",
              optimizer=keras.optimizers.SGD(lr=1e-3))
history = model.fit(X_train, y_train, epochs=20,
                    validation_data=(X_valid, y_valid))
</code>

Finally, we evaluate the model on the test set and make predictions on new samples:

<code>mse_test = model.evaluate(X_test, y_test)
X_new = X_test[:3]
y_pred = model.predict(X_new)
</code>
Pythonneural networksregressionKerasMLPCalifornia Housing
Model Perspective
Written by

Model Perspective

Insights, knowledge, and enjoyment from a mathematical modeling researcher and educator. Hosted by Haihua Wang, a modeling instructor and author of "Clever Use of Chat for Mathematical Modeling", "Modeling: The Mathematics of Thinking", "Mathematical Modeling Practice: A Hands‑On Guide to Competitions", and co‑author of "Mathematical Modeling: Teaching Design and Cases".

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.