|
import gradio as gr |
|
import numpy as np |
|
import pandas as pd |
|
from sklearn.model_selection import train_test_split |
|
from sklearn.neighbors import KNeighborsClassifier |
|
from sklearn.metrics import accuracy_score |
|
|
|
|
|
data = pd.read_csv('knn.csv') |
|
|
|
|
|
x = data.drop('price_range', axis=1).values |
|
y = data['price_range'].values |
|
|
|
|
|
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0) |
|
|
|
|
|
knnClassifier = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=1) |
|
knnClassifier.fit(x_train, y_train) |
|
|
|
|
|
def predict_price_range(battery_power, blue, clock_speed, dual_sim, fc, four_g, int_memory, m_dep, mobile_wt, n_cores, pc, px_height, px_width, ram, sc_h, sc_w, talk_time, three_g, touch_screen, wifi): |
|
|
|
input_data = np.array([[battery_power, blue, clock_speed, dual_sim, fc, four_g, int_memory, m_dep, mobile_wt, n_cores, pc, px_height, px_width, ram, sc_h, sc_w, talk_time, three_g, touch_screen, wifi]]) |
|
|
|
|
|
prediction = knnClassifier.predict(input_data) |
|
|
|
|
|
price_ranges = ['Low', 'Medium', 'High', 'Very High'] |
|
return f"Predicted Price Range: {price_ranges[prediction[0]]}" |
|
|
|
|
|
interface = gr.Interface( |
|
fn=predict_price_range, |
|
inputs=[ |
|
gr.Slider(500, 2000, step=1, label="Battery Power"), |
|
gr.Checkbox(label="Bluetooth"), |
|
gr.Slider(0.5, 3.0, step=0.1, label="Clock Speed"), |
|
gr.Checkbox(label="Dual SIM"), |
|
gr.Slider(0, 20, step=1, label="Front Camera (FC)"), |
|
gr.Checkbox(label="4G"), |
|
gr.Slider(4, 64, step=1, label="Internal Memory (GB)"), |
|
gr.Slider(0.1, 1.0, step=0.1, label="Mobile Depth (cm)"), |
|
gr.Slider(80, 250, step=1, label="Mobile Weight (g)"), |
|
gr.Slider(1, 8, step=1, label="Number of Cores"), |
|
gr.Slider(0, 20, step=1, label="Primary Camera (PC)"), |
|
gr.Slider(0, 1960, step=1, label="Pixel Height"), |
|
gr.Slider(500, 2000, step=1, label="Pixel Width"), |
|
gr.Slider(500, 4000, step=1, label="RAM"), |
|
gr.Slider(5, 20, step=1, label="Screen Height (cm)"), |
|
gr.Slider(0, 18, step=1, label="Screen Width (cm)"), |
|
gr.Slider(2, 20, step=1, label="Talk Time (hours)"), |
|
gr.Checkbox(label="3G"), |
|
gr.Checkbox(label="Touch Screen"), |
|
gr.Checkbox(label="WiFi"), |
|
], |
|
outputs=gr.Textbox(label="Predicted Price Range"), |
|
title="Mobile Price Range Prediction", |
|
description="Predict the price range of a mobile based on its specifications." |
|
) |
|
|
|
|
|
interface.launch() |
|
|