import gradio as gr longitude = gr.inputs.Slider(-124.00, -114.00, step=0.01, label = "longitude") latitude = gr.inputs.Slider(32.00, 42.00, step=0.01, label = "latitude") housing_median_age = gr.inputs.Slider(1, 100, step=1, label = "housing_median_age") total_rooms = gr.inputs.Slider(1, 50000, step=1, label = "total_rooms") total_bedrooms = gr.inputs.Slider(1, 10000, step=1, label = "total_bedrooms") population = gr.inputs.Slider(1, 40000, step=1, label = "population") households = gr.inputs.Slider(1, 6100, step=1, label = "households") median_income = gr.inputs.Slider(0.1, 50, step=0.15, label = "median_income") pred_house_price = gr.outputs.Textbox(label = "predicting housing price") from sklearn.model_selection import train_test_split import pandas as pd ## 4. scale the numeric features in training set from sklearn.preprocessing import MinMaxScaler from sklearn.linear_model import LinearRegression import joblib import os def housing_predict(longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income): """ [longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income] """ item = [longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income] print(f"passing parameters: {item}") if os.path.exists("sample_data/LinearRegressionHousing.pkl"): regr = joblib.load("sample_data/LinearRegressionHousing.pkl") print("load directly from pkl file") else: print("load training data...") housing = pd.read_csv('sample_data/housing.csv') train_set, test_set = train_test_split(housing, test_size=0.2, random_state=10) ## 2. clean the missing values train_set_clean = train_set.dropna(subset=["total_bedrooms"]) train_set_clean ## 2. derive training features and training labels train_labels = train_set_clean["median_house_value"].copy() # get labels for output label Y train_features = train_set_clean.drop("median_house_value", axis=1) # drop labels to get features X for training set scaler = MinMaxScaler() ## define the transformer scaler.fit(train_features) ## call .fit() method to calculate the min and max value for each column in dataset train_features_normalized = scaler.transform(train_features) lin_reg = LinearRegression() ## Initialize the class regr = lin_reg.fit(train_features_normalized, train_labels) # feed the training data X, and label Y for supervised learning if not os.path.exists("sample_data/LinearRegressionHousing.pkl"): joblib.dump(regr, "sample_data/LinearRegressionHousing.pkl") res = regr.predict([ item]) print(f"res={res}") return str(res[0]) gr.Interface(fn=housing_predict, inputs=[longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income], outputs=pred_house_price).launch(debug=True)