house-price-prediction / example_usage.py
niru-nny's picture
Upload example_usage.py with huggingface_hub
ec980e0 verified
"""
Example script demonstrating how to use the house price prediction model.
This script shows various ways to load the model and make predictions.
"""
from inference import load_model, HousePricePredictor
import pandas as pd
def example_single_prediction():
"""Example: Predict a single house price using a dictionary."""
print("\n" + "="*60)
print("EXAMPLE 1: Single House Prediction (Dictionary)")
print("="*60)
# Load the model
predictor = load_model()
# Define a house
house = { # pyright: ignore[reportUnknownVariableType]
'longitude': -122.23,
'latitude': 37.88,
'housing_median_age': 41.0,
'total_rooms': 880.0,
'total_bedrooms': 129.0,
'population': 322.0,
'households': 126.0,
'median_income': 8.3252,
'ocean_proximity': 'NEAR BAY'
}
print("\nInput house features:")
for key, value in house.items(): # pyright: ignore[reportUnknownVariableType]
print(f" {key}: {value}")
# Make prediction
prediction = predictor.predict(house) # pyright: ignore[reportUnknownVariableType,reportUnknownMemberType]
print(f"\n✅ Predicted house price: ${prediction[0]:,.2f}")
def example_convenience_method():
"""Example: Use the convenience method for single prediction."""
print("\n" + "="*60)
print("EXAMPLE 2: Using Convenience Method")
print("="*60)
predictor = HousePricePredictor()
predictor.load()
# Predict using individual parameters
price = predictor.predict_single(
longitude=-122.22,
latitude=37.86,
housing_median_age=21.0,
total_rooms=7099.0,
total_bedrooms=1106.0,
population=2401.0,
households=1138.0,
median_income=8.3014,
ocean_proximity='NEAR BAY'
)
print(f"\n✅ Predicted house price: ${price:,.2f}")
def example_batch_predictions():
"""Example: Predict multiple houses at once using a DataFrame."""
print("\n" + "="*60)
print("EXAMPLE 3: Batch Predictions (DataFrame)")
print("="*60)
# Load the model
predictor = load_model()
# Create a DataFrame with multiple houses
houses = pd.DataFrame([
{
'longitude': -122.23, 'latitude': 37.88,
'housing_median_age': 41.0, 'total_rooms': 880.0,
'total_bedrooms': 129.0, 'population': 322.0,
'households': 126.0, 'median_income': 8.3252,
'ocean_proximity': 'NEAR BAY'
},
{
'longitude': -122.22, 'latitude': 37.86,
'housing_median_age': 21.0, 'total_rooms': 7099.0,
'total_bedrooms': 1106.0, 'population': 2401.0,
'households': 1138.0, 'median_income': 8.3014,
'ocean_proximity': 'NEAR BAY'
},
{
'longitude': -118.40, 'latitude': 34.07,
'housing_median_age': 35.0, 'total_rooms': 2500.0,
'total_bedrooms': 500.0, 'population': 1200.0,
'households': 450.0, 'median_income': 5.5,
'ocean_proximity': '<1H OCEAN'
},
{
'longitude': -119.56, 'latitude': 36.78,
'housing_median_age': 15.0, 'total_rooms': 4500.0,
'total_bedrooms': 800.0, 'population': 1800.0,
'households': 750.0, 'median_income': 3.2,
'ocean_proximity': 'INLAND'
}
])
print(f"\nPredicting prices for {len(houses)} houses...")
print("\nInput DataFrame:")
print(houses.to_string(index=False)) # pyright: ignore[reportUnknownVariableType,reportUnknownMemberType]
# Make predictions
predictions = predictor.predict(houses) # pyright: ignore[reportUnknownVariableType,reportUnknownMemberType]
print("\n" + "-"*60)
print("PREDICTIONS:")
print("-"*60)
for i, (_, row) in enumerate(houses.iterrows()): # pyright: ignore[reportUnknownVariableType]
print(f"\nHouse {i+1}:")
print(f" Location: ({row['longitude']:.2f}, {row['latitude']:.2f})")
print(f" Ocean Proximity: {row['ocean_proximity']}")
print(f" Median Income: ${row['median_income']*10000:,.0f}")
print(f" ➡️ Predicted Price: ${predictions[i]:,.2f}")
def example_different_ocean_proximities():
"""Example: Compare predictions for different ocean proximities."""
print("\n" + "="*60)
print("EXAMPLE 4: Impact of Ocean Proximity")
print("="*60)
predictor = load_model()
# Base house features
base_house = {
'longitude': -122.0,
'latitude': 37.5,
'housing_median_age': 30.0,
'total_rooms': 2000.0,
'total_bedrooms': 400.0,
'population': 1000.0,
'households': 380.0,
'median_income': 5.0,
}
ocean_proximities = ['<1H OCEAN', 'INLAND', 'NEAR OCEAN', 'NEAR BAY', 'ISLAND']
print("\nComparing same house with different ocean proximities:")
print(f"Base features: Median Income=${base_house['median_income']*10000:,.0f}, "
f"Age={base_house['housing_median_age']:.0f} years")
print("\n" + "-"*60)
predictions = [] # pyright: ignore[reportUnknownVariableType]
for proximity in ocean_proximities:
house = base_house.copy() # pyright: ignore[reportUnknownVariableType,reportUnknownMemberType]
house['ocean_proximity'] = proximity # pyright: ignore[reportArgumentType, reportUnknownVariableType,reportUnknownMemberType]
prediction = predictor.predict(house) # pyright: ignore[reportUnknownVariableType,reportUnknownMemberType]
predictions.append((proximity, prediction[0])) # pyright: ignore[reportUnknownVariableType,reportUnknownMemberType]
print(f"{proximity:15s} ➡️ ${prediction[0]:,.2f}")
# Find the most expensive
most_expensive = max(predictions, key=lambda x: x[1]) # pyright: ignore[reportUnknownArgumentType, reportUnknownVariableType,reportUnknownLambdaType,reportUnknownParameterType]
print(f"\n💰 Highest price: {most_expensive[0]} at ${most_expensive[1]:,.2f}")
if __name__ == "__main__":
print("\n🏠 CALIFORNIA HOUSE PRICE PREDICTION - USAGE EXAMPLES 🏠")
print("="*60)
try:
example_single_prediction()
example_convenience_method()
example_batch_predictions()
example_different_ocean_proximities()
print("\n" + "="*60)
print("✅ All examples completed successfully!")
print("="*60 + "\n")
except FileNotFoundError as e:
print(f"\n❌ Error: {e}")
print("Make sure the model files are in the current directory:")
print(" - house_price_model.joblib")
print(" - preprocessing_pipeline.joblib")
except Exception as e:
print(f"\n❌ Error: {e}")