import gradio as gr import torch, numpy as np, pandas as pd import skimage import pickle defaultColumns = ['MSSubClass', 'MSZoning', 'LotFrontage', 'LotArea', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'MasVnrArea', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinSF1', 'BsmtFinType2', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'KitchenQual', 'TotRmsAbvGrd', 'Functional', 'Fireplaces', 'FireplaceQu', 'GarageType', 'GarageYrBlt', 'GarageFinish', 'GarageCars', 'GarageArea', 'GarageQual', 'GarageCond', 'PavedDrive', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'PoolQC', 'Fence', 'MiscFeature', 'MiscVal', 'MoSold', 'YrSold', 'SaleType', 'SaleCondition'] categorical_columns = ['MSZoning', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', 'KitchenQual', 'Functional', 'FireplaceQu', 'GarageType', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence', 'MiscFeature', 'SaleType', 'SaleCondition'] with open("model.pkl", "rb") as f: model = pickle.load(f) def house_price(LotArea, LotFrontage, YearBuilt, GrLivArea, GarageArea): lot_area = float(LotArea) lot_frontage = float(LotFrontage) year_built = float(YearBuilt) gr_liv_area = float(GrLivArea) garage_area = float(GarageArea) default = [20, 'RL', lot_frontage, lot_area, 'Pave', 'Grvl', 'Reg', 'Lvl', 'AllPub', 'Inside', 'Gtl', 'NAmes', 'Norm', 'Norm', '1Fam', '1Story', 5, 5, year_built, 1950, 'Gable', 'CompShg', 'VinylSd', 'VinylSd', 'None', 0.0, 'TA', 'TA', 'PConc', 'TA', 'TA', 'No', 'Unf', 0.0, 'Unf', 0.0, 0.0, 0.0, 'GasA', 'Ex', 'Y', 'SBrkr', 864, 0, 0, gr_liv_area, 0.0, 0.0, 2, 0, 3, 1, 'TA', 6, 'Typ', 0, 'Gd', 'Attchd', 2005.0, 'Unf', 2.0, garage_area, 'TA', 'TA', 'Y', 0, 0, 0, 0, 0, 0, 'Gd', 'MnPrv', 'Shed', 0, 6, 2007, 'WD', 'Normal'] df=pd.DataFrame([default], columns = defaultColumns) df[categorical_columns] = df[categorical_columns].astype("category") df[categorical_columns] = df[categorical_columns].apply(lambda x: x.cat.codes) df = (df - df.mean()) / df.std() df.fillna(-1, inplace=True) predictions = model.predict(df) return predictions[0] iface = gr.Interface( fn=house_price, title="House Prices", allow_flagging="never", inputs=[ gr.inputs.Number(default=9600, label="LotArea"), gr.inputs.Number(default=60.0, label="LotFrontage"), gr.inputs.Number(default=2005, label="YearBuilt"), gr.inputs.Number(default=864, label="GrLivArea"), gr.inputs.Number(default=730, label="GarageArea"), ], outputs="text") iface.launch()