wide-and-deep-net-california-housing
A wide & deep neural network trained on the California Housing dataset.
It takes eight inputs: 'MedInc'
, 'HouseAge'
, 'AveRooms'
, 'AveBedrms'
, 'Population'
, 'AveOccup'
, 'Latitude'
and 'Longitude'
. It predicts 'MedHouseVal'
.
It is a PyTorch adaptation of the TensorFlow model in Chapter 10 of Aurelien Geron's book 'Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow'.
Experiment tracking: https://wandb.ai/sadhaklal/wide-and-deep-net-california-housing
Usage
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing(as_frame=True)
from sklearn.model_selection import train_test_split
X_train_full, X_test, y_train_full, y_test = train_test_split(housing['data'], housing['target'], test_size=0.25, random_state=42)
X_train, X_valid, y_train, y_valid = train_test_split(X_train_full, y_train_full, test_size=0.25, random_state=42)
X_means, X_stds = X_train.mean(axis=0), X_train.std(axis=0)
X_train = (X_train - X_means) / X_stds
X_valid = (X_valid - X_means) / X_stds
X_test = (X_test - X_means) / X_stds
import torch
device = torch.device("cpu")
import torch.nn as nn
from huggingface_hub import PyTorchModelHubMixin
class WideAndDeepNet(nn.Module, PyTorchModelHubMixin):
def __init__(self):
super().__init__()
self.hidden1 = nn.Linear(8, 30)
self.hidden2 = nn.Linear(30, 30)
self.output = nn.Linear(38, 1)
def forward(self, x):
act = torch.relu(self.hidden1(x))
act = torch.relu(self.hidden2(act))
concat = torch.cat([x, act], axis=1)
return self.output(concat)
model = WideAndDeepNet.from_pretrained("sadhaklal/wide-and-deep-net-california-housing")
model.to(device)
model.eval()
# Let's predict on 3 unseen examples from the test set:
print(f"Ground truth housing prices: {y_test.values[:3]}")
x_new = torch.tensor(X_test.values[:3], dtype=torch.float32)
x_new = x_new.to(device)
with torch.no_grad():
preds = model(x_new)
print(f"Predicted housing prices: {preds.squeeze()}")
Metric
RMSE on the test set: 0.546
This model has been pushed to the Hub using the PyTorchModelHubMixin integration.
Inference Providers
NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API:
The HF Inference API does not support tabular-regression models for pytorch library.