Pranjal-psytech's picture
Attach folder
b3fb6dc
raw
history blame
4.33 kB
import gradio as gr
import pandas as pd
import numpy as np
from joblib import dump, load
from sklearn.model_selection import train_test_split
from catboost import CatBoostClassifier, Pool
#, MetricVisualizer
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KernelDensity
import matplotlib.pyplot as plt
import matplotlib
#Model Loading
filename = 'modelUser_Behavior.pkl'
model = load(open(filename, 'rb'))
def predict_behavior_type(evaluation):
prediction = model.predict(evaluation)
return prediction
def analyze_data(inter_api_access_duration, api_access_uniqueness, sequence_length, vsession_duration, ip_type, num_sessions, num_users, num_unique_apis):
# Combine the input parameters into a single evaluation object or use them individually as needed
evaluation = [inter_api_access_duration, api_access_uniqueness, sequence_length, vsession_duration, ip_type, num_sessions, num_users, num_unique_apis]
# Call the model's predict function with the evaluation object or individual parameters as needed
prediction = predict_behavior_type(evaluation)
# Return the prediction or any output you desire
return prediction
# Create a Gradio Dataframe input with three columns and two rows
inter_api_access_duration_input = gr.inputs.Number(label="Inter API Access Duration (sec)")
api_access_uniqueness_input = gr.inputs.Number(label="API Access Uniqueness")
sequence_length_input = gr.inputs.Number(label="Sequence Length (count)")
vsession_duration_input = gr.inputs.Number(label="VSession Duration (min)")
ip_type_input = gr.inputs.Dropdown(choices=["default", "alternative","datacenter"], label="IP Type")
num_sessions_input = gr.inputs.Number(label="Number of Sessions")
num_users_input = gr.inputs.Number(label="Number of Users")
num_unique_apis_input = gr.inputs.Number(label="Number of Unique APIs")
Inputs = [inter_api_access_duration_input, api_access_uniqueness_input, sequence_length_input,
vsession_duration_input, ip_type_input, num_sessions_input, num_users_input, num_unique_apis_input]
# Define your output
output = gr.outputs.Textbox(label="Analysis Result")
examples = [
[0.000721, 0.019527, 12.960905, 273, "default", 708.0, 486.0, 123.0],
[0.000112, 0.002958, 20.859897, 109, "default", 1152.0, 778.0, 48.0],
[0.003907, 0.005867, 20.262226, 5635, "alternative", 1288.0, 1186.0, 141.0],
[0.120327, 0.5, 26, 188, "default", 8.0, 1.0, 13.0],
[0.000544, 0.128842, 8.294118, 28, "alternative", 134.0, 102.0, 109.0],
[852.92925, 0.5, 2.0, 102352, "datacenter", 2.0, 1.0, 1.0],
[59.243, 0.8, 5.0, 17773, "datacenter", 3.0, 1.0, 4.0],
[0.754, 0.6666666666666666, 3.0, 136, "datacenter", 2.0, 1.0, 2.0],
[66.93485714285714, 0.4285714285714285, 7.0, 28113, "datacenter", 3.0, 1.0, 3.0]
]
# Define your Gradio interface
interface = gr.Interface(fn=analyze_data, inputs=Inputs,examples=examples, outputs=output, title="API Data Analysis~ Group No. 12",
description='''
Analyze API data using the specified inputs.
inter_api_access_duration_input: It is a numerical input represented by a number field. Users can enter the duration of inter API access in seconds.
api_access_uniqueness_input: It is a numerical input represented by a number field. Users can enter the level of uniqueness in API access.
sequence_length_input: It is a numerical input represented by a number field. Users can enter the length of the sequence in counts.
vsession_duration_input: It is a numerical input represented by a number field. Users can enter the duration of virtual sessions in minutes.
ip_type_input: It is a dropdown input with two choices ("default" and "alternative"). Users can select the type of IP address.
num_sessions_input: It is a numerical input represented by a number field. Users can enter the number of sessions.
num_users_input: It is a numerical input represented by a number field. Users can enter the number of users.
num_unique_apis_input: It is a numerical input represented by a number field. Users can enter the number of unique APIs.
''',
layout="horizontal",
verbose=True)
# Launch the interface
interface.launch()