File size: 4,292 Bytes
c4a182c
3599d25
 
 
 
 
 
 
 
 
c4a182c
3599d25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c4a182c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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, MetricVisualizer, Pool
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KernelDensity
import matplotlib.pyplot as plt
import matplotlib

#Model Loading
model = load('modelUser_Behavior.pkl')




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()