Commit ·
b1bae0d
0
Parent(s):
- .DS_Store +0 -0
- .gitattributes +75 -0
- Models/Clean_Job_data.csv +285 -0
- Models/Job_data.csv +302 -0
- Models/NB_model_gen.ipynb +0 -0
- Models/indeed.csv +285 -0
- Models/km_model.pkl +3 -0
- Models/km_model_generator.ipynb +220 -0
- Models/knn_model.pkl +3 -0
- Models/knn_model_gen.ipynb +207 -0
- Models/linreg_model.pkl +3 -0
- Models/linreg_model_gen.ipynb +0 -0
- Models/nbB_model.pkl +3 -0
- Models/nbG_model.pkl +3 -0
- Models/nbM_model.pkl +3 -0
- README.md +11 -0
- algos.html +78 -0
- app.ipynb +396 -0
- app.py +153 -0
- requirements.txt +7 -0
- static/css/main.css +3098 -0
- static/css/model.css +128 -0
- static/images/Model-Linear.png +0 -0
- static/images/Model-Naive.png +0 -0
- static/images/Model-kMeans.png +0 -0
- static/images/Model-kNN.png +0 -0
- static/images/cluster.png +0 -0
- static/images/gif3.webp +0 -0
- static/images/hero.png +0 -0
- static/images/logo.svg +15 -0
- static/js/js.js +0 -0
- templates/algos.html +79 -0
- templates/base.html +67 -0
- templates/draft.html +240 -0
- templates/index.html +163 -0
- templates/kmeans.html +22 -0
- templates/knn.html +50 -0
- templates/linear.html +53 -0
- templates/naive.html +70 -0
.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
.gitattributes
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
.gif filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
.pkl filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
.jpg filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
|
| 41 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 56 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 58 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 64 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 65 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 66 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 67 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 68 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 69 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 70 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 72 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 73 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 74 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 75 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
Models/Clean_Job_data.csv
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Experience,Job_Pos,New Salary
|
| 2 |
+
1.0,1,25000.0
|
| 3 |
+
1.5,1,30000.0
|
| 4 |
+
1.5,1,49804.27627052736
|
| 5 |
+
1.5,1,60000.0
|
| 6 |
+
1.5,1,40500.0
|
| 7 |
+
1.5,1,40000.0
|
| 8 |
+
1.8,1,32500.0
|
| 9 |
+
1.5,1,34500.0
|
| 10 |
+
1.8,1,36500.0
|
| 11 |
+
1.5,1,38500.0
|
| 12 |
+
1.8,1,49804.27627052736
|
| 13 |
+
1.0,1,42500.0
|
| 14 |
+
3.0,1,35000.0
|
| 15 |
+
1.0,1,30000.0
|
| 16 |
+
1.0,1,46500.0
|
| 17 |
+
5.0,1,48500.0
|
| 18 |
+
1.5,1,50500.0
|
| 19 |
+
2.5,1,52500.0
|
| 20 |
+
1.5,1,49804.27627052736
|
| 21 |
+
1.0,1,56500.0
|
| 22 |
+
1.0,1,58500.0
|
| 23 |
+
2.5,1,60500.0
|
| 24 |
+
1.8,1,49804.27627052736
|
| 25 |
+
1.0,1,64500.0
|
| 26 |
+
2.0,1,49804.27627052736
|
| 27 |
+
1.8,1,62500.0
|
| 28 |
+
1.5,1,49804.27627052736
|
| 29 |
+
2.0,1,54500.0
|
| 30 |
+
1.8,1,27000.0
|
| 31 |
+
2.5,1,49804.27627052736
|
| 32 |
+
1.5,1,32500.0
|
| 33 |
+
1.8,1,40000.0
|
| 34 |
+
1.5,1,49804.27627052736
|
| 35 |
+
2.0,1,30000.0
|
| 36 |
+
1.5,1,40500.0
|
| 37 |
+
1.5,1,36500.0
|
| 38 |
+
1.8,1,38500.0
|
| 39 |
+
1.5,1,42500.0
|
| 40 |
+
1.8,1,49804.27627052736
|
| 41 |
+
1.5,1,55000.0
|
| 42 |
+
1.8,1,40000.0
|
| 43 |
+
1.5,1,42500.0
|
| 44 |
+
1.5,1,49804.27627052736
|
| 45 |
+
2.0,1,36500.0
|
| 46 |
+
1.5,1,38500.0
|
| 47 |
+
2.0,1,49804.27627052736
|
| 48 |
+
1.8,1,49804.27627052736
|
| 49 |
+
1.5,1,35000.0
|
| 50 |
+
2.0,1,49804.27627052736
|
| 51 |
+
1.8,1,42500.0
|
| 52 |
+
1.0,1,49804.27627052736
|
| 53 |
+
1.8,1,49804.27627052736
|
| 54 |
+
1.5,1,45000.0
|
| 55 |
+
1.5,1,49804.27627052736
|
| 56 |
+
1.8,1,49804.27627052736
|
| 57 |
+
1.0,1,49804.27627052736
|
| 58 |
+
2.0,1,49804.27627052736
|
| 59 |
+
1.8,1,70000.0
|
| 60 |
+
2.0,1,49804.27627052736
|
| 61 |
+
2.0,1,45000.0
|
| 62 |
+
1.8,1,49804.27627052736
|
| 63 |
+
1.0,1,42000.0
|
| 64 |
+
1.8,1,49804.27627052736
|
| 65 |
+
3.0,1,70500.0
|
| 66 |
+
2.0,1,49804.27627052736
|
| 67 |
+
2.0,1,49804.27627052736
|
| 68 |
+
3.0,1,80000.0
|
| 69 |
+
1.0,1,49804.27627052736
|
| 70 |
+
2.0,1,49804.27627052736
|
| 71 |
+
2.0,1,75000.0
|
| 72 |
+
1.8,1,49804.27627052736
|
| 73 |
+
1.0,1,70500.0
|
| 74 |
+
1.8,1,49804.27627052736
|
| 75 |
+
1.0,1,70500.0
|
| 76 |
+
3.3,2,70000.0
|
| 77 |
+
3.3,2,75000.0
|
| 78 |
+
3.0,2,80000.0
|
| 79 |
+
3.3,2,85000.0
|
| 80 |
+
3.0,2,70000.0
|
| 81 |
+
2.5,2,95000.0
|
| 82 |
+
3.3,2,100000.0
|
| 83 |
+
3.0,2,105000.0
|
| 84 |
+
3.3,2,77853.59696090454
|
| 85 |
+
2.5,2,77853.59696090454
|
| 86 |
+
3.3,2,110000.0
|
| 87 |
+
2.0,2,77853.59696090454
|
| 88 |
+
5.0,2,70500.0
|
| 89 |
+
3.3,2,70000.0
|
| 90 |
+
2.0,2,77853.59696090454
|
| 91 |
+
3.3,2,95000.0
|
| 92 |
+
3.3,2,77853.59696090454
|
| 93 |
+
3.3,2,77853.59696090454
|
| 94 |
+
5.0,2,100000.0
|
| 95 |
+
3.3,2,105000.0
|
| 96 |
+
4.0,2,77853.59696090454
|
| 97 |
+
3.3,2,88000.0
|
| 98 |
+
3.0,2,70000.0
|
| 99 |
+
2.0,2,77853.59696090454
|
| 100 |
+
3.3,2,70500.0
|
| 101 |
+
3.0,2,67000.0
|
| 102 |
+
3.3,2,77853.59696090454
|
| 103 |
+
4.0,2,90000.0
|
| 104 |
+
2.0,2,75000.0
|
| 105 |
+
3.3,2,105000.0
|
| 106 |
+
3.0,2,77853.59696090454
|
| 107 |
+
3.3,2,77853.59696090454
|
| 108 |
+
3.0,2,95000.0
|
| 109 |
+
3.3,2,77853.59696090454
|
| 110 |
+
3.0,2,77853.59696090454
|
| 111 |
+
3.3,2,80000.0
|
| 112 |
+
10.0,2,76000.0
|
| 113 |
+
2.0,2,77853.59696090454
|
| 114 |
+
3.3,2,65000.0
|
| 115 |
+
2.5,2,77853.59696090454
|
| 116 |
+
10.0,2,70500.0
|
| 117 |
+
3.3,2,85000.0
|
| 118 |
+
3.0,2,110000.0
|
| 119 |
+
3.3,2,95000.0
|
| 120 |
+
2.5,2,100000.0
|
| 121 |
+
4.0,2,77853.59696090454
|
| 122 |
+
3.0,2,77853.59696090454
|
| 123 |
+
3.3,2,77853.59696090454
|
| 124 |
+
3.0,2,87000.0
|
| 125 |
+
2.5,2,70500.0
|
| 126 |
+
3.3,2,75000.0
|
| 127 |
+
3.3,2,95000.0
|
| 128 |
+
5.0,2,105000.0
|
| 129 |
+
3.3,2,77853.59696090454
|
| 130 |
+
2.5,2,77853.59696090454
|
| 131 |
+
3.3,2,77853.59696090454
|
| 132 |
+
2.5,2,105000.0
|
| 133 |
+
3.3,2,77853.59696090454
|
| 134 |
+
10.0,2,77853.59696090454
|
| 135 |
+
2.0,2,77853.59696090454
|
| 136 |
+
3.3,2,77853.59696090454
|
| 137 |
+
2.0,2,72500.0
|
| 138 |
+
3.3,2,77853.59696090454
|
| 139 |
+
5.0,2,85000.0
|
| 140 |
+
2.5,2,77853.59696090454
|
| 141 |
+
5.0,2,80000.0
|
| 142 |
+
3.3,2,90000.0
|
| 143 |
+
5.5,3,105902.91765128174
|
| 144 |
+
8.5,3,60000.0
|
| 145 |
+
6.5,3,105902.91765128174
|
| 146 |
+
4.8,3,105902.91765128174
|
| 147 |
+
14.0,3,44750.0
|
| 148 |
+
4.8,3,105902.91765128174
|
| 149 |
+
10.0,3,105902.91765128174
|
| 150 |
+
4.8,3,80000.0
|
| 151 |
+
4.8,3,105902.91765128174
|
| 152 |
+
5.0,3,105902.91765128174
|
| 153 |
+
4.8,3,70000.0
|
| 154 |
+
5.0,3,100000.0
|
| 155 |
+
5.0,3,100000.0
|
| 156 |
+
4.8,3,105902.91765128174
|
| 157 |
+
4.8,3,90000.0
|
| 158 |
+
5.0,3,105902.91765128174
|
| 159 |
+
4.8,3,105902.91765128174
|
| 160 |
+
4.8,3,90000.0
|
| 161 |
+
2.0,3,105902.91765128174
|
| 162 |
+
4.8,3,82500.0
|
| 163 |
+
5.0,3,105902.91765128174
|
| 164 |
+
4.8,3,105000.0
|
| 165 |
+
3.0,3,105902.91765128174
|
| 166 |
+
4.8,3,105902.91765128174
|
| 167 |
+
4.0,3,105902.91765128174
|
| 168 |
+
4.8,3,125000.0
|
| 169 |
+
2.0,3,95000.0
|
| 170 |
+
4.0,3,100000.0
|
| 171 |
+
2.0,3,105902.91765128174
|
| 172 |
+
4.0,3,110000.0
|
| 173 |
+
2.0,3,105902.91765128174
|
| 174 |
+
4.8,3,120000.0
|
| 175 |
+
5.0,3,125000.0
|
| 176 |
+
7.5,3,105902.91765128174
|
| 177 |
+
5.5,3,105902.91765128174
|
| 178 |
+
3.0,3,105902.91765128174
|
| 179 |
+
4.8,3,125000.0
|
| 180 |
+
4.8,3,105902.91765128174
|
| 181 |
+
3.0,3,120000.0
|
| 182 |
+
4.8,3,80000.0
|
| 183 |
+
4.8,3,105902.91765128174
|
| 184 |
+
2.0,3,115000.0
|
| 185 |
+
4.8,3,105902.91765128174
|
| 186 |
+
4.8,3,105902.91765128174
|
| 187 |
+
3.0,3,105902.91765128174
|
| 188 |
+
3.0,3,105902.91765128174
|
| 189 |
+
4.8,3,130000.0
|
| 190 |
+
4.8,3,105902.91765128174
|
| 191 |
+
3.0,3,105000.0
|
| 192 |
+
5.0,3,105902.91765128174
|
| 193 |
+
1.0,3,105902.91765128174
|
| 194 |
+
5.0,3,130.0
|
| 195 |
+
8.0,3,105902.91765128174
|
| 196 |
+
1.0,3,105902.91765128174
|
| 197 |
+
1.5,3,125000.0
|
| 198 |
+
4.8,3,105902.91765128174
|
| 199 |
+
2.0,3,115000.0
|
| 200 |
+
4.8,3,105902.91765128174
|
| 201 |
+
4.0,3,115000.0
|
| 202 |
+
4.8,3,120000.0
|
| 203 |
+
3.0,3,105902.91765128174
|
| 204 |
+
10.0,3,125000.0
|
| 205 |
+
4.0,3,75000.0
|
| 206 |
+
4.8,3,95000.0
|
| 207 |
+
2.0,3,105902.91765128174
|
| 208 |
+
4.8,3,125000.0
|
| 209 |
+
5.0,3,105902.91765128174
|
| 210 |
+
10.0,3,100000.0
|
| 211 |
+
4.8,3,105000.0
|
| 212 |
+
7.0,3,120000.0
|
| 213 |
+
4.8,3,105902.91765128174
|
| 214 |
+
4.0,3,102500.0
|
| 215 |
+
5.0,3,105902.91765128174
|
| 216 |
+
8.0,4,120000.0
|
| 217 |
+
3.0,4,130000.0
|
| 218 |
+
8.0,4,45000.0
|
| 219 |
+
8.0,4,30000.0
|
| 220 |
+
10.0,4,133952.23834165893
|
| 221 |
+
8.0,4,154000.0
|
| 222 |
+
7.5,4,133952.23834165893
|
| 223 |
+
2.0,4,170000.0
|
| 224 |
+
2.0,4,150000.0
|
| 225 |
+
3.0,4,180000.0
|
| 226 |
+
7.0,4,133952.23834165893
|
| 227 |
+
10.0,4,133952.23834165893
|
| 228 |
+
3.0,4,133952.23834165893
|
| 229 |
+
6.2,4,133952.23834165893
|
| 230 |
+
5.0,4,175000.0
|
| 231 |
+
8.0,4,190000.0
|
| 232 |
+
6.2,4,133952.23834165893
|
| 233 |
+
2.0,4,160000.0
|
| 234 |
+
8.0,4,133952.23834165893
|
| 235 |
+
7.0,4,150000.0
|
| 236 |
+
6.2,4,133952.23834165893
|
| 237 |
+
7.0,4,105000.0
|
| 238 |
+
6.2,4,133952.23834165893
|
| 239 |
+
2.0,4,133952.23834165893
|
| 240 |
+
6.2,4,133952.23834165893
|
| 241 |
+
5.0,4,133952.23834165893
|
| 242 |
+
6.2,4,130000.0
|
| 243 |
+
6.2,4,133952.23834165893
|
| 244 |
+
8.0,4,100000.0
|
| 245 |
+
5.0,4,133952.23834165893
|
| 246 |
+
6.2,4,133952.23834165893
|
| 247 |
+
8.0,4,160000.0
|
| 248 |
+
8.0,4,133952.23834165893
|
| 249 |
+
6.2,4,133952.23834165893
|
| 250 |
+
6.2,4,170000.0
|
| 251 |
+
6.2,4,133952.23834165893
|
| 252 |
+
8.0,4,133952.23834165893
|
| 253 |
+
8.0,4,110000.0
|
| 254 |
+
8.0,4,133952.23834165893
|
| 255 |
+
8.0,4,133952.23834165893
|
| 256 |
+
8.0,4,122500.0
|
| 257 |
+
5.0,4,133952.23834165893
|
| 258 |
+
3.5,4,133952.23834165893
|
| 259 |
+
2.5,4,133952.23834165893
|
| 260 |
+
7.5,4,120000.0
|
| 261 |
+
6.2,4,160000.0
|
| 262 |
+
6.2,4,137500.0
|
| 263 |
+
4.0,4,133952.23834165893
|
| 264 |
+
6.2,4,150000.0
|
| 265 |
+
6.2,4,133952.23834165893
|
| 266 |
+
8.5,4,92500.0
|
| 267 |
+
5.0,4,136000.0
|
| 268 |
+
8.5,4,110000.0
|
| 269 |
+
7.0,4,165000.0
|
| 270 |
+
6.2,4,150000.0
|
| 271 |
+
6.0,4,120000.0
|
| 272 |
+
5.0,4,180000.0
|
| 273 |
+
6.2,4,115000.0
|
| 274 |
+
6.2,4,133952.23834165893
|
| 275 |
+
7.0,4,133952.23834165893
|
| 276 |
+
5.0,4,80000.0
|
| 277 |
+
6.2,4,100000.0
|
| 278 |
+
6.0,4,133952.23834165893
|
| 279 |
+
6.2,4,150000.0
|
| 280 |
+
7.0,4,140000.0
|
| 281 |
+
5.0,4,175000.0
|
| 282 |
+
6.2,4,90000.0
|
| 283 |
+
7.0,4,175000.0
|
| 284 |
+
6.2,4,133952.23834165893
|
| 285 |
+
5.0,4,160000.0
|
Models/Job_data.csv
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Job,Location,Salary,Experience,Job_Pos
|
| 2 |
+
Junior Graphics Designer,Remote,"Php20,000.00 -Php30,000.00 ",At least 1 year,Junior
|
| 3 |
+
Junior Product Designer,Philippines,PHP30K,1-2 years,Junior
|
| 4 |
+
Junior Services Developer - Javascript (100% Remote) - Philippines,Remote,"PHP 32,000 - PHP 57,000",20 years,Junior
|
| 5 |
+
Junior Software Engineers,Remote in Makati,,Minimum 1-2 years,Junior
|
| 6 |
+
Junior Enterprise Growth Consultant (Work From Home),Remote,"Php50,000.00 -Php70,000.00 ",Minimum 1-2 years,Junior
|
| 7 |
+
Junior Operations Associate,Remote in Manila,"PHP 28,000 - PHP 53,000",1-2 Years,Junior
|
| 8 |
+
Junior Accountant (Hong Kong),Angeles,P40K,1- 2 years,Junior
|
| 9 |
+
Master Data Management Junior Associate (Night Shift),Remote in Taguig,"PHP 20,000 - PHP 45,000",,Junior
|
| 10 |
+
FATCA / CRS Junior Officer,Pasig,"PHP 22,000 - PHP 47,000",Minimum 1-2 years,Junior
|
| 11 |
+
Junior Mobile Application Developer,Remote in Taytay,"PHP 24,000 - PHP 49,000",,Junior
|
| 12 |
+
Junior Software Developer,Manila,"PHP 26,000 - PHP 51,000",1-2 years,Junior
|
| 13 |
+
Junior Operations Analyst - Ballot Ingestion,Makati,,,Junior
|
| 14 |
+
Junior Project Development Architect,Makati,"PHP 30,000 - PHP 55,000",at least 1 year,Junior
|
| 15 |
+
Junior Front End Developer,Philippines,35K,2-4 years,Junior
|
| 16 |
+
Logistics Business Planning and Control Jr. Engineer,Philippines,PHP30K,At least 1 year,Junior
|
| 17 |
+
Quality Control Jr. Engineer,Philippines,"PHP 34,000 - PHP 59,000",At least 1 Year,Junior
|
| 18 |
+
Junior SEO Specialist,Manila,"PHP 36,000 - PHP 61,000",5 years,Junior
|
| 19 |
+
Junior Systems Engineer,Quezon City,"PHP 38,000 - PHP 63,000",1-2 years,Junior
|
| 20 |
+
JUNIOR /SENIOR STRUCTURAL DESIGN ENGINEER,Makati,"PHP 40,000 - PHP 65,000",2-3 years,Junior
|
| 21 |
+
Inspector (Subic),Subic,,Minimum 1-2 years,Junior
|
| 22 |
+
Junior Project Development Architect,Makati,"PHP 44,000 - PHP 69,000",at least 1 year,Junior
|
| 23 |
+
Junior Data Quality Analyst,Manila,"PHP 46,000 - PHP 71,000",At least 1 year,Junior
|
| 24 |
+
JR. ADMINISTRATIVE ASSISTANT (COLLECTIONS),Mandaluyong,"PHP 48,000 - PHP 73,000",2-3 years,Junior
|
| 25 |
+
Junior Technical Support,Malate,,,Junior
|
| 26 |
+
Logistics Business Planning and Control Jr. Engineer,Philippines,"PHP 52,000 - PHP 77,000",At least 1 year,Junior
|
| 27 |
+
Cash Applications Junior Associate (Nightshift),Taguig,,2 years,Junior
|
| 28 |
+
Intern - HR Learning Operations,Philippines,"PHP 50,000 - PHP 75,000",,Junior
|
| 29 |
+
Junior SEO Specialist,Philippines,,At least 1-2 years,Junior
|
| 30 |
+
Junior Customer Care Executive,Cebu City,"PHP 42,000 - PHP 67,000",at least 2 years,Junior
|
| 31 |
+
Junior Service Engineer ...,Pampanga,"PHP 27,000",,Junior
|
| 32 |
+
JR. ADMINISTRATIVE ASSISTANT (COLLECTIONS),Mandaluyong,,2-3 years,Junior
|
| 33 |
+
Junior Copywriter (E-commerce),Malate,"PHP 20,000 - PHP 45,000",1-2 years,Junior
|
| 34 |
+
Junior Front End Developer,Philippines,PHP40K,,Junior
|
| 35 |
+
Jr. UI/UX Designer,Parañaque,,1-2 years,Junior
|
| 36 |
+
Cash Applications Junior Associate (Nightshift),Taguig,"Php20,000.00 -Php40,000.00 ",2 years,Junior
|
| 37 |
+
Junior SEO Specialist,Philippines,"PHP 28,000 - PHP 53,000",At least 1-2 years,Junior
|
| 38 |
+
Junior Layout Engineer,Alabang,"PHP 24,000 - PHP 49,000",Minimum 1-2 years,Junior
|
| 39 |
+
Junior Data Scientist,Pasig,"PHP 26,000 - PHP 51,000",,Junior
|
| 40 |
+
Junior Video Editor | Short-Form,Remote in Makati,"PHP 30,000 - PHP 55,000",1-2 years,Junior
|
| 41 |
+
Junior Business Development,Makati,,,Junior
|
| 42 |
+
"Senior/junior programmers, 3d artists",Davao City,PHP 55K,1-2 years,Junior
|
| 43 |
+
Junior Security Analyst,Makati,PHP40K,,Junior
|
| 44 |
+
Ocean Import Jr. Associate,Taguig,"PHP 30,000- PHP 55,000",Minimum 1-2 years,Junior
|
| 45 |
+
IT Admin,Philippines,,At least 1 - 2 years,Junior
|
| 46 |
+
Junior Internal Auditor,Lipa,"PHP 24,000 - PHP 49,000",2 years,Junior
|
| 47 |
+
Graphic Designer,Remote in San Fernando,"PHP 26,000 - PHP 51,000",1-2 years,Junior
|
| 48 |
+
Junior Specialist – Sales Administration,Makati,,2 years,Junior
|
| 49 |
+
Customer Care Specialist,Philippines,,,Junior
|
| 50 |
+
Junior Fourth Engineer,Philippines,"P35,000",1-2 years,Junior
|
| 51 |
+
Junior Web Developer | Hybrid,Remote in Makati,,2 years,Junior
|
| 52 |
+
Website Management Jr. Associate,Remote in Taguig,"PHP 30,000 - PHP 55,000",,Junior
|
| 53 |
+
Software Test Engineer (Junior to Mid),Remote in Cebu City,,1 year,Junior
|
| 54 |
+
Junior Sales,Philippines,,,Junior
|
| 55 |
+
Virtual Executive Support,Remote in Mandaluyong,"PHP30,000 - PHP 60,000",1 -2 year,Junior
|
| 56 |
+
Jr. Specialist,Makati,,1-2 years,Junior
|
| 57 |
+
JR. PROGRAMMER,Remote in Pasig,"PHP, ",,Junior
|
| 58 |
+
Jr. Field Agronomist- North Luzon,Cauayan,,At least 1 year,Junior
|
| 59 |
+
Jr. Data Analyst,Philippines,,2 years,Junior
|
| 60 |
+
Junior QA Engineer,Makati,"PHP 50,000 - PHP 90,000",,Junior
|
| 61 |
+
Junior Data Analyst – Market Intelligence (Financial Market Data),Makati,,2 years,Junior
|
| 62 |
+
Jr. Data Analyst,Philippines,"P45,000",2 years,Junior
|
| 63 |
+
Junior QA Engineer,Makati,,,Junior
|
| 64 |
+
Jr Content Writer,Pasig,"PHP42,000",At least 1 year,Junior
|
| 65 |
+
Manual QA Software Tester,Remote in Taguig,,,Junior
|
| 66 |
+
Scrum Master,Remote in Philippines,"PHP 58,000 - PHP 83,000",2-4 years,Junior
|
| 67 |
+
Junior ABAP Developer,Pasay,,At least 2 year,Junior
|
| 68 |
+
Administrative Associate- Essential Medicines and Health Technologies (EMT),Manila,,2 Years,Junior
|
| 69 |
+
Junior Software Developer,Muntinlupa,"PHP 60,000 - PHP 100,000",2-4 years,Junior
|
| 70 |
+
AML/KYC Junior Officer,Pasig,,1 year,Junior
|
| 71 |
+
Junior Travel Analyst (US Shift),Pasig,,2 years,Junior
|
| 72 |
+
Operations Processor,Taguig,"PHP 55,000 - PHP 95,000",2 years,Junior
|
| 73 |
+
Jr. Software Engineer,Remote in Makati,"PHP, ",,Junior
|
| 74 |
+
Junior Corporate Secretary,Pasig,"PHP 58,000 - PHP 83,000",At least 1 year,Junior
|
| 75 |
+
Customer Happiness Champion,Remote in Philippines,,,Junior
|
| 76 |
+
Finance and Admin Analyst (Open to Fresh Graduates),Hybrid remote in Taguig,"PHP 58,000 - PHP 83,000",0-2 years,Junior
|
| 77 |
+
"Senior Specialist, Facilities",Manila,"PHP 50,000 - PHP 90,000",,Senior
|
| 78 |
+
Senior Operator QA Inspector,Cavite City,"PHP 55,000 - PHP 95,000",,Senior
|
| 79 |
+
"Senior Analyst, AR",Manila,"PHP 60,000 - PHP 100,000",At least 2-4 years,Senior
|
| 80 |
+
Vessel IT Support – Senior Specialist,Manila,"PHP 65,000 - PHP 105,000",,Senior
|
| 81 |
+
Senior Crew - Davao Del Norte (Mindanao),Davao City,"PHP 70,000",At least 2-4 years,Senior
|
| 82 |
+
Senior Cashier,General Santos,"PHP 75,000 - PHP 115,000",2-3 years,Senior
|
| 83 |
+
Senior Staff Technician Equipment,Cavite City,"PHP 80,000 - PHP 120,000",,Senior
|
| 84 |
+
"Sr Supv, Logistics",Tanauan,"PHP 85,000 - PHP 125,000",At least 2-4 years,Senior
|
| 85 |
+
Senior Director Operations Experience : 10+ years Philippines Posted 1 week ago,Philippines,"PHP 90,000 - PHP 130,000",16-18 years,Senior
|
| 86 |
+
Senior Engineer,Remote,,,Senior
|
| 87 |
+
Senior Crew - Negros Oriental (Visayas),Dumaguete,,2-3 years,Senior
|
| 88 |
+
Field Office Personnel,Olongapo,"PHP 110,000",,Senior
|
| 89 |
+
SENIOR TECHNICIAN EQUIPMENT,Cavite City,,1-3 years,Senior
|
| 90 |
+
Senior Supervisor Line Maintenance,Cavite City,"PHP 58,000 - PHP 83,000",5 years,Senior
|
| 91 |
+
Customer Service Advisor - WAH XP 2023,+9 locations,"PHP 50,000 - PHP 90,000",,Senior
|
| 92 |
+
Technician II,Philippines,"PHP 55,000 - PHP 95,000",30 years,Senior
|
| 93 |
+
Operator,Carmona,,at least 2 years,Senior
|
| 94 |
+
Data Process Support,Trece Martires,"Php95,000",,Senior
|
| 95 |
+
Branch Warehouse Helper - Tagum,Tagum,100K,20 years,Senior
|
| 96 |
+
Physical Security Senior Manager,Mandaluyong,,,Senior
|
| 97 |
+
Technical Support / Customer Service Associate - Fixed-Term,Cebu,,,Senior
|
| 98 |
+
"Customer Experience Representative, Senior",Angeles,"PHP 80,000 - PHP 120,000",5 years,Senior
|
| 99 |
+
Senior Staff Process Engineer,General Trias,"PHP 85,000 - PHP 125,000",,Senior
|
| 100 |
+
Senior UI Designer,Philippines,"PHP 90,000 - PHP 130,000",100 years,Senior
|
| 101 |
+
Sales Executive/Senior Executive - Pharma & Personal Care,Philippines,,at least 3-5 years,Senior
|
| 102 |
+
Office Clerk (Cainta Branch),Pasig,"PHP 88,000 ",,Senior
|
| 103 |
+
Senior IT Support,Clark Freeport Zone,P70K,3 years,Senior
|
| 104 |
+
Cashier-JP Rizal,Philippines,,at least 2 years,Senior
|
| 105 |
+
Senior Collection Specialist,Philippines,"PHP 58,000 - PHP 83,000",,Senior
|
| 106 |
+
Senior Crew - Zamboanga Del Sur (Mindanao),Zamboanga City,67K,3 years,Senior
|
| 107 |
+
Senior Collection Specialist,Philippines,,,Senior
|
| 108 |
+
Senior Crew - Agusan Del Norte (Mindanao),Butuan,PHP 90K,4 years,Senior
|
| 109 |
+
Senior Specialist,Manila,Php75K,At least 2 years,Senior
|
| 110 |
+
Senior Logistics Specialist,Batangas City,,35 years,Senior
|
| 111 |
+
Senior Recruiter,Pasig,"PHP 90,000 - PHP 120,000",,Senior
|
| 112 |
+
Project Engineer (Visayas) - Panay,Hybrid remote in Iloilo City,,3 years,Senior
|
| 113 |
+
Senior Crew - Cebu (Visayas),Cebu City,,,Senior
|
| 114 |
+
Senior Crew - Caloocan (Metro Manila),Caloocan,"Php95,000",3 years,Senior
|
| 115 |
+
Senior Product Engineer,Cavite City,,,Senior
|
| 116 |
+
Senior Quality Manager,Tarlac City,,3 years,Senior
|
| 117 |
+
Senior Crew - Negros Occidental (Visayas),Bacolod,80K,,Senior
|
| 118 |
+
Facilities and Admin Director,Remote in Quezon City,76K,10 years,Senior
|
| 119 |
+
"OPERATOR 3, PRODUCTION SUPPORT",Lapu-Lapu City,,at least 2 years,Senior
|
| 120 |
+
Maintenance Supervisor,Santo Tomas,"PHP 65,000",,Senior
|
| 121 |
+
"Senior/Vice President, CEO Office Strategy Projects-Manila",Philippines,,2-3 years,Senior
|
| 122 |
+
Facilities and Admin Director,Remote in Quezon City,"PHP 58,000 - PHP 83,000",10 years,Senior
|
| 123 |
+
"Officer, Surveillance",City of Dreams,"PHP 65,000 - PHP 105,000",,Senior
|
| 124 |
+
"Senior/Vice President, CEO Office Strategy Projects-Manila",Philippines,"PHP 90,000 - PHP 130,000",3 years,Senior
|
| 125 |
+
Quality Control Analyst,General Santos,"Php95,000",,Senior
|
| 126 |
+
Head of Health Safety Security & Environment,Philippines,P100000,2-3 years,Senior
|
| 127 |
+
Hub Supervisor-Muntinlupa,Philippines,,At least 3-5 years,Senior
|
| 128 |
+
DWS - Accounts Payable Specialist - Senior Analyst,Manila,P90K,60 years,Senior
|
| 129 |
+
Senior Project Professional,Taguig,,3 years,Senior
|
| 130 |
+
Senior Crew - Mandaue (Visayas),Mandaue,,,Senior
|
| 131 |
+
"Production/Maint, Assembly/Test",Tanauan,87K,3 years,Senior
|
| 132 |
+
Senior Cashier / Accounts Monitoring Clerk,Pampanga,"PHP 58,000 - PHP 83,000",2-3 years,Senior
|
| 133 |
+
TRANSMISSION LINE AND SUBSTATION PROJECT SENIOR SPECIALIST TO SENIOR OFFICER (GOPS),Philippines,"PHP 55,000 - PHP 95,000",,Senior
|
| 134 |
+
Production Staff,Pasig,"PHP 75,000 - PHP 115,000",,Senior
|
| 135 |
+
Senior Staff Technician Equipment Maintenance,Cavite City,"PHP 85,000 - PHP 125,000",5 Years,Senior
|
| 136 |
+
Senior Crew - Iloilo (Visayas),Iloilo City,,,Senior
|
| 137 |
+
Customer Service Senior Manager,Taguig,,2-3 years,Senior
|
| 138 |
+
Senior Crew- Laguna (South Luzon),Calamba City,,,Senior
|
| 139 |
+
Senior Crew - Bulacan (North Luzon),Baliuag,"PHP 85,000 - PHP 125,000",2-3 years,Senior
|
| 140 |
+
Lubes Warehouseman (Mabini),Hybrid remote in Batangas City,,40 years,Senior
|
| 141 |
+
Senior Crew - Roxas (Visayas),Roxas City,,,Senior
|
| 142 |
+
Senior Operations Manager,Angeles,,At least 10 years,Senior
|
| 143 |
+
Senior Systems Administrator,+1 location,"PHP 55,000 - PHP 95,000",70 years,Senior
|
| 144 |
+
Senior Xero Bookkeeper - Work from Home (Philippines Based),Remote in Philippines,,2 years,Senior
|
| 145 |
+
Customer care collections Senior Rep,Quezon City,,,Senior
|
| 146 |
+
Senior Staff Technician Process,Cavite City,"PHP 60,000 - PHP 85,000",At least 1-3years,Senior
|
| 147 |
+
Senior Project Manager,Clark Freeport Zone,,,Senior
|
| 148 |
+
Regional Management Trainee,Manila,"PHP 80,000 - PHP 90,000",5 years,Senior
|
| 149 |
+
Operator I,Philippines,,2-3 years,Senior
|
| 150 |
+
Senior Bookkeeper,Remote in Quezon City,"PHP 75,000 - PHP 85,000",Minimum 5 years,Senior
|
| 151 |
+
Senior Crew - Pampanga (North Luzon),San Fernando,"PHP 85,000 - PHP 95,000",,Senior
|
| 152 |
+
Project Manager,Manila,,4 - 7 years,Project+Manager
|
| 153 |
+
IT Project Manager,Remote,PHP60KPHP60K-PHP60K,7-10 years,Project+Manager
|
| 154 |
+
Project Manager,Makati,,6-7 years,Project+Manager
|
| 155 |
+
Project Manager,Cebu,,,Project+Manager
|
| 156 |
+
Project Manager,Remote in Manila,"Php 75,000Php 82,000",14 years,Project+Manager
|
| 157 |
+
PROJECT MANAGER,Pasig,,,Project+Manager
|
| 158 |
+
Assistant Project Field Manager - CCPP-Philippines,Remote in Batangas City,,10 years,Project+Manager
|
| 159 |
+
Care Project Manager,Philippines,"Php 70,000 -Php 100,000Php 60,000 to -Php 100,000 ",,Project+Manager
|
| 160 |
+
Assistant Project Manager,Philippines,,,Project+Manager
|
| 161 |
+
Project Manager,Remote,,5 years,Project+Manager
|
| 162 |
+
Project Manager,Pasay,PHP70KPHP70K-PHP70K,,Project+Manager
|
| 163 |
+
Consultancy Project Manager,Makati,"PHP 75,000 - PHP 125,000",5 years,Project+Manager
|
| 164 |
+
Project Manager PMO,Remote in Muntinlupa,"PHP 75,000 - PHP 125,000",5 years,Project+Manager
|
| 165 |
+
Senior Project Manager,Clark Freeport Zone,,,Project+Manager
|
| 166 |
+
Associate Project Manager | Permanent WFH | Up to 100K,Remote in Manila,"Php 80,000 -Php 100,000Php 80,000 to -Php 100,000 ",,Project+Manager
|
| 167 |
+
Consultancy Project Manager,Makati,,5 years,Project+Manager
|
| 168 |
+
Project Manager,Makati,,,Project+Manager
|
| 169 |
+
Associate Project Manager | Permanent WFH | Up to 100K,Remote in Manila,"Php 80,000 -Php 100,000Php 80,000 to -Php 100,000 ",,Project+Manager
|
| 170 |
+
Web Project Manager,Pasong Tamo,,2 years,Project+Manager
|
| 171 |
+
Project Manager,Makati,"PHP 70,000 - PHP 95,000",,Project+Manager
|
| 172 |
+
Project Manager PMO,Remote in Muntinlupa,,5 years,Project+Manager
|
| 173 |
+
Construction Manager (project-based),Philippines,"PHP 80,000 - PHP 130,000",,Project+Manager
|
| 174 |
+
"Project Coordinator, Philippines",Philippines,,At least 3 years,Project+Manager
|
| 175 |
+
Project Manager - Training & Communication,Makati,,,Project+Manager
|
| 176 |
+
Project Manager (Via Verde Padre Garcia Batangas),Muntinlupa,,at least 4 years,Project+Manager
|
| 177 |
+
Trainee- Project Manager,Makati,"PHP 105,000 - PHP 145,000",,Project+Manager
|
| 178 |
+
Client Success Manager - /Project Management/ - WFH - 2 Headcounts,Remote in Manila,"PHP 70,000 - PHP 120,000",At least 2 years,Project+Manager
|
| 179 |
+
Project Manager | Digital Advertisement,Remote in Quezon City,"PHP 75,000 - PHP 125,000",3-5 years,Project+Manager
|
| 180 |
+
Project Coordinator,Cebu,,2 years,Project+Manager
|
| 181 |
+
Project Coordinator,Philippines,"PHP 85,000 - PHP 135,000",At least 3-5 years,Project+Manager
|
| 182 |
+
Consulting Project Associate,Remote in Manila,,2 years,Project+Manager
|
| 183 |
+
Project Manager,Davao City,"PHP 95,000 - PHP 145,000",,Project+Manager
|
| 184 |
+
Integrated Project Manager,Manila,"PHP 100,000 - PHP 150,000",At least 5 years,Project+Manager
|
| 185 |
+
Project Manager (Philippines),Philippines,,5-10 years,Project+Manager
|
| 186 |
+
Print Project Manager,Manila,,4 - 7 years,Project+Manager
|
| 187 |
+
Junior Project Manager,Philippines,,At least 3 years,Project+Manager
|
| 188 |
+
PROJECT MANAGER,Philippines,"PHP 105,000 - PHP 145,000",,Project+Manager
|
| 189 |
+
Project Manager,Mandaluyong,,,Project+Manager
|
| 190 |
+
TRANSMISSION LINE AND SUBSTATION PROJECT SENIOR SPECIALIST TO SENIOR OFFICER (GOPS),Philippines,"PHP 95,000 - PHP 145,000",At least 3 years,Project+Manager
|
| 191 |
+
PROJECT MANAGER,POEA - Overseas,"PHP 65,000 - PHP 95,000",,Project+Manager
|
| 192 |
+
PROJECT MANAGER | INFORMATION TECHNOLOFY | SB FINANCE | MAKATI,Makati,,,Project+Manager
|
| 193 |
+
Project Assistant,Manila,"P90,000 - P140,000",2 years,Project+Manager
|
| 194 |
+
HSE Manager (project-based),Philippines,,,Project+Manager
|
| 195 |
+
Project Manager - United 4,Quezon City,"PHP 75,000 - PHP 125,000",70 years,Project+Manager
|
| 196 |
+
Project Coordinator,Cotabato City,,,Project+Manager
|
| 197 |
+
Project Manager,Hybrid remote in Mandaluyong,"PHP 100,000 - PHP 150,000",40 years,Project+Manager
|
| 198 |
+
Project Engineer (Visayas) - Panay,Hybrid remote in Iloilo City,,3 years,Project+Manager
|
| 199 |
+
Project Manager,Bacolod,,3 years,Project+Manager
|
| 200 |
+
Atlassian Consultant & Project Manager,Makati,"P130,000",,Project+Manager
|
| 201 |
+
Program Manager / Project Manager,Remote in Philippines,,,Project+Manager
|
| 202 |
+
Project Manager (Solar),Mandaluyong,"PHP 80,000 - PHP 130,000",At least 3 years,Project+Manager
|
| 203 |
+
Project Manager,Fort Bonifacio,,5 years,Project+Manager
|
| 204 |
+
Project Coordinator,Cebu City,,At least 1 year,Project+Manager
|
| 205 |
+
Project Management Officer | IT,Philippines,"130,000K",At least 5 years,Project+Manager
|
| 206 |
+
Project Manager,Makati,,at least 8 years,Project+Manager
|
| 207 |
+
Project Manager,Philippines,,At least 1 year,Project+Manager
|
| 208 |
+
Project Manager,Manila,"Php125,000",At least 1-2 years,Project+Manager
|
| 209 |
+
Implementation Project Manager,Mandaluyong,,,Project+Manager
|
| 210 |
+
Project Manager,Manila,"PHP 100,000 - PHP 130,000",At least 2 years,Project+Manager
|
| 211 |
+
Project Manager,Mandaluyong,,,Project+Manager
|
| 212 |
+
Project Manager,Philippines,"PHP 95,000 - PHP 135,000",3-5 years,Project+Manager
|
| 213 |
+
Project Manager,Remote in Philippines,"PHP 100,000 - PHP 140,000",,Project+Manager
|
| 214 |
+
Project Manager,Taguig,,3 years,Project+Manager
|
| 215 |
+
Project Architect Manager,Pasay,"PHP 105,000 - PHP 145,000",At least 10 years,Project+Manager
|
| 216 |
+
Project Manager,Philippines,"Php75,000 ",3-5 years,Project+Manager
|
| 217 |
+
Project Manager,Philippines,"PHP70,000 - PHP120,000",,Project+Manager
|
| 218 |
+
Project Manager,Quezon City,,2 years,Project+Manager
|
| 219 |
+
FT PROJECT MANAGER,Philippines,"PHP 105,000 - PHP 145,000",,Project+Manager
|
| 220 |
+
Project Manager – PEGA,Philippines,,At least 5 years,Project+Manager
|
| 221 |
+
Project Manager,Makati,"PHP 75,000 - PHP 125,000",at least 10 years,Project+Manager
|
| 222 |
+
Project Coordinator,Cebu City,"PHP 80,000 - PHP 130,000",,Project+Manager
|
| 223 |
+
PROJECT / OPERATIONS MANAGER,Pasig,"PHP 100,000 - PHP 140,000",7 years,Project+Manager
|
| 224 |
+
PROJECT MANAGER (Customer Contact Group),Makati,,,Project+Manager
|
| 225 |
+
Project Engineer,Tanauan,"PHP 85,000 - PHP 120,000",3-5 years,Project+Manager
|
| 226 |
+
Sr. Project Manager,Hybrid remote in Manila,,5 years,Project+Manager
|
| 227 |
+
Customer Service Representative,Cebu City,PHP120KPHP120K-PHP120K,8 years,CTO
|
| 228 |
+
Customer Experience Assistant: Policy Changes,Remote in Cebu City,PHP130KPHP130K-PHP130K,3 years,CTO
|
| 229 |
+
Commercial Lines Assistant,Remote in Cebu City,PHP45KPHP45K-PHP45K,8 years,CTO
|
| 230 |
+
Executive Assistant,Remote in Cebu City,PHP30KPHP30K-PHP30K,8 years,CTO
|
| 231 |
+
CTO – Philippines – Regional Bank,Philippines,,10 years,CTO
|
| 232 |
+
Client Service Officer,Remote in Cebu City,PHP250KPHP250K-PHP250K,8 years,CTO
|
| 233 |
+
Sales Admin Support,Remote in Cebu City,PHP154KPHP154K-PHP154K,8 years,CTO
|
| 234 |
+
Global Campaign Manager - Employer Brand (Remote),+1 location,,5-10 years,CTO
|
| 235 |
+
Senior Executive Assistant,Remote in Cebu City,PHP130KPHP130K-PHP130K,25 years,CTO
|
| 236 |
+
Team Lead – Estimating Plan Prep,Cebu City,PHP170KPHP170K-PHP170K,2 years,CTO
|
| 237 |
+
Visual Media Ad Specialist,Remote in Cebu City,PHP150KPHP150K-PHP150K,At least 2 years,CTO
|
| 238 |
+
Web Developer,Remote in Cebu City,PHP180KPHP180K-PHP180K,At least 3 years,CTO
|
| 239 |
+
Head of Information Security,Cebu City,,7 years,CTO
|
| 240 |
+
Chief Transformation Officer,Philippines,,At least 10 years,CTO
|
| 241 |
+
Technical Engineer,Makati,,At least 3 year,CTO
|
| 242 |
+
Community Manager - Web3 Metaverse Gaming - Fully Remote - ph,Remote,,,CTO
|
| 243 |
+
IT Asset Administrator,Cebu City,PHP175KPHP175K-PHP175K,At least 5 year,CTO
|
| 244 |
+
HR Manager,Cebu City,PHP190KPHP190K-PHP190K,8 years,CTO
|
| 245 |
+
Head - Information Security,Remote in Philippines,,,CTO
|
| 246 |
+
Property Accountant,Remote in Cebu City,PHP135KPHP135K-PHP135K,30 years,CTO
|
| 247 |
+
Marketing Coordinator,Remote in Cebu City,PHP160KPHP160K-PHP160K,At least 2 years,CTO
|
| 248 |
+
Business Analyst,Philippines,,8 years,CTO
|
| 249 |
+
Senior Back-End Engineer,Remote in Central Luzon,PHP 150KPHP,7 years,CTO
|
| 250 |
+
Air Service Junior Associate,Taguig,,,CTO
|
| 251 |
+
Communications/PR Manager - Blockchain - Crypto - Remote,Remote in Manila,"PHP 80,000 - PHP 130,000",7 years,CTO
|
| 252 |
+
AC Manila - Cybersecurity DFIR Analyst,Pasig,,,CTO
|
| 253 |
+
Product Manager Philippines,Remote,,At least 2 years,CTO
|
| 254 |
+
Enterprise Account Manager,Taguig,,,CTO
|
| 255 |
+
Solutions Architect,Philippines,"PHP, ",5 years,CTO
|
| 256 |
+
AC Manila - Cybersecurity DFIR Senior Analyst,Pasig,PHP130KPHP130K-PHP130K,,CTO
|
| 257 |
+
AC Manila - Cybersecurity DFIR Senior Analyst,Pasig,,,CTO
|
| 258 |
+
Senior iOS Developer,Philippines,PHP100KPHP100K-PHP100K,8 years,CTO
|
| 259 |
+
AC Manila - Organizational Development Senior Manager,Pasig,,5 years,CTO
|
| 260 |
+
Software Architect (Remote),Remote in Cebu,,,CTO
|
| 261 |
+
Senior Property Accountant,Remote in Cebu City,PHP160KPHP160K-PHP160K,8 years,CTO
|
| 262 |
+
IOS Developer,Philippines,,8 years,CTO
|
| 263 |
+
Air Operations Junior Associate,Taguig,,,CTO
|
| 264 |
+
Content Creator/Copywriter - Blockchain - Crypto - Remote,Remote in Manila,PHP170KPHP170K-PHP170K,,CTO
|
| 265 |
+
Senior Software Development Manager,Taguig,,,CTO
|
| 266 |
+
IOS Developer (Senior),Philippines,,8 years,CTO
|
| 267 |
+
Head of Application Support,Manila,"PHP 85,000 - PHP 135,000",8 years,CTO
|
| 268 |
+
Senior Android Developer,Philippines,,8 years,CTO
|
| 269 |
+
Android Developer (Mid & Senior),Philippines,,8 years,CTO
|
| 270 |
+
Senior Android App Developer,Philippines,"Php 95,000 - PHP 150,000",8 years,CTO
|
| 271 |
+
SAP Sales and Distribution Consultation,Remote in National Capital Region,,5 years,CTO
|
| 272 |
+
Senior Designer Marketing (Blockchain),Remote in Manila,,3-4 years,CTO
|
| 273 |
+
Outbound Sales Lead Generator (BPO Company-Alabang),Alabang,,At least 2-3 years,CTO
|
| 274 |
+
Customer Success Manager,Remote,"PHP 95,000 - PHP 145,000",Minimum 5 - 10 years,CTO
|
| 275 |
+
Data Analyst and Systems Support (Permanent WFH),Remote,"Php160,000.00 ",,CTO
|
| 276 |
+
Software Quality Assurance Engineer,Remote in Mandaluyong,"Php120,000.00 -Php155,000.00 ",,CTO
|
| 277 |
+
Sales Executive,Remote in Mandaluyong,"Php360,000.00 ",At least 3-6 years,CTO
|
| 278 |
+
L2 Service Desk Engineer - WORK FROM HOME,Remote,,3-5 years,CTO
|
| 279 |
+
Chief Technology Officer (CTO) - Remote,Remote in Manila,"Php200,000.00 -Php450,000.00 ",at least 10 years,CTO
|
| 280 |
+
"Software Developer Trainees l 15,000 to 18,000",Angeles,Php150K,,CTO
|
| 281 |
+
Production/Manufacturing Assistant,Santa Rosa City,,,CTO
|
| 282 |
+
Program Manager,Remote in Makati,"Php85,000.00 -Php100,000.00 ",At least 7-10 years,CTO
|
| 283 |
+
Business Analyst,Remote in Mandaluyong,"Php136,000.00",5 year,CTO
|
| 284 |
+
IT Manager,Remote in Makati,"Php110,000.00 ",At least 7-10 years,CTO
|
| 285 |
+
Software Developer,Angeles,"Php150,000.00 -Php180,000.00 ",7 years,CTO
|
| 286 |
+
Web CTO,Remote in Manila,"Php100,000.00 -Php200,000.00 ",,CTO
|
| 287 |
+
Audit Assistant,Baguio,"Php120,000.00 ",6 year,CTO
|
| 288 |
+
IT Operations Manager,Makati,"Php180,000.00",5 years,CTO
|
| 289 |
+
Senior PHP Developer,Remote in Pampanga,"PHP 100,000.00 130,000.00
|
| 290 |
+
",,CTO
|
| 291 |
+
Data Analyst and Systems Support,Remote in Manila,,,CTO
|
| 292 |
+
Lead DevOps | Work From Home,Remote,"PHP, ",7 years,CTO
|
| 293 |
+
IT Project Manager,Remote in Makati,"Php80,000.00 -Php80,000.00 ",At least 5 years,CTO
|
| 294 |
+
IT Operations & Support Head (IT Manager),Taguig,"Php100,000.00 ",,CTO
|
| 295 |
+
iOS Swift Developer,Remote,,6 year,CTO
|
| 296 |
+
Sr. Data Engineer,+1 location,"Php150,000.00 ",,CTO
|
| 297 |
+
Secretary,Alabang,"Php140,000.00 ",7 year,CTO
|
| 298 |
+
Chief Technology Officer | Flexible Shift - Permanent Work From Home,Remote in Makati,"Php150,000.00 -Php200,000.00 ",5 years,CTO
|
| 299 |
+
Senior Web Developer,Remote in Manila,"Php80,000.00 -Php100,000.00 ",,CTO
|
| 300 |
+
HEAD OF THE SOFTWARE DEVELOPMENT TEAM,Taguig,"Php150,000.00 -Php200,000.00 ",7 years,CTO
|
| 301 |
+
Chief Technology Officer,Taguig,,,CTO
|
| 302 |
+
Chief Technology Officer (CTO),Makati,P160K,5 years,CTO
|
Models/NB_model_gen.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
Models/indeed.csv
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Experience,Job_Pos,New Salary
|
| 2 |
+
1.0,1,25000.0
|
| 3 |
+
1.5,1,30000.0
|
| 4 |
+
1.5,1,49804.27627052734
|
| 5 |
+
1.5,1,60000.0
|
| 6 |
+
1.5,1,40500.0
|
| 7 |
+
1.5,1,40000.0
|
| 8 |
+
1.8,1,32500.0
|
| 9 |
+
1.5,1,34500.0
|
| 10 |
+
1.8,1,36500.0
|
| 11 |
+
1.5,1,38500.0
|
| 12 |
+
1.8,1,49804.27627052734
|
| 13 |
+
1.0,1,42500.0
|
| 14 |
+
3.0,1,35000.0
|
| 15 |
+
1.0,1,30000.0
|
| 16 |
+
1.0,1,46500.0
|
| 17 |
+
5.0,1,48500.0
|
| 18 |
+
1.5,1,50500.0
|
| 19 |
+
2.5,1,52500.0
|
| 20 |
+
1.5,1,49804.27627052734
|
| 21 |
+
1.0,1,56500.0
|
| 22 |
+
1.0,1,58500.0
|
| 23 |
+
2.5,1,60500.0
|
| 24 |
+
1.8,1,49804.27627052734
|
| 25 |
+
1.0,1,64500.0
|
| 26 |
+
2.0,1,49804.27627052734
|
| 27 |
+
1.8,1,62500.0
|
| 28 |
+
1.5,1,49804.27627052734
|
| 29 |
+
2.0,1,54500.0
|
| 30 |
+
1.8,1,27000.0
|
| 31 |
+
2.5,1,49804.27627052734
|
| 32 |
+
1.5,1,32500.0
|
| 33 |
+
1.8,1,40000.0
|
| 34 |
+
1.5,1,49804.27627052734
|
| 35 |
+
2.0,1,30000.0
|
| 36 |
+
1.5,1,40500.0
|
| 37 |
+
1.5,1,36500.0
|
| 38 |
+
1.8,1,38500.0
|
| 39 |
+
1.5,1,42500.0
|
| 40 |
+
1.8,1,49804.27627052734
|
| 41 |
+
1.5,1,55000.0
|
| 42 |
+
1.8,1,40000.0
|
| 43 |
+
1.5,1,42500.0
|
| 44 |
+
1.5,1,49804.27627052734
|
| 45 |
+
2.0,1,36500.0
|
| 46 |
+
1.5,1,38500.0
|
| 47 |
+
2.0,1,49804.27627052734
|
| 48 |
+
1.8,1,49804.27627052734
|
| 49 |
+
1.5,1,35000.0
|
| 50 |
+
2.0,1,49804.27627052734
|
| 51 |
+
1.8,1,42500.0
|
| 52 |
+
1.0,1,49804.27627052734
|
| 53 |
+
1.8,1,49804.27627052734
|
| 54 |
+
1.5,1,45000.0
|
| 55 |
+
1.5,1,49804.27627052734
|
| 56 |
+
1.8,1,49804.27627052734
|
| 57 |
+
1.0,1,49804.27627052734
|
| 58 |
+
2.0,1,49804.27627052734
|
| 59 |
+
1.8,1,70000.0
|
| 60 |
+
2.0,1,49804.27627052734
|
| 61 |
+
2.0,1,45000.0
|
| 62 |
+
1.8,1,49804.27627052734
|
| 63 |
+
1.0,1,42000.0
|
| 64 |
+
1.8,1,49804.27627052734
|
| 65 |
+
3.0,1,70500.0
|
| 66 |
+
2.0,1,49804.27627052734
|
| 67 |
+
2.0,1,49804.27627052734
|
| 68 |
+
3.0,1,80000.0
|
| 69 |
+
1.0,1,49804.27627052734
|
| 70 |
+
2.0,1,49804.27627052734
|
| 71 |
+
2.0,1,75000.0
|
| 72 |
+
1.8,1,49804.27627052734
|
| 73 |
+
1.0,1,70500.0
|
| 74 |
+
1.8,1,49804.27627052734
|
| 75 |
+
1.0,1,70500.0
|
| 76 |
+
3.3,2,70000.0
|
| 77 |
+
3.3,2,75000.0
|
| 78 |
+
3.0,2,80000.0
|
| 79 |
+
3.3,2,85000.0
|
| 80 |
+
3.0,2,70000.0
|
| 81 |
+
2.5,2,95000.0
|
| 82 |
+
3.3,2,100000.0
|
| 83 |
+
3.0,2,105000.0
|
| 84 |
+
3.3,2,77853.59696090454
|
| 85 |
+
2.5,2,77853.59696090454
|
| 86 |
+
3.3,2,110000.0
|
| 87 |
+
2.0,2,77853.59696090454
|
| 88 |
+
5.0,2,70500.0
|
| 89 |
+
3.3,2,70000.0
|
| 90 |
+
2.0,2,77853.59696090454
|
| 91 |
+
3.3,2,95000.0
|
| 92 |
+
3.3,2,77853.59696090454
|
| 93 |
+
3.3,2,77853.59696090454
|
| 94 |
+
5.0,2,100000.0
|
| 95 |
+
3.3,2,105000.0
|
| 96 |
+
4.0,2,77853.59696090454
|
| 97 |
+
3.3,2,88000.0
|
| 98 |
+
3.0,2,70000.0
|
| 99 |
+
2.0,2,77853.59696090454
|
| 100 |
+
3.3,2,70500.0
|
| 101 |
+
3.0,2,67000.0
|
| 102 |
+
3.3,2,77853.59696090454
|
| 103 |
+
4.0,2,90000.0
|
| 104 |
+
2.0,2,75000.0
|
| 105 |
+
3.3,2,105000.0
|
| 106 |
+
3.0,2,77853.59696090454
|
| 107 |
+
3.3,2,77853.59696090454
|
| 108 |
+
3.0,2,95000.0
|
| 109 |
+
3.3,2,77853.59696090454
|
| 110 |
+
3.0,2,77853.59696090454
|
| 111 |
+
3.3,2,80000.0
|
| 112 |
+
10.0,2,76000.0
|
| 113 |
+
2.0,2,77853.59696090454
|
| 114 |
+
3.3,2,65000.0
|
| 115 |
+
2.5,2,77853.59696090454
|
| 116 |
+
10.0,2,70500.0
|
| 117 |
+
3.3,2,85000.0
|
| 118 |
+
3.0,2,110000.0
|
| 119 |
+
3.3,2,95000.0
|
| 120 |
+
2.5,2,100000.0
|
| 121 |
+
4.0,2,77853.59696090454
|
| 122 |
+
3.0,2,77853.59696090454
|
| 123 |
+
3.3,2,77853.59696090454
|
| 124 |
+
3.0,2,87000.0
|
| 125 |
+
2.5,2,70500.0
|
| 126 |
+
3.3,2,75000.0
|
| 127 |
+
3.3,2,95000.0
|
| 128 |
+
5.0,2,105000.0
|
| 129 |
+
3.3,2,77853.59696090454
|
| 130 |
+
2.5,2,77853.59696090454
|
| 131 |
+
3.3,2,77853.59696090454
|
| 132 |
+
2.5,2,105000.0
|
| 133 |
+
3.3,2,77853.59696090454
|
| 134 |
+
10.0,2,77853.59696090454
|
| 135 |
+
2.0,2,77853.59696090454
|
| 136 |
+
3.3,2,77853.59696090454
|
| 137 |
+
2.0,2,72500.0
|
| 138 |
+
3.3,2,77853.59696090454
|
| 139 |
+
5.0,2,85000.0
|
| 140 |
+
2.5,2,77853.59696090454
|
| 141 |
+
5.0,2,80000.0
|
| 142 |
+
3.3,2,90000.0
|
| 143 |
+
5.5,3,105902.91765128174
|
| 144 |
+
8.5,3,60000.0
|
| 145 |
+
6.5,3,105902.91765128174
|
| 146 |
+
4.8,3,105902.91765128174
|
| 147 |
+
14.0,3,44750.0
|
| 148 |
+
4.8,3,105902.91765128174
|
| 149 |
+
10.0,3,105902.91765128174
|
| 150 |
+
4.8,3,80000.0
|
| 151 |
+
4.8,3,105902.91765128174
|
| 152 |
+
5.0,3,105902.91765128174
|
| 153 |
+
4.8,3,70000.0
|
| 154 |
+
5.0,3,100000.0
|
| 155 |
+
5.0,3,100000.0
|
| 156 |
+
4.8,3,105902.91765128174
|
| 157 |
+
4.8,3,90000.0
|
| 158 |
+
5.0,3,105902.91765128174
|
| 159 |
+
4.8,3,105902.91765128174
|
| 160 |
+
4.8,3,90000.0
|
| 161 |
+
2.0,3,105902.91765128174
|
| 162 |
+
4.8,3,82500.0
|
| 163 |
+
5.0,3,105902.91765128174
|
| 164 |
+
4.8,3,105000.0
|
| 165 |
+
3.0,3,105902.91765128174
|
| 166 |
+
4.8,3,105902.91765128174
|
| 167 |
+
4.0,3,105902.91765128174
|
| 168 |
+
4.8,3,125000.0
|
| 169 |
+
2.0,3,95000.0
|
| 170 |
+
4.0,3,100000.0
|
| 171 |
+
2.0,3,105902.91765128174
|
| 172 |
+
4.0,3,110000.0
|
| 173 |
+
2.0,3,105902.91765128174
|
| 174 |
+
4.8,3,120000.0
|
| 175 |
+
5.0,3,125000.0
|
| 176 |
+
7.5,3,105902.91765128174
|
| 177 |
+
5.5,3,105902.91765128174
|
| 178 |
+
3.0,3,105902.91765128174
|
| 179 |
+
4.8,3,125000.0
|
| 180 |
+
4.8,3,105902.91765128174
|
| 181 |
+
3.0,3,120000.0
|
| 182 |
+
4.8,3,80000.0
|
| 183 |
+
4.8,3,105902.91765128174
|
| 184 |
+
2.0,3,115000.0
|
| 185 |
+
4.8,3,105902.91765128174
|
| 186 |
+
4.8,3,105902.91765128174
|
| 187 |
+
3.0,3,105902.91765128174
|
| 188 |
+
3.0,3,105902.91765128174
|
| 189 |
+
4.8,3,130000.0
|
| 190 |
+
4.8,3,105902.91765128174
|
| 191 |
+
3.0,3,105000.0
|
| 192 |
+
5.0,3,105902.91765128174
|
| 193 |
+
1.0,3,105902.91765128174
|
| 194 |
+
5.0,3,130.0
|
| 195 |
+
8.0,3,105902.91765128174
|
| 196 |
+
1.0,3,105902.91765128174
|
| 197 |
+
1.5,3,125000.0
|
| 198 |
+
4.8,3,105902.91765128174
|
| 199 |
+
2.0,3,115000.0
|
| 200 |
+
4.8,3,105902.91765128174
|
| 201 |
+
4.0,3,115000.0
|
| 202 |
+
4.8,3,120000.0
|
| 203 |
+
3.0,3,105902.91765128174
|
| 204 |
+
10.0,3,125000.0
|
| 205 |
+
4.0,3,75000.0
|
| 206 |
+
4.8,3,95000.0
|
| 207 |
+
2.0,3,105902.91765128174
|
| 208 |
+
4.8,3,125000.0
|
| 209 |
+
5.0,3,105902.91765128174
|
| 210 |
+
10.0,3,100000.0
|
| 211 |
+
4.8,3,105000.0
|
| 212 |
+
7.0,3,120000.0
|
| 213 |
+
4.8,3,105902.91765128174
|
| 214 |
+
4.0,3,102500.0
|
| 215 |
+
5.0,3,105902.91765128174
|
| 216 |
+
8.0,4,120000.0
|
| 217 |
+
3.0,4,130000.0
|
| 218 |
+
8.0,4,45000.0
|
| 219 |
+
8.0,4,30000.0
|
| 220 |
+
10.0,4,133952.23834165896
|
| 221 |
+
8.0,4,154000.0
|
| 222 |
+
7.5,4,133952.23834165896
|
| 223 |
+
2.0,4,170000.0
|
| 224 |
+
2.0,4,150000.0
|
| 225 |
+
3.0,4,180000.0
|
| 226 |
+
7.0,4,133952.23834165896
|
| 227 |
+
10.0,4,133952.23834165896
|
| 228 |
+
3.0,4,133952.23834165896
|
| 229 |
+
6.2,4,133952.23834165896
|
| 230 |
+
5.0,4,175000.0
|
| 231 |
+
8.0,4,190000.0
|
| 232 |
+
6.2,4,133952.23834165896
|
| 233 |
+
2.0,4,160000.0
|
| 234 |
+
8.0,4,133952.23834165896
|
| 235 |
+
7.0,4,150000.0
|
| 236 |
+
6.2,4,133952.23834165896
|
| 237 |
+
7.0,4,105000.0
|
| 238 |
+
6.2,4,133952.23834165896
|
| 239 |
+
2.0,4,133952.23834165896
|
| 240 |
+
6.2,4,133952.23834165896
|
| 241 |
+
5.0,4,133952.23834165896
|
| 242 |
+
6.2,4,130000.0
|
| 243 |
+
6.2,4,133952.23834165896
|
| 244 |
+
8.0,4,100000.0
|
| 245 |
+
5.0,4,133952.23834165896
|
| 246 |
+
6.2,4,133952.23834165896
|
| 247 |
+
8.0,4,160000.0
|
| 248 |
+
8.0,4,133952.23834165896
|
| 249 |
+
6.2,4,133952.23834165896
|
| 250 |
+
6.2,4,170000.0
|
| 251 |
+
6.2,4,133952.23834165896
|
| 252 |
+
8.0,4,133952.23834165896
|
| 253 |
+
8.0,4,110000.0
|
| 254 |
+
8.0,4,133952.23834165896
|
| 255 |
+
8.0,4,133952.23834165896
|
| 256 |
+
8.0,4,122500.0
|
| 257 |
+
5.0,4,133952.23834165896
|
| 258 |
+
3.5,4,133952.23834165896
|
| 259 |
+
2.5,4,133952.23834165896
|
| 260 |
+
7.5,4,120000.0
|
| 261 |
+
6.2,4,160000.0
|
| 262 |
+
6.2,4,137500.0
|
| 263 |
+
4.0,4,133952.23834165896
|
| 264 |
+
6.2,4,150000.0
|
| 265 |
+
6.2,4,133952.23834165896
|
| 266 |
+
8.5,4,92500.0
|
| 267 |
+
5.0,4,136000.0
|
| 268 |
+
8.5,4,110000.0
|
| 269 |
+
7.0,4,165000.0
|
| 270 |
+
6.2,4,150000.0
|
| 271 |
+
6.0,4,120000.0
|
| 272 |
+
5.0,4,180000.0
|
| 273 |
+
6.2,4,115000.0
|
| 274 |
+
6.2,4,133952.23834165896
|
| 275 |
+
7.0,4,133952.23834165896
|
| 276 |
+
5.0,4,80000.0
|
| 277 |
+
6.2,4,100000.0
|
| 278 |
+
6.0,4,133952.23834165896
|
| 279 |
+
6.2,4,150000.0
|
| 280 |
+
7.0,4,140000.0
|
| 281 |
+
5.0,4,175000.0
|
| 282 |
+
6.2,4,90000.0
|
| 283 |
+
7.0,4,175000.0
|
| 284 |
+
6.2,4,133952.23834165896
|
| 285 |
+
5.0,4,160000.0
|
Models/km_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c4de62a5b4d1edec0c8d722cda4c8b1c6b1f47c16ded3e96ab5fb5716d2ad427
|
| 3 |
+
size 595004
|
Models/km_model_generator.ipynb
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"attachments": {},
|
| 5 |
+
"cell_type": "markdown",
|
| 6 |
+
"metadata": {
|
| 7 |
+
"id": "uB6uMMVrfH_p"
|
| 8 |
+
},
|
| 9 |
+
"source": [
|
| 10 |
+
"# ***Activity 2***\n",
|
| 11 |
+
"\n",
|
| 12 |
+
"\n",
|
| 13 |
+
"> *Catanus, Jeziah Lois*\n",
|
| 14 |
+
"\n",
|
| 15 |
+
"> *Fagarita, Dave*\n",
|
| 16 |
+
"\n",
|
| 17 |
+
"> *Magno, Jannica Mae*\n",
|
| 18 |
+
"\n",
|
| 19 |
+
"> *Servandil, Jimuel*\n"
|
| 20 |
+
]
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"cell_type": "code",
|
| 24 |
+
"execution_count": 1,
|
| 25 |
+
"metadata": {
|
| 26 |
+
"id": "PD1hB3g9AppT"
|
| 27 |
+
},
|
| 28 |
+
"outputs": [],
|
| 29 |
+
"source": [
|
| 30 |
+
"import pandas as pd\n",
|
| 31 |
+
"import numpy as np\n",
|
| 32 |
+
"import matplotlib.pyplot as plt"
|
| 33 |
+
]
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"cell_type": "code",
|
| 37 |
+
"execution_count": 2,
|
| 38 |
+
"metadata": {
|
| 39 |
+
"id": "dX9CEupAAn9v"
|
| 40 |
+
},
|
| 41 |
+
"outputs": [],
|
| 42 |
+
"source": [
|
| 43 |
+
" # Load the dataset\n",
|
| 44 |
+
"df = pd.read_csv('indeed.csv')"
|
| 45 |
+
]
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"attachments": {},
|
| 49 |
+
"cell_type": "markdown",
|
| 50 |
+
"metadata": {
|
| 51 |
+
"id": "bkxJeIfNfVUi"
|
| 52 |
+
},
|
| 53 |
+
"source": [
|
| 54 |
+
"# **K-Means**"
|
| 55 |
+
]
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"cell_type": "code",
|
| 59 |
+
"execution_count": 3,
|
| 60 |
+
"metadata": {
|
| 61 |
+
"colab": {
|
| 62 |
+
"base_uri": "https://localhost:8080/"
|
| 63 |
+
},
|
| 64 |
+
"id": "DbrYBVfBS-4H",
|
| 65 |
+
"outputId": "42bf8aaf-c357-4d4c-d34f-10a23d42e811"
|
| 66 |
+
},
|
| 67 |
+
"outputs": [
|
| 68 |
+
{
|
| 69 |
+
"name": "stdout",
|
| 70 |
+
"output_type": "stream",
|
| 71 |
+
"text": [
|
| 72 |
+
"The average silhouette_score is : 0.6621242593156673\n"
|
| 73 |
+
]
|
| 74 |
+
}
|
| 75 |
+
],
|
| 76 |
+
"source": [
|
| 77 |
+
"from sklearn.metrics import silhouette_score\n",
|
| 78 |
+
"import numpy as np\n",
|
| 79 |
+
"import pickle\n",
|
| 80 |
+
"\n",
|
| 81 |
+
"# Define the k-means clustering algorithm\n",
|
| 82 |
+
"def k_means(data, k, max_iter):\n",
|
| 83 |
+
" # Randomly initialize k centroids\n",
|
| 84 |
+
" centroids = data.sample(n=k, random_state=42)\n",
|
| 85 |
+
" centroids.index = range(k)\n",
|
| 86 |
+
"\n",
|
| 87 |
+
" # Initialize a dictionary to store the cluster assignments\n",
|
| 88 |
+
" clusters = {}\n",
|
| 89 |
+
"\n",
|
| 90 |
+
" # Run the k-means algorithm for the specified number of iterations\n",
|
| 91 |
+
" for i in range(max_iter):\n",
|
| 92 |
+
" # Assign each data point to the nearest centroid\n",
|
| 93 |
+
" for j in range(len(data)):\n",
|
| 94 |
+
" distances = []\n",
|
| 95 |
+
" for c in centroids.index:\n",
|
| 96 |
+
" # Calculate the distances using Euclidean distance metric\n",
|
| 97 |
+
" distances.append(np.sqrt(((data.iloc[j] - centroids.loc[c])**2).sum()))\n",
|
| 98 |
+
" cluster = np.argmin(distances)\n",
|
| 99 |
+
" if cluster not in clusters:\n",
|
| 100 |
+
" clusters[cluster] = []\n",
|
| 101 |
+
" clusters[cluster].append(j)\n",
|
| 102 |
+
"\n",
|
| 103 |
+
" # Recalculate the centroids\n",
|
| 104 |
+
" for c in clusters:\n",
|
| 105 |
+
" centroids.loc[c] = data.iloc[clusters[c]].mean()\n",
|
| 106 |
+
"\n",
|
| 107 |
+
" # Create a list of cluster assignments for each data point\n",
|
| 108 |
+
" labels = np.zeros(len(data))\n",
|
| 109 |
+
" for c in clusters:\n",
|
| 110 |
+
" for i in clusters[c]:\n",
|
| 111 |
+
" labels[i] = c\n",
|
| 112 |
+
" \n",
|
| 113 |
+
" # Calculate the silhouette score for evaluation\n",
|
| 114 |
+
" silhouette_avg = silhouette_score(data, labels)\n",
|
| 115 |
+
" print(\"The average silhouette_score is :\", silhouette_avg)\n",
|
| 116 |
+
" \n",
|
| 117 |
+
" # Return the cluster assignments and centroids\n",
|
| 118 |
+
" return clusters, centroids, silhouette_avg\n",
|
| 119 |
+
"\n",
|
| 120 |
+
"# Run k-means clustering on the iris dataset with k=3\n",
|
| 121 |
+
"clusters, centroids, silhouette_avg = k_means(df.drop('Job_Pos', axis=1), k=4, max_iter=100)\n"
|
| 122 |
+
]
|
| 123 |
+
},
|
| 124 |
+
{
|
| 125 |
+
"attachments": {},
|
| 126 |
+
"cell_type": "markdown",
|
| 127 |
+
"metadata": {
|
| 128 |
+
"id": "L6Ish1xRfiDa"
|
| 129 |
+
},
|
| 130 |
+
"source": [
|
| 131 |
+
"# **Visualization**"
|
| 132 |
+
]
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"cell_type": "code",
|
| 136 |
+
"execution_count": 4,
|
| 137 |
+
"metadata": {},
|
| 138 |
+
"outputs": [
|
| 139 |
+
{
|
| 140 |
+
"data": {
|
| 141 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAHHCAYAAACWQK1nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACBMElEQVR4nO3deVxUVf8H8M+AMiCyubAlCu47uOSAKyaKS6VZuWS5ppVa7imWW5agPpaWpmlPav0yyx41UzMRRU0BV9wzNdRSFjMBRWU9vz+IGwMD3IE7K5/36zUvnXvPnPu9y8z9cs+556qEEAJEREREVCE2pg6AiIiIyBowqSIiIiJSAJMqIiIiIgUwqSIiIiJSAJMqIiIiIgUwqSIiIiJSAJMqIiIiIgUwqSIiIiJSAJMqIiIiIgUwqSIi+Pr6YuTIkaYOwyRGjhwJX19fgy7D19cXTz/9tEGXoSR9tsn8+fOhUqkMGxCRhWBSRWTFrl27htdeew3169eHvb09nJ2d0alTJ6xYsQKPHj0ySgwPHz7E/PnzER0dbZTlGUpwcDBatmxpkmWrVCrpZWNjA29vb/Tq1cto29Ra9iGRoVUxdQBEZBi7du3Ciy++CLVajeHDh6Nly5bIysrCL7/8ghkzZuDChQtYu3atweN4+PAhFixYACA/MaHy6dmzJ4YPHw4hBBISEvDpp5/iqaeewq5du9CnTx9Fl7Vu3Trk5eVJ70vbh++++y5mzZql6PKJLBWTKiIrlJCQgCFDhqBevXrYv38/vLy8pHkTJkzA1atXsWvXLhNGWHEZGRlwdHQ0dRhG07hxY7z88svS++eeew6tW7fG8uXLFU+qqlatKrtslSpVUKUKTyVEAJv/iKzSkiVL8ODBA/z3v//VSqgKNGzYEJMmTSrx8yX1k9mwYQNUKhWuX78uTTtx4gRCQ0NRq1YtODg4wM/PD6NHjwYAXL9+HbVr1wYALFiwQGrCmj9/vvT5X3/9FS+88AJq1KgBe3t7tG/fHjt27NC53IMHD2L8+PFwd3dHnTp1pPk//fQTunTpAkdHRzg5OaFfv364cOFCsfi3b9+Oli1bwt7eHi1btsS2bdtK3AZy5OTkYOHChWjQoAHUajV8fX0xe/ZsZGZm6iy/d+9eBAQEwN7eHs2bN8fWrVvLvexWrVqhVq1aSEhIkKbt379f2g6urq7o378/Ll26pPW5+/fvY/LkyfD19YVarYa7uzt69uyJU6dOSWUK96kqax/qOlbkbpeCvma//PILOnToAHt7e9SvXx9ffvmlVrns7GwsWLAAjRo1gr29PWrWrInOnTsjMjKy3NuPyBCYVBFZoR9//BH169dHx44dDbqclJQU9OrVC9evX8esWbPwySefYNiwYYiNjQUA1K5dG6tXrwaQf2Xlq6++wldffYWBAwcCAC5cuIDAwEBcunQJs2bNwrJly+Do6IgBAwboTHjGjx+PixcvYu7cuVKT01dffYV+/fqhevXqWLx4MebMmYOLFy+ic+fOWsnf3r178fzzz0OlUiE8PBwDBgzAqFGjcOLEiXKv/6uvvoq5c+eibdu2+Oijj9CtWzeEh4djyJAhxcpeuXIFgwcPRp8+fRAeHo4qVargxRdfLHdicO/ePdy7dw81a9YEAOzbtw+hoaFISUnB/PnzMXXqVBw9ehSdOnXS2g6vv/46Vq9ejeeffx6ffvoppk+fDgcHh2LJV4Gy9mFFt8vVq1fxwgsvoGfPnli2bBnc3NwwcuRIraR4/vz5WLBgAbp3746VK1finXfeQd26dbUSQSKzIIjIqqSlpQkAon///rI/U69ePTFixAjp/bx584Sun4f169cLACIhIUEIIcS2bdsEAHH8+PES675z544AIObNm1dsXo8ePUSrVq3E48ePpWl5eXmiY8eOolGjRsWW27lzZ5GTkyNNv3//vnB1dRVjx47VqjcpKUm4uLhoTQ8ICBBeXl4iNTVVmrZ3714BQNSrV6/E+At069ZNtGjRQnofHx8vAIhXX31Vq9z06dMFALF//35pWr169QQA8b///U+alpaWJry8vESbNm3KXDYAMWbMGHHnzh2RkpIi4uLiRI8ePQQAsWzZMmn93N3dxd27d6XPnTlzRtjY2Ijhw4dL01xcXMSECRNKXd6IESO0tklp+7DosVKe7XLo0CFpWkpKilCr1WLatGnSNH9/f9GvX79SYyYyB7xSRWRl0tPTAQBOTk4GX5arqysAYOfOncjOztbrs3///Tf279+PQYMG4f79+/jrr7/w119/4e7duwgNDcWVK1dw69Ytrc+MHTsWtra20vvIyEikpqZi6NCh0uf/+usv2NraQqPR4MCBAwCAxMRExMfHY8SIEXBxcZE+37NnTzRv3rxc6757924AwNSpU7WmT5s2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",
|
| 142 |
+
"text/plain": [
|
| 143 |
+
"<Figure size 640x480 with 1 Axes>"
|
| 144 |
+
]
|
| 145 |
+
},
|
| 146 |
+
"metadata": {},
|
| 147 |
+
"output_type": "display_data"
|
| 148 |
+
}
|
| 149 |
+
],
|
| 150 |
+
"source": [
|
| 151 |
+
"fig, ax = plt.subplots()\n",
|
| 152 |
+
"colors = ['r', 'g', 'b', 'y']\n",
|
| 153 |
+
"labels = ['Junior', 'Senior', 'Project Manager', 'CTO']\n",
|
| 154 |
+
"for i, c in enumerate(clusters):\n",
|
| 155 |
+
" ax.scatter(df.loc[clusters[c], 'Experience'], df.loc[clusters[c], 'New Salary'], color=colors[i], label=labels[i])\n",
|
| 156 |
+
"ax.scatter(centroids['Experience'], centroids['New Salary'], marker='x', color='k', s=100, linewidth=2, label='Centroids')\n",
|
| 157 |
+
"ax.set_xlabel('Experience')\n",
|
| 158 |
+
"ax.set_ylabel('New Salary')\n",
|
| 159 |
+
"ax.set_title('Clustered Job Positions')\n",
|
| 160 |
+
"ax.legend()\n",
|
| 161 |
+
"\n",
|
| 162 |
+
"# save the figure object to a pickle file\n",
|
| 163 |
+
"with open('km_model.pkl', 'wb') as f:\n",
|
| 164 |
+
" pickle.dump(fig, f)\n"
|
| 165 |
+
]
|
| 166 |
+
},
|
| 167 |
+
{
|
| 168 |
+
"cell_type": "code",
|
| 169 |
+
"execution_count": 5,
|
| 170 |
+
"metadata": {},
|
| 171 |
+
"outputs": [
|
| 172 |
+
{
|
| 173 |
+
"data": {
|
| 174 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAHHCAYAAACWQK1nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACBMElEQVR4nO3deVxUVf8H8M+AMiCyubAlCu47uOSAKyaKS6VZuWS5ppVa7imWW5agPpaWpmlPav0yyx41UzMRRU0BV9wzNdRSFjMBRWU9vz+IGwMD3IE7K5/36zUvnXvPnPu9y8z9cs+556qEEAJEREREVCE2pg6AiIiIyBowqSIiIiJSAJMqIiIiIgUwqSIiIiJSAJMqIiIiIgUwqSIiIiJSAJMqIiIiIgUwqSIiIiJSAJMqIiIiIgUwqSIi+Pr6YuTIkaYOwyRGjhwJX19fgy7D19cXTz/9tEGXoSR9tsn8+fOhUqkMGxCRhWBSRWTFrl27htdeew3169eHvb09nJ2d0alTJ6xYsQKPHj0ySgwPHz7E/PnzER0dbZTlGUpwcDBatmxpkmWrVCrpZWNjA29vb/Tq1cto29Ra9iGRoVUxdQBEZBi7du3Ciy++CLVajeHDh6Nly5bIysrCL7/8ghkzZuDChQtYu3atweN4+PAhFixYACA/MaHy6dmzJ4YPHw4hBBISEvDpp5/iqaeewq5du9CnTx9Fl7Vu3Trk5eVJ70vbh++++y5mzZql6PKJLBWTKiIrlJCQgCFDhqBevXrYv38/vLy8pHkTJkzA1atXsWvXLhNGWHEZGRlwdHQ0dRhG07hxY7z88svS++eeew6tW7fG8uXLFU+qqlatKrtslSpVUKUKTyVEAJv/iKzSkiVL8ODBA/z3v//VSqgKNGzYEJMmTSrx8yX1k9mwYQNUKhWuX78uTTtx4gRCQ0NRq1YtODg4wM/PD6NHjwYAXL9+HbVr1wYALFiwQGrCmj9/vvT5X3/9FS+88AJq1KgBe3t7tG/fHjt27NC53IMHD2L8+PFwd3dHnTp1pPk//fQTunTpAkdHRzg5OaFfv364cOFCsfi3b9+Oli1bwt7eHi1btsS2bdtK3AZy5OTkYOHChWjQoAHUajV8fX0xe/ZsZGZm6iy/d+9eBAQEwN7eHs2bN8fWrVvLvexWrVqhVq1aSEhIkKbt379f2g6urq7o378/Ll26pPW5+/fvY/LkyfD19YVarYa7uzt69uyJU6dOSWUK96kqax/qOlbkbpeCvma//PILOnToAHt7e9SvXx9ffvmlVrns7GwsWLAAjRo1gr29PWrWrInOnTsjMjKy3NuPyBCYVBFZoR9//BH169dHx44dDbqclJQU9OrVC9evX8esWbPwySefYNiwYYiNjQUA1K5dG6tXrwaQf2Xlq6++wldffYWBAwcCAC5cuIDAwEBcunQJs2bNwrJly+Do6IgBAwboTHjGjx+PixcvYu7cuVKT01dffYV+/fqhevXqWLx4MebMmYOLFy+ic+fOWsnf3r178fzzz0OlUiE8PBwDBgzAqFGjcOLEiXKv/6uvvoq5c+eibdu2+Oijj9CtWzeEh4djyJAhxcpeuXIFgwcPRp8+fRAeHo4qVargxRdfLHdicO/ePdy7dw81a9YEAOzbtw+hoaFISUnB/PnzMXXqVBw9ehSdOnXS2g6vv/46Vq9ejeeffx6ffvoppk+fDgcHh2LJV4Gy9mFFt8vVq1fxwgsvoGfPnli2bBnc3NwwcuRIraR4/vz5WLBgAbp3746VK1finXfeQd26dbUSQSKzIIjIqqSlpQkAon///rI/U69ePTFixAjp/bx584Sun4f169cLACIhIUEIIcS2bdsEAHH8+PES675z544AIObNm1dsXo8ePUSrVq3E48ePpWl5eXmiY8eOolGjRsWW27lzZ5GTkyNNv3//vnB1dRVjx47VqjcpKUm4uLhoTQ8ICBBeXl4iNTVVmrZ3714BQNSrV6/E+At069ZNtGjRQnofHx8vAIhXX31Vq9z06dMFALF//35pWr169QQA8b///U+alpaWJry8vESbNm3KXDYAMWbMGHHnzh2RkpIi4uLiRI8ePQQAsWzZMmn93N3dxd27d6XPnTlzRtjY2Ijhw4dL01xcXMSECRNKXd6IESO0tklp+7DosVKe7XLo0CFpWkpKilCr1WLatGnSNH9/f9GvX79SYyYyB7xSRWRl0tPTAQBOTk4GX5arqysAYOfOncjOztbrs3///Tf279+PQYMG4f79+/jrr7/w119/4e7duwgNDcWVK1dw69Ytrc+MHTsWtra20vvIyEikpqZi6NCh0uf/+usv2NraQqPR4MCBAwCAxMRExMfHY8SIEXBxcZE+37NnTzRv3rxc6757924AwNSpU7WmT5s2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",
|
| 175 |
+
"text/plain": [
|
| 176 |
+
"<Figure size 640x480 with 1 Axes>"
|
| 177 |
+
]
|
| 178 |
+
},
|
| 179 |
+
"metadata": {},
|
| 180 |
+
"output_type": "display_data"
|
| 181 |
+
}
|
| 182 |
+
],
|
| 183 |
+
"source": [
|
| 184 |
+
"# load the figure from the pickle file\n",
|
| 185 |
+
"with open('km_model.pkl', 'rb') as f:\n",
|
| 186 |
+
" fig = pickle.load(f)\n",
|
| 187 |
+
"\n",
|
| 188 |
+
"# save the figure as an image file\n",
|
| 189 |
+
"fig.savefig('../static/images/cluster.png', format='png')"
|
| 190 |
+
]
|
| 191 |
+
}
|
| 192 |
+
],
|
| 193 |
+
"metadata": {
|
| 194 |
+
"colab": {
|
| 195 |
+
"provenance": []
|
| 196 |
+
},
|
| 197 |
+
"interpreter": {
|
| 198 |
+
"hash": "e9abd7bf17300ee9df567d8d9580282ee75f9a695f2d1fb59e9523387a62f2ed"
|
| 199 |
+
},
|
| 200 |
+
"kernelspec": {
|
| 201 |
+
"display_name": "Python 3.11.2 64-bit",
|
| 202 |
+
"language": "python",
|
| 203 |
+
"name": "python3"
|
| 204 |
+
},
|
| 205 |
+
"language_info": {
|
| 206 |
+
"codemirror_mode": {
|
| 207 |
+
"name": "ipython",
|
| 208 |
+
"version": 3
|
| 209 |
+
},
|
| 210 |
+
"file_extension": ".py",
|
| 211 |
+
"mimetype": "text/x-python",
|
| 212 |
+
"name": "python",
|
| 213 |
+
"nbconvert_exporter": "python",
|
| 214 |
+
"pygments_lexer": "ipython3",
|
| 215 |
+
"version": "3.11.2"
|
| 216 |
+
}
|
| 217 |
+
},
|
| 218 |
+
"nbformat": 4,
|
| 219 |
+
"nbformat_minor": 0
|
| 220 |
+
}
|
Models/knn_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:60c2ba5b1b1610f028c58bd569d89f9256848a71bcd893dffb726dd71f54bd5a
|
| 3 |
+
size 7153
|
Models/knn_model_gen.ipynb
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {
|
| 6 |
+
"id": "UQK1MhvbUiO1"
|
| 7 |
+
},
|
| 8 |
+
"source": [
|
| 9 |
+
"#KNN on the Iris Dataset"
|
| 10 |
+
]
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"cell_type": "code",
|
| 14 |
+
"execution_count": 10,
|
| 15 |
+
"metadata": {
|
| 16 |
+
"id": "CtfYG2yrQ0i-"
|
| 17 |
+
},
|
| 18 |
+
"outputs": [],
|
| 19 |
+
"source": [
|
| 20 |
+
"from sklearn import neighbors\n",
|
| 21 |
+
"from sklearn.datasets import load_iris\n",
|
| 22 |
+
"from sklearn.metrics import confusion_matrix\n",
|
| 23 |
+
"from sklearn.metrics import f1_score\n",
|
| 24 |
+
"from sklearn.metrics import accuracy_score\n",
|
| 25 |
+
"import pandas as pd"
|
| 26 |
+
]
|
| 27 |
+
},
|
| 28 |
+
{
|
| 29 |
+
"cell_type": "code",
|
| 30 |
+
"execution_count": 11,
|
| 31 |
+
"metadata": {
|
| 32 |
+
"colab": {
|
| 33 |
+
"base_uri": "https://localhost:8080/"
|
| 34 |
+
},
|
| 35 |
+
"id": "BznYCXGPQ4dA",
|
| 36 |
+
"outputId": "4b30e9e8-2774-4870-9ff3-4f680d12b7c2"
|
| 37 |
+
},
|
| 38 |
+
"outputs": [],
|
| 39 |
+
"source": [
|
| 40 |
+
" # Load the dataset\n",
|
| 41 |
+
"data = pd.read_csv('indeed.csv')\n",
|
| 42 |
+
"\n",
|
| 43 |
+
"X = data.iloc[:, [0, 2]].values\n",
|
| 44 |
+
"y = data.iloc[:, 1].values"
|
| 45 |
+
]
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"cell_type": "code",
|
| 49 |
+
"execution_count": 12,
|
| 50 |
+
"metadata": {
|
| 51 |
+
"id": "vICs_orGRMDG"
|
| 52 |
+
},
|
| 53 |
+
"outputs": [],
|
| 54 |
+
"source": [
|
| 55 |
+
"# Split data into training and testing sets\n",
|
| 56 |
+
"from sklearn.model_selection import train_test_split\n",
|
| 57 |
+
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)"
|
| 58 |
+
]
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"cell_type": "code",
|
| 62 |
+
"execution_count": 13,
|
| 63 |
+
"metadata": {
|
| 64 |
+
"id": "ah1zLnrYRONr"
|
| 65 |
+
},
|
| 66 |
+
"outputs": [],
|
| 67 |
+
"source": [
|
| 68 |
+
"# Number of nearest neighbors\n",
|
| 69 |
+
"num_neighbors = 12\n",
|
| 70 |
+
"# Step size of the visualization grid\n",
|
| 71 |
+
"step_size = 0.01\n",
|
| 72 |
+
"# Create a K Nearest Neighbors classifier model\n",
|
| 73 |
+
"clfKNN = neighbors.KNeighborsClassifier()\n",
|
| 74 |
+
"\n",
|
| 75 |
+
"clfKNN.fit(X_train, y_train)\n",
|
| 76 |
+
"\n",
|
| 77 |
+
"y_test_pred = clfKNN.predict(X_test)"
|
| 78 |
+
]
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"cell_type": "code",
|
| 82 |
+
"execution_count": 14,
|
| 83 |
+
"metadata": {
|
| 84 |
+
"colab": {
|
| 85 |
+
"base_uri": "https://localhost:8080/"
|
| 86 |
+
},
|
| 87 |
+
"id": "wBfBd6dtSzIn",
|
| 88 |
+
"outputId": "89876b62-9471-4474-8d15-e60732565836"
|
| 89 |
+
},
|
| 90 |
+
"outputs": [
|
| 91 |
+
{
|
| 92 |
+
"name": "stdout",
|
| 93 |
+
"output_type": "stream",
|
| 94 |
+
"text": [
|
| 95 |
+
"f1_score: 0.8139534883720931\n"
|
| 96 |
+
]
|
| 97 |
+
}
|
| 98 |
+
],
|
| 99 |
+
"source": [
|
| 100 |
+
"f1_score = f1_score(y_test, y_test_pred, average='micro')\n",
|
| 101 |
+
"print(f'f1_score: {f1_score}')"
|
| 102 |
+
]
|
| 103 |
+
},
|
| 104 |
+
{
|
| 105 |
+
"cell_type": "code",
|
| 106 |
+
"execution_count": 15,
|
| 107 |
+
"metadata": {
|
| 108 |
+
"colab": {
|
| 109 |
+
"base_uri": "https://localhost:8080/"
|
| 110 |
+
},
|
| 111 |
+
"id": "E4qA4gpUNH9X",
|
| 112 |
+
"outputId": "fbc9e502-a49e-422a-8863-86548187bfc2"
|
| 113 |
+
},
|
| 114 |
+
"outputs": [
|
| 115 |
+
{
|
| 116 |
+
"name": "stdout",
|
| 117 |
+
"output_type": "stream",
|
| 118 |
+
"text": [
|
| 119 |
+
"Accuracy: 81.3953488372093\n"
|
| 120 |
+
]
|
| 121 |
+
}
|
| 122 |
+
],
|
| 123 |
+
"source": [
|
| 124 |
+
"# Evaluate the model on the test data\n",
|
| 125 |
+
"accuracy = 100 * accuracy_score(y_test, y_test_pred)\n",
|
| 126 |
+
"print(f'Accuracy: {accuracy}')"
|
| 127 |
+
]
|
| 128 |
+
},
|
| 129 |
+
{
|
| 130 |
+
"cell_type": "code",
|
| 131 |
+
"execution_count": 16,
|
| 132 |
+
"metadata": {
|
| 133 |
+
"colab": {
|
| 134 |
+
"base_uri": "https://localhost:8080/"
|
| 135 |
+
},
|
| 136 |
+
"id": "p0dObkPrSlEZ",
|
| 137 |
+
"outputId": "06d843c3-94ff-486c-d4c6-7a411edb0e40"
|
| 138 |
+
},
|
| 139 |
+
"outputs": [
|
| 140 |
+
{
|
| 141 |
+
"name": "stdout",
|
| 142 |
+
"output_type": "stream",
|
| 143 |
+
"text": [
|
| 144 |
+
"[[17 2 0 0]\n",
|
| 145 |
+
" [ 0 14 5 0]\n",
|
| 146 |
+
" [ 0 4 18 1]\n",
|
| 147 |
+
" [ 1 1 2 21]]\n"
|
| 148 |
+
]
|
| 149 |
+
}
|
| 150 |
+
],
|
| 151 |
+
"source": [
|
| 152 |
+
"cmKNN = confusion_matrix(y_test, y_test_pred)\n",
|
| 153 |
+
"print(cmKNN)"
|
| 154 |
+
]
|
| 155 |
+
},
|
| 156 |
+
{
|
| 157 |
+
"cell_type": "code",
|
| 158 |
+
"execution_count": 19,
|
| 159 |
+
"metadata": {},
|
| 160 |
+
"outputs": [
|
| 161 |
+
{
|
| 162 |
+
"name": "stdout",
|
| 163 |
+
"output_type": "stream",
|
| 164 |
+
"text": [
|
| 165 |
+
"[1]\n"
|
| 166 |
+
]
|
| 167 |
+
}
|
| 168 |
+
],
|
| 169 |
+
"source": [
|
| 170 |
+
"import pickle\n",
|
| 171 |
+
"\n",
|
| 172 |
+
"pickle.dump(clfKNN, open('knn_model.pkl', 'wb'))\n",
|
| 173 |
+
"\n",
|
| 174 |
+
"knn_model_dump = pickle.load(open('knn_model.pkl', 'rb'))\n",
|
| 175 |
+
"\n",
|
| 176 |
+
"print(clfKNN.predict([[1.2, 100]]))"
|
| 177 |
+
]
|
| 178 |
+
}
|
| 179 |
+
],
|
| 180 |
+
"metadata": {
|
| 181 |
+
"colab": {
|
| 182 |
+
"provenance": []
|
| 183 |
+
},
|
| 184 |
+
"interpreter": {
|
| 185 |
+
"hash": "e9abd7bf17300ee9df567d8d9580282ee75f9a695f2d1fb59e9523387a62f2ed"
|
| 186 |
+
},
|
| 187 |
+
"kernelspec": {
|
| 188 |
+
"display_name": "Python 3.11.2 64-bit",
|
| 189 |
+
"language": "python",
|
| 190 |
+
"name": "python3"
|
| 191 |
+
},
|
| 192 |
+
"language_info": {
|
| 193 |
+
"codemirror_mode": {
|
| 194 |
+
"name": "ipython",
|
| 195 |
+
"version": 3
|
| 196 |
+
},
|
| 197 |
+
"file_extension": ".py",
|
| 198 |
+
"mimetype": "text/x-python",
|
| 199 |
+
"name": "python",
|
| 200 |
+
"nbconvert_exporter": "python",
|
| 201 |
+
"pygments_lexer": "ipython3",
|
| 202 |
+
"version": "3.11.2"
|
| 203 |
+
}
|
| 204 |
+
},
|
| 205 |
+
"nbformat": 4,
|
| 206 |
+
"nbformat_minor": 0
|
| 207 |
+
}
|
Models/linreg_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:24b6f9f0ed279298f30aa701e71eaa11b7ff670d088a53932f65de52d4c1aa9f
|
| 3 |
+
size 445
|
Models/linreg_model_gen.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
Models/nbB_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cca7539157a3ea721c45ffafa0d62c152149c43ab06391b3e023dd13f17f1c71
|
| 3 |
+
size 886
|
Models/nbG_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ba783ac46b66fc1206d940e9188f68915556d70478679f31344b1d8cdd633295
|
| 3 |
+
size 866
|
Models/nbM_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:90052f7a17c503036130ac744eacb5112ab890757499f2d178fa4a9f97943232
|
| 3 |
+
size 923
|
README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Salary Prediction
|
| 3 |
+
emoji: 🐢
|
| 4 |
+
colorFrom: pink
|
| 5 |
+
colorTo: green
|
| 6 |
+
sdk: docker
|
| 7 |
+
pinned: false
|
| 8 |
+
license: unknown
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
algos.html
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="utf-8 " />
|
| 6 |
+
<title>Classifiers</title>
|
| 7 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='main.css')}}">
|
| 8 |
+
<link href="https://fonts.googleapis.com " rel="preconnect " />
|
| 9 |
+
<link href="https://fonts.gstatic.com " rel="preconnect " crossorigin="anonymous " />
|
| 10 |
+
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js " type="text/javascript "></script>
|
| 11 |
+
<script type="text/javascript ">
|
| 12 |
+
WebFont.load({
|
| 13 |
+
google: {
|
| 14 |
+
families: ["Orbitron:regular,500,600,700,800,900 ", "Noto Sans Tamil:100,200,300,regular,500,600,700,800,900 ", "Inter:100,200,300,regular,500,600,700,800,900 "]
|
| 15 |
+
}
|
| 16 |
+
});
|
| 17 |
+
</script>
|
| 18 |
+
<script type="text/javascript ">
|
| 19 |
+
! function(o, c) {
|
| 20 |
+
var n = c.documentElement,
|
| 21 |
+
t = " w-mod- ";
|
| 22 |
+
n.className += t + "js ", ("ontouchstart " in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch ")
|
| 23 |
+
}(window, document);
|
| 24 |
+
</script>
|
| 25 |
+
</head>
|
| 26 |
+
|
| 27 |
+
<body>
|
| 28 |
+
<div class="tab-container">
|
| 29 |
+
<!-- Left column (tab menu) -->
|
| 30 |
+
<div class="tab-menu">
|
| 31 |
+
<button class="tablinks active" onclick="openTab(event, 'knn')">KNN</button>
|
| 32 |
+
<button class="tablinks" onclick="openTab(event, 'linear')">Linear Regression</button>
|
| 33 |
+
<button class="tablinks" onclick="openTab(event, 'kmeans')">KMeans</button>
|
| 34 |
+
<button class="tablinks" onclick="openTab(event, 'naive-bayes')">Naive Bayes</button>
|
| 35 |
+
</div>
|
| 36 |
+
|
| 37 |
+
<!-- Right column (tab content) -->
|
| 38 |
+
<div class="tab-content">
|
| 39 |
+
<div id="linear" class="tabcontent">
|
| 40 |
+
<iframe src="{{ url_for('linear') }}" style="width:100%; height:500px;" scrolling="no"></iframe>
|
| 41 |
+
</div>
|
| 42 |
+
|
| 43 |
+
<div id="knn" class="tabcontent">
|
| 44 |
+
<iframe src="{{ url_for('knn') }}" style="width:100%; height:500px;" scrolling="no"></iframe>
|
| 45 |
+
</div>
|
| 46 |
+
|
| 47 |
+
<div id="kmeans" class="tabcontent">
|
| 48 |
+
<iframe src="{{ url_for('kmeans') }}" style="width:100%; height:500px;" scrolling="no"></iframe>
|
| 49 |
+
</div>
|
| 50 |
+
|
| 51 |
+
<div id="naive-bayes" class="tabcontent">
|
| 52 |
+
<iframe src="{{ url_for('naive') }}" style="width:100%; height:500px;" scrolling="no"></iframe>
|
| 53 |
+
</div>
|
| 54 |
+
</div>
|
| 55 |
+
|
| 56 |
+
<script>
|
| 57 |
+
document.getElementById("knn").style.display = "block";
|
| 58 |
+
|
| 59 |
+
function openTab(evt, tabName) {
|
| 60 |
+
var i, tabcontent, tablinks;
|
| 61 |
+
|
| 62 |
+
tabcontent = document.getElementsByClassName("tabcontent");
|
| 63 |
+
for (i = 0; i < tabcontent.length; i++) {
|
| 64 |
+
tabcontent[i].style.display = "none";
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
tablinks = document.getElementsByClassName("tablinks");
|
| 68 |
+
for (i = 0; i < tablinks.length; i++) {
|
| 69 |
+
tablinks[i].className = tablinks[i].className.replace(" active", "");
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
document.getElementById(tabName).style.display = "block";
|
| 73 |
+
evt.currentTarget.className += " active";
|
| 74 |
+
}
|
| 75 |
+
</script>
|
| 76 |
+
</body>
|
| 77 |
+
|
| 78 |
+
</html>
|
app.ipynb
ADDED
|
@@ -0,0 +1,396 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": 22,
|
| 6 |
+
"metadata": {},
|
| 7 |
+
"outputs": [],
|
| 8 |
+
"source": [
|
| 9 |
+
"from flask import Flask, render_template, request, url_for\n",
|
| 10 |
+
"import pickle\n",
|
| 11 |
+
"import numpy as np\n",
|
| 12 |
+
"\n",
|
| 13 |
+
"linreg = pickle.load(open('Models/lr.pkl', 'rb'))\n",
|
| 14 |
+
"knn_model = pickle.load(open('Models/knn_model.pkl', 'rb'))\n",
|
| 15 |
+
"gaussian_nb = pickle.load(open('Models/nbG_model.pkl', 'rb'))\n",
|
| 16 |
+
"multinomial_nb = pickle.load(open('Models/nbM_model.pkl', 'rb'))\n",
|
| 17 |
+
"bernoulli_nb = pickle.load(open('Models/nbB_model.pkl', 'rb'))\n",
|
| 18 |
+
"\n",
|
| 19 |
+
"job_map = {\n",
|
| 20 |
+
" 1: 'Junior',\n",
|
| 21 |
+
" 2: 'Senior',\n",
|
| 22 |
+
" 3: 'Project Manager',\n",
|
| 23 |
+
" 4: 'CTO',\n",
|
| 24 |
+
"}"
|
| 25 |
+
]
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"cell_type": "code",
|
| 29 |
+
"execution_count": null,
|
| 30 |
+
"metadata": {},
|
| 31 |
+
"outputs": [],
|
| 32 |
+
"source": [
|
| 33 |
+
"from sklearn.model_selection import train_test_split\n",
|
| 34 |
+
"\n",
|
| 35 |
+
"while True:\n",
|
| 36 |
+
" salary = float(input(\"Enter salary: \"))\n",
|
| 37 |
+
" print(\"Salary entered: \", salary)\n",
|
| 38 |
+
"\n",
|
| 39 |
+
" experience = float(input(\"Enter experience: \"))\n",
|
| 40 |
+
" print(\"Experience entered: \", experience)\n",
|
| 41 |
+
"\n",
|
| 42 |
+
" with open('Models/tts.pkl', 'rb') as f:\n",
|
| 43 |
+
" data = pickle.load(f)\n",
|
| 44 |
+
"\n",
|
| 45 |
+
" X=data['X']\n",
|
| 46 |
+
" y=data['y']\n",
|
| 47 |
+
"\n",
|
| 48 |
+
" X = np.vstack((X, np.array([salary, experience])))\n",
|
| 49 |
+
" y= np.hstack((y, experience)) # use a new label for the user's input\n",
|
| 50 |
+
"\n",
|
| 51 |
+
" # Split the data into training and testing sets\n",
|
| 52 |
+
" X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
|
| 53 |
+
"\n",
|
| 54 |
+
" # Fit the Naive Bayes models on the training data\n",
|
| 55 |
+
" gaussian_nb.fit(X_train, y_train)\n",
|
| 56 |
+
" multinomial_nb.fit(X_train, y_train)\n",
|
| 57 |
+
" bernoulli_nb.fit(X_train, y_train)\n",
|
| 58 |
+
"\n",
|
| 59 |
+
" # Evaluate the accuracy of the models on the testing set\n",
|
| 60 |
+
" gaussian_accuracy = gaussian_nb.score(X_test, y_test)\n",
|
| 61 |
+
" multinomial_accuracy = multinomial_nb.score(X_test, y_test)\n",
|
| 62 |
+
" bernoulli_accuracy = bernoulli_nb.score(X_test, y_test)\n",
|
| 63 |
+
"\n",
|
| 64 |
+
" # Use each Naive Bayes model to make a prediction based on the user's input values\n",
|
| 65 |
+
" gaussian_prediction = gaussian_nb.predict([[salary, experience]])[0]\n",
|
| 66 |
+
" multinomial_prediction = multinomial_nb.predict([[salary, experience]])[0]\n",
|
| 67 |
+
" bernoulli_prediction = bernoulli_nb.predict([[salary, experience]])[0]\n",
|
| 68 |
+
"\n",
|
| 69 |
+
" # Map the predicted job titles to their corresponding string values\n",
|
| 70 |
+
" gaussian_prediction = job_map.get(gaussian_prediction)\n",
|
| 71 |
+
" multinomial_prediction = job_map.get(multinomial_prediction)\n",
|
| 72 |
+
" bernoulli_prediction = job_map.get(bernoulli_prediction)\n",
|
| 73 |
+
"\n",
|
| 74 |
+
" # # Print the accuracy and predicted job title for each Naive Bayes model\n",
|
| 75 |
+
" # print(\"Gaussian Accuracy: {:.2f}%, Prediction: {}\".format(gaussian_accuracy * 100, gaussian_prediction))\n",
|
| 76 |
+
" # print(\"Multinomial Accuracy: {:.2f}%, Prediction: {}\".format(multinomial_accuracy * 100, multinomial_prediction))\n",
|
| 77 |
+
" # print(\"Bernoulli Accuracy: {:.2f}%, Prediction: {}\".format(bernoulli_accuracy * 100, bernoulli_prediction))\n",
|
| 78 |
+
" # print(\"\\n\")\n",
|
| 79 |
+
"\n",
|
| 80 |
+
" # # Evaluate the accuracy of the models on the new input\n",
|
| 81 |
+
" # gaussian_accuracy_new = gaussian_nb.score([[salary, experience]], [5])\n",
|
| 82 |
+
" # multinomial_accuracy_new = multinomial_nb.score([[salary, experience]], [5])\n",
|
| 83 |
+
" # bernoulli_accuracy_new = bernoulli_nb.score([[salary, experience]], [5])\n"
|
| 84 |
+
]
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"cell_type": "code",
|
| 88 |
+
"execution_count": null,
|
| 89 |
+
"metadata": {},
|
| 90 |
+
"outputs": [],
|
| 91 |
+
"source": [
|
| 92 |
+
" # X=data['X']\n",
|
| 93 |
+
" # y=data['y']\n",
|
| 94 |
+
"\n",
|
| 95 |
+
" # # Combine the user's input values with the existing data\n",
|
| 96 |
+
" # X_new = np.vstack((X, np.array([salary, experience])))\n",
|
| 97 |
+
" # y_new = np.hstack((y, 5)) # use a new label for the user's input\n",
|
| 98 |
+
"\n",
|
| 99 |
+
" # n_splits=10\n",
|
| 100 |
+
"\n",
|
| 101 |
+
" # # Use k-fold cross-validation to generate a new test set for each iteration\n",
|
| 102 |
+
" # kf = KFold(n_splits=n_splits, shuffle=False, random_state=None)\n",
|
| 103 |
+
"\n",
|
| 104 |
+
" # gaussian_accuracy = 0\n",
|
| 105 |
+
" # multinomial_accuracy = 0\n",
|
| 106 |
+
" # bernoulli_accuracy = 0\n",
|
| 107 |
+
"\n",
|
| 108 |
+
" # for train_index, test_index in kf.split(X_new):\n",
|
| 109 |
+
" # X_train, X_test = X_new[train_index], X_new[test_index]\n",
|
| 110 |
+
" # y_train, y_test = y_new[train_index], y_new[test_index]\n",
|
| 111 |
+
"\n",
|
| 112 |
+
" # # Fit the Naive Bayes models on the training data\n",
|
| 113 |
+
" # gaussian_nb.fit(X_train, y_train)\n",
|
| 114 |
+
" # multinomial_nb.fit(X_train, y_train)\n",
|
| 115 |
+
" # bernoulli_nb.fit(X_train, y_train)\n",
|
| 116 |
+
"\n",
|
| 117 |
+
" # # Use each Naive Bayes model to make a prediction based on the user's input values\n",
|
| 118 |
+
" # gaussian_prediction = gaussian_nb.predict([[salary, experience]])[0]\n",
|
| 119 |
+
" # multinomial_prediction = multinomial_nb.predict([[salary, experience]])[0]\n",
|
| 120 |
+
" # bernoulli_prediction = bernoulli_nb.predict([[salary, experience]])[0]\n",
|
| 121 |
+
"\n",
|
| 122 |
+
" # # Update the accuracy scores for each Naive Bayes model\n",
|
| 123 |
+
" # gaussian_accuracy += gaussian_nb.score(X_test, y_test)\n",
|
| 124 |
+
" # multinomial_accuracy += multinomial_nb.score(X_test, y_test)\n",
|
| 125 |
+
" # bernoulli_accuracy += bernoulli_nb.score(X_test, y_test)\n",
|
| 126 |
+
"\n",
|
| 127 |
+
" # # Calculate the mean accuracy for each Naive Bayes model over all folds\n",
|
| 128 |
+
" # gaussian_accuracy = round(gaussian_accuracy / n_splits * 100, 3)\n",
|
| 129 |
+
" # multinomial_accuracy = round(multinomial_accuracy / n_splits * 100, 3)\n",
|
| 130 |
+
" # bernoulli_accuracy = round(bernoulli_accuracy / n_splits * 100, 3)\n",
|
| 131 |
+
"\n",
|
| 132 |
+
" # # Map the predicted job titles to their corresponding string values\n",
|
| 133 |
+
" # gaussian_prediction = job_map.get(gaussian_prediction)\n",
|
| 134 |
+
" # multinomial_prediction = job_map.get(multinomial_prediction)\n",
|
| 135 |
+
" # bernoulli_prediction = job_map.get(bernoulli_prediction)\n",
|
| 136 |
+
"\n",
|
| 137 |
+
" # # Render the results template with the predicted job classification and accuracy scores\n",
|
| 138 |
+
" # return render_template('naive.html',\n",
|
| 139 |
+
" # gaussian_prediction=gaussian_prediction,\n",
|
| 140 |
+
" # multinomial_prediction=multinomial_prediction,\n",
|
| 141 |
+
" # bernoulli_prediction=bernoulli_prediction,\n",
|
| 142 |
+
" # gaussian_accuracy=str(gaussian_accuracy) + \"%\",\n",
|
| 143 |
+
" # multinomial_accuracy=str(multinomial_accuracy) + \"%\",\n",
|
| 144 |
+
" # bernoulli_accuracy=str(bernoulli_accuracy) + \"%\",\n",
|
| 145 |
+
" # salary=salary,\n",
|
| 146 |
+
" # experience=experience,\n",
|
| 147 |
+
" # reset=True)\n",
|
| 148 |
+
" # else:\n",
|
| 149 |
+
" # # Render the job classification form\n",
|
| 150 |
+
" # return render_template('naive.html')\n"
|
| 151 |
+
]
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"cell_type": "code",
|
| 155 |
+
"execution_count": null,
|
| 156 |
+
"metadata": {},
|
| 157 |
+
"outputs": [],
|
| 158 |
+
"source": [
|
| 159 |
+
" # if request.method == 'POST':\n",
|
| 160 |
+
" # # Get the user's input values\n",
|
| 161 |
+
" # salary = float(request.form['salary'])\n",
|
| 162 |
+
" # experience = float(request.form['experience'])\n",
|
| 163 |
+
"\n",
|
| 164 |
+
" # with open('Models/tts.pkl', 'rb') as f:\n",
|
| 165 |
+
" # data = pickle.load(f)\n",
|
| 166 |
+
"\n",
|
| 167 |
+
" # X=data['X']\n",
|
| 168 |
+
" # y=data['y']\n",
|
| 169 |
+
"\n",
|
| 170 |
+
"\n",
|
| 171 |
+
" # X = np.vstack((X, np.array([salary, experience])))\n",
|
| 172 |
+
" # y= np.hstack((y, 5)) # use a new label for the user's input\n",
|
| 173 |
+
"\n",
|
| 174 |
+
"\n",
|
| 175 |
+
" # # Split the data into training and testing sets\n",
|
| 176 |
+
" # X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=0)\n",
|
| 177 |
+
"\n",
|
| 178 |
+
" # # Fit the Naive Bayes models on the training data\n",
|
| 179 |
+
" # gaussian_nb.fit(X_train, y_train)\n",
|
| 180 |
+
" # multinomial_nb.fit(X_train, y_train)\n",
|
| 181 |
+
" # bernoulli_nb.fit(X_train, y_train)\n",
|
| 182 |
+
"\n",
|
| 183 |
+
" # # Use each Naive Bayes model to make a prediction based on the user's input values\n",
|
| 184 |
+
" # gaussian_prediction = gaussian_nb.predict([[salary, experience]])[0]\n",
|
| 185 |
+
" # multinomial_prediction = multinomial_nb.predict([[salary, experience]])[0]\n",
|
| 186 |
+
" # bernoulli_prediction = bernoulli_nb.predict([[salary, experience]])[0]\n",
|
| 187 |
+
"\n",
|
| 188 |
+
" # # Evaluate the accuracy of the models on the testing set\n",
|
| 189 |
+
" # gaussian_accuracy = round(gaussian_nb.score(X_test, y_test) * 100, 3) \n",
|
| 190 |
+
" # multinomial_accuracy = round(multinomial_nb.score(X_test, y_test) * 100, 3)\n",
|
| 191 |
+
" # bernoulli_accuracy = round(bernoulli_nb.score(X_test, y_test) * 100, 3)\n",
|
| 192 |
+
"\n",
|
| 193 |
+
" # # Map the predicted job titles to their corresponding string values\n",
|
| 194 |
+
" # gaussian_prediction = job_map.get(gaussian_prediction)\n",
|
| 195 |
+
" # multinomial_prediction = job_map.get(multinomial_prediction)\n",
|
| 196 |
+
" # bernoulli_prediction = job_map.get(bernoulli_prediction)\n",
|
| 197 |
+
"\n",
|
| 198 |
+
" # # Render the results template with the predicted job classification and accuracy scores\n",
|
| 199 |
+
" # return render_template('naive.html',\n",
|
| 200 |
+
" # gaussian_prediction=gaussian_prediction,\n",
|
| 201 |
+
" # multinomial_prediction=multinomial_prediction,\n",
|
| 202 |
+
" # bernoulli_prediction=bernoulli_prediction,\n",
|
| 203 |
+
" # gaussian_accuracy=str(gaussian_accuracy) + \"%\",\n",
|
| 204 |
+
" # multinomial_accuracy=str(multinomial_accuracy) + \"%\",\n",
|
| 205 |
+
" # bernoulli_accuracy=str(bernoulli_accuracy) + \"%\",\n",
|
| 206 |
+
" # salary=salary,\n",
|
| 207 |
+
" # experience=experience,\n",
|
| 208 |
+
" # reset=True)\n",
|
| 209 |
+
" # else:\n",
|
| 210 |
+
" # # Render the job classification form\n",
|
| 211 |
+
" # return render_template('naive.html')\n"
|
| 212 |
+
]
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"cell_type": "code",
|
| 216 |
+
"execution_count": null,
|
| 217 |
+
"metadata": {},
|
| 218 |
+
"outputs": [
|
| 219 |
+
{
|
| 220 |
+
"name": "stdout",
|
| 221 |
+
"output_type": "stream",
|
| 222 |
+
"text": [
|
| 223 |
+
"Salary entered: 5000.0\n",
|
| 224 |
+
"Experience entered: 5.0\n",
|
| 225 |
+
"Gaussian Accuracy: 82.81%, Prediction: None\n",
|
| 226 |
+
"Multinomial Accuracy: 26.67%, Prediction: None\n",
|
| 227 |
+
"Bernoulli Accuracy: 21.05%, Prediction: Junior\n",
|
| 228 |
+
"\n",
|
| 229 |
+
"\n",
|
| 230 |
+
"Salary entered: 4.0\n",
|
| 231 |
+
"Experience entered: 5.0\n",
|
| 232 |
+
"Gaussian Accuracy: 82.46%, Prediction: CTO\n",
|
| 233 |
+
"Multinomial Accuracy: 25.96%, Prediction: Junior\n",
|
| 234 |
+
"Bernoulli Accuracy: 20.70%, Prediction: Junior\n",
|
| 235 |
+
"\n",
|
| 236 |
+
"\n"
|
| 237 |
+
]
|
| 238 |
+
},
|
| 239 |
+
{
|
| 240 |
+
"ename": "ValueError",
|
| 241 |
+
"evalue": "could not convert string to float: ''",
|
| 242 |
+
"output_type": "error",
|
| 243 |
+
"traceback": [
|
| 244 |
+
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
| 245 |
+
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
| 246 |
+
"Cell \u001b[1;32mIn[3], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39msklearn\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mmodel_selection\u001b[39;00m \u001b[39mimport\u001b[39;00m KFold\n\u001b[0;32m 2\u001b[0m \u001b[39mwhile\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[1;32m----> 3\u001b[0m salary \u001b[39m=\u001b[39m \u001b[39mfloat\u001b[39m(\u001b[39minput\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mEnter salary: \u001b[39m\u001b[39m\"\u001b[39m))\n\u001b[0;32m 4\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mSalary entered: \u001b[39m\u001b[39m\"\u001b[39m, salary)\n\u001b[0;32m 6\u001b[0m experience \u001b[39m=\u001b[39m \u001b[39mfloat\u001b[39m(\u001b[39minput\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39mEnter experience: \u001b[39m\u001b[39m\"\u001b[39m))\n",
|
| 247 |
+
"\u001b[1;31mValueError\u001b[0m: could not convert string to float: ''"
|
| 248 |
+
]
|
| 249 |
+
}
|
| 250 |
+
],
|
| 251 |
+
"source": [
|
| 252 |
+
"# from sklearn.model_selection import KFold\n",
|
| 253 |
+
"# while True:\n",
|
| 254 |
+
"# salary = float(input(\"Enter salary: \"))\n",
|
| 255 |
+
"# print(\"Salary entered: \", salary)\n",
|
| 256 |
+
"\n",
|
| 257 |
+
"# experience = float(input(\"Enter experience: \"))\n",
|
| 258 |
+
"# print(\"Experience entered: \", experience)\n",
|
| 259 |
+
"\n",
|
| 260 |
+
"# with open('Models/tts.pkl', 'rb') as f:\n",
|
| 261 |
+
"# data = pickle.load(f)\n",
|
| 262 |
+
"\n",
|
| 263 |
+
"# X=data['X']\n",
|
| 264 |
+
"# y=data['y']\n",
|
| 265 |
+
"\n",
|
| 266 |
+
"# # Combine the user's input values with the existing data\n",
|
| 267 |
+
"# X_new = np.vstack((X, np.array([salary, experience])))\n",
|
| 268 |
+
"# y_new = np.hstack((y, 5)) # use a new label for the user's input\n",
|
| 269 |
+
"\n",
|
| 270 |
+
"# n_splits=5\n",
|
| 271 |
+
"\n",
|
| 272 |
+
"# # Use k-fold cross-validation to generate a new test set for each iteration\n",
|
| 273 |
+
"# kf = KFold(n_splits=n_splits, shuffle=True, random_state=None)\n",
|
| 274 |
+
"\n",
|
| 275 |
+
"# gaussian_accuracy = 0\n",
|
| 276 |
+
"# multinomial_accuracy = 0\n",
|
| 277 |
+
"# bernoulli_accuracy = 0\n",
|
| 278 |
+
"\n",
|
| 279 |
+
"# for train_index, test_index in kf.split(X_new):\n",
|
| 280 |
+
"# X_train, X_test = X_new[train_index], X_new[test_index]\n",
|
| 281 |
+
"# y_train, y_test = y_new[train_index], y_new[test_index]\n",
|
| 282 |
+
"\n",
|
| 283 |
+
"# # Fit the Naive Bayes models on the training data\n",
|
| 284 |
+
"# gaussian_nb.fit(X_train, y_train)\n",
|
| 285 |
+
"# multinomial_nb.fit(X_train, y_train)\n",
|
| 286 |
+
"# bernoulli_nb.fit(X_train, y_train)\n",
|
| 287 |
+
"\n",
|
| 288 |
+
"# # Use each Naive Bayes model to make a prediction based on the user's input values\n",
|
| 289 |
+
"# gaussian_prediction = gaussian_nb.predict([[salary, experience]])[0]\n",
|
| 290 |
+
"# multinomial_prediction = multinomial_nb.predict([[salary, experience]])[0]\n",
|
| 291 |
+
"# bernoulli_prediction = bernoulli_nb.predict([[salary, experience]])[0]\n",
|
| 292 |
+
"\n",
|
| 293 |
+
"# # Update the accuracy scores for each Naive Bayes model\n",
|
| 294 |
+
"# gaussian_accuracy += gaussian_nb.score(X_test, y_test)\n",
|
| 295 |
+
"# multinomial_accuracy += multinomial_nb.score(X_test, y_test)\n",
|
| 296 |
+
"# bernoulli_accuracy += bernoulli_nb.score(X_test, y_test)\n",
|
| 297 |
+
"\n",
|
| 298 |
+
"# # Calculate the mean accuracy for each Naive Bayes model over all folds\n",
|
| 299 |
+
"# gaussian_accuracy /= n_splits\n",
|
| 300 |
+
"# multinomial_accuracy /= n_splits\n",
|
| 301 |
+
"# bernoulli_accuracy /= n_splits\n",
|
| 302 |
+
"\n",
|
| 303 |
+
"# # Map the predicted job titles to their corresponding string values\n",
|
| 304 |
+
"# gaussian_prediction = job_map.get(gaussian_prediction)\n",
|
| 305 |
+
"# multinomial_prediction = job_map.get(multinomial_prediction)\n",
|
| 306 |
+
"# bernoulli_prediction = job_map.get(bernoulli_prediction)\n",
|
| 307 |
+
"\n",
|
| 308 |
+
"# # Print the accuracy and predicted job title for each Naive Bayes model\n",
|
| 309 |
+
"# print(\"Gaussian Accuracy: {:.2f}%, Prediction: {}\".format(gaussian_accuracy * 100, gaussian_prediction))\n",
|
| 310 |
+
"# print(\"Multinomial Accuracy: {:.2f}%, Prediction: {}\".format(multinomial_accuracy * 100, multinomial_prediction))\n",
|
| 311 |
+
"# print(\"Bernoulli Accuracy: {:.2f}%, Prediction: {}\".format(bernoulli_accuracy * 100, bernoulli_prediction))\n",
|
| 312 |
+
"# print(\"\\n\")\n",
|
| 313 |
+
"\n",
|
| 314 |
+
"\n"
|
| 315 |
+
]
|
| 316 |
+
},
|
| 317 |
+
{
|
| 318 |
+
"cell_type": "code",
|
| 319 |
+
"execution_count": null,
|
| 320 |
+
"metadata": {},
|
| 321 |
+
"outputs": [],
|
| 322 |
+
"source": [
|
| 323 |
+
"# @app.route('/predictnaive', methods=['GET', 'POST'])\n",
|
| 324 |
+
"# def predictnaive():\n",
|
| 325 |
+
"# if request.method == 'POST':\n",
|
| 326 |
+
"# # Get the user's input values\n",
|
| 327 |
+
"# salary = float(request.form['salary'])\n",
|
| 328 |
+
"# experience = float(request.form['experience'])\n",
|
| 329 |
+
"\n",
|
| 330 |
+
"# # Load the data used to train and test the models\n",
|
| 331 |
+
"# with open('Models/tts.pkl', 'rb') as f:\n",
|
| 332 |
+
"# data = pickle.load(f)\n",
|
| 333 |
+
" \n",
|
| 334 |
+
"# # X_user = np.array([[salary, experience]])\n",
|
| 335 |
+
"# # y_user = np.array([5])\n",
|
| 336 |
+
"# # X_test_combined = np.concatenate((X_test, X_user))\n",
|
| 337 |
+
"# # y_test_combined = np.concatenate((y_test, y_user))\n",
|
| 338 |
+
"\n",
|
| 339 |
+
"# X = np.vstack((data['X'], np.array([salary, experience])))\n",
|
| 340 |
+
"# y = np.hstack((data['y'], 5)) # use a new label for the user's input\n",
|
| 341 |
+
" \n",
|
| 342 |
+
"# from sklearn.model_selection import train_test_split\n",
|
| 343 |
+
"# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)\n",
|
| 344 |
+
"\n",
|
| 345 |
+
"# # Re-fit models on combined data\n",
|
| 346 |
+
"# gaussian_nb.fit(X_train, y_train) \n",
|
| 347 |
+
"# multinomial_nb.fit(X_train, y_train)\n",
|
| 348 |
+
"# bernoulli_nb.fit(X_train, y_train)\n",
|
| 349 |
+
"\n",
|
| 350 |
+
"# # Use each Naive Bayes model to make a prediction based on the user's input values\n",
|
| 351 |
+
"# gaussian_prediction = gaussian_nb.predict([[salary, experience]])[0]\n",
|
| 352 |
+
"# multinomial_prediction = multinomial_nb.predict([[salary, experience]])[0]\n",
|
| 353 |
+
"# bernoulli_prediction = bernoulli_nb.predict([[salary, experience]])[0]\n",
|
| 354 |
+
"\n",
|
| 355 |
+
"\n",
|
| 356 |
+
"# # Calculate the accuracy of each Naive Bayes model\n",
|
| 357 |
+
"# gaussian_accuracy = round(gaussian_nb.score(X_test, y_test), 3) * 100\n",
|
| 358 |
+
"# multinomial_accuracy = round(multinomial_nb.score(X_test, y_test), 3) * 100\n",
|
| 359 |
+
"# bernoulli_accuracy = round(bernoulli_nb.score(X_test, y_test), 3) * 100\n",
|
| 360 |
+
"\n",
|
| 361 |
+
"\n",
|
| 362 |
+
"# gaussian_prediction = job_map.get(gaussian_prediction)\n",
|
| 363 |
+
"# multinomial_prediction = job_map.get(multinomial_prediction)\n",
|
| 364 |
+
"# bernoulli_prediction = job_map.get(bernoulli_prediction)\n",
|
| 365 |
+
"\n",
|
| 366 |
+
"# # Render the results template with the predicted job classification and accuracy scores\n",
|
| 367 |
+
"# return render_template('naive.html', gaussian_prediction=gaussian_prediction, multinomial_prediction=multinomial_prediction, bernoulli_prediction=bernoulli_prediction, gaussian_accuracy=gaussian_accuracy, multinomial_accuracy=multinomial_accuracy, bernoulli_accuracy=bernoulli_accuracy, salary=salary, experience=experience, reset=True)\n",
|
| 368 |
+
"# else:\n",
|
| 369 |
+
"# # Render the job classification form\n",
|
| 370 |
+
"# return render_template('naive.html')"
|
| 371 |
+
]
|
| 372 |
+
}
|
| 373 |
+
],
|
| 374 |
+
"metadata": {
|
| 375 |
+
"kernelspec": {
|
| 376 |
+
"display_name": "Python 3",
|
| 377 |
+
"language": "python",
|
| 378 |
+
"name": "python3"
|
| 379 |
+
},
|
| 380 |
+
"language_info": {
|
| 381 |
+
"codemirror_mode": {
|
| 382 |
+
"name": "ipython",
|
| 383 |
+
"version": 3
|
| 384 |
+
},
|
| 385 |
+
"file_extension": ".py",
|
| 386 |
+
"mimetype": "text/x-python",
|
| 387 |
+
"name": "python",
|
| 388 |
+
"nbconvert_exporter": "python",
|
| 389 |
+
"pygments_lexer": "ipython3",
|
| 390 |
+
"version": "3.11.2"
|
| 391 |
+
},
|
| 392 |
+
"orig_nbformat": 4
|
| 393 |
+
},
|
| 394 |
+
"nbformat": 4,
|
| 395 |
+
"nbformat_minor": 2
|
| 396 |
+
}
|
app.py
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from flask import Flask, render_template, request, url_for
|
| 2 |
+
import pickle
|
| 3 |
+
import numpy as np
|
| 4 |
+
|
| 5 |
+
app = Flask(__name__, static_folder='static')
|
| 6 |
+
|
| 7 |
+
linreg = pickle.load(open('Models/linreg_model.pkl', 'rb'))
|
| 8 |
+
knn_model = pickle.load(open('Models/knn_model.pkl', 'rb'))
|
| 9 |
+
gaussian_nb = pickle.load(open('Models/nbG_model.pkl', 'rb'))
|
| 10 |
+
multinomial_nb = pickle.load(open('Models/nbM_model.pkl', 'rb'))
|
| 11 |
+
bernoulli_nb = pickle.load(open('Models/nbB_model.pkl', 'rb'))
|
| 12 |
+
|
| 13 |
+
job_map = {
|
| 14 |
+
1: 'Junior',
|
| 15 |
+
2: 'Senior',
|
| 16 |
+
3: 'Project Manager',
|
| 17 |
+
4: 'CTO',
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
@app.route('/')
|
| 22 |
+
def index():
|
| 23 |
+
return render_template('index.html')
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
@app.route('/about')
|
| 27 |
+
def about():
|
| 28 |
+
return render_template('about.html')
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
@app.route('/algos')
|
| 32 |
+
def algos():
|
| 33 |
+
return render_template('algos.html')
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
@app.route('/linear', methods=['GET', 'POST'])
|
| 37 |
+
def linear():
|
| 38 |
+
return render_template('linear.html')
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
@app.route('/knn', methods=['GET', 'POST'])
|
| 42 |
+
def knn():
|
| 43 |
+
return render_template('knn.html')
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
@app.route('/kmeans', methods=['GET', 'POST'])
|
| 47 |
+
def kmeans():
|
| 48 |
+
return render_template('kmeans.html')
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
@app.route('/naive', methods=['GET', 'POST'])
|
| 52 |
+
def naive():
|
| 53 |
+
return render_template('naive.html')
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
@app.route('/predict', methods=['POST'])
|
| 57 |
+
def predict():
|
| 58 |
+
position_level = request.form.get('comp_select')
|
| 59 |
+
experience_str = request.form.get('experience')
|
| 60 |
+
try:
|
| 61 |
+
experience = float(experience_str)
|
| 62 |
+
except ValueError:
|
| 63 |
+
return render_template('linear.html', prediction_text=f"Error: Invalid input value for experience: '{experience_str}'. Please enter a valid numerical value.")
|
| 64 |
+
|
| 65 |
+
if position_level in ['1', '2', '3', '4']:
|
| 66 |
+
int_position_level = int(position_level)
|
| 67 |
+
float_experience = float(experience)
|
| 68 |
+
int_features = [int_position_level, float_experience]
|
| 69 |
+
final_features = [np.array(int_features)]
|
| 70 |
+
prediction = linreg.predict(final_features)
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
int_position_level = job_map.get(int(position_level))
|
| 74 |
+
predicted_salary_f = round(float(prediction.item()), 3)
|
| 75 |
+
predicted_salary = "{:,.3f}".format(predicted_salary_f)
|
| 76 |
+
|
| 77 |
+
return render_template('linear.html', position_level=f'Position: {int_position_level}',experience=f'Experience: {experience}', prediction_text=f'Predicted Salary Rate: ₱{predicted_salary}')
|
| 78 |
+
|
| 79 |
+
else:
|
| 80 |
+
return render_template('linear.html', prediction_text='Error: Invalid input values. Please select a valid position level and enter a numerical value for experience.')
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
@app.route('/predictknn', methods=['POST'])
|
| 84 |
+
def predictknn():
|
| 85 |
+
experience_str = request.form.get('experience')
|
| 86 |
+
salary_str = request.form.get('salary')
|
| 87 |
+
try:
|
| 88 |
+
experience = float(experience_str)
|
| 89 |
+
salary = float(salary_str)
|
| 90 |
+
except ValueError:
|
| 91 |
+
return render_template('knn.html', prediction_text=f"Error: Invalid input value. Please enter a valid numerical value for both experience and salary.")
|
| 92 |
+
|
| 93 |
+
features = [[experience, salary]]
|
| 94 |
+
prediction = knn_model.predict(features)
|
| 95 |
+
predicted_job_num = int(prediction[0])
|
| 96 |
+
predicted_job = job_map[predicted_job_num]
|
| 97 |
+
|
| 98 |
+
return render_template('knn.html', prediction_text=f'Predicted job: {predicted_job}', experience=f'Experience: {experience}', salary=f'Salary: {salary}')
|
| 99 |
+
|
| 100 |
+
@app.route('/predictnaive', methods=['GET', 'POST'])
|
| 101 |
+
def predictnaive():
|
| 102 |
+
# Get the user's input values
|
| 103 |
+
salary = float(request.form['salary'])
|
| 104 |
+
experience = float(request.form['experience'])
|
| 105 |
+
|
| 106 |
+
try:
|
| 107 |
+
if float(experience) < 0 or float(salary) < 0:
|
| 108 |
+
raise ValueError()
|
| 109 |
+
int_features = [salary, experience]
|
| 110 |
+
|
| 111 |
+
features = np.array(int_features).reshape(1, -1)
|
| 112 |
+
gaussian_prediction = gaussian_nb.predict(features)
|
| 113 |
+
multinomial_prediction = multinomial_nb.predict(features)
|
| 114 |
+
bernoulli_prediction = bernoulli_nb.predict(features)
|
| 115 |
+
|
| 116 |
+
# # Map the predicted job titles to their corresponding string values
|
| 117 |
+
gaussian_prediction = job_map.get(int(gaussian_prediction))
|
| 118 |
+
multinomial_prediction = job_map.get(int(multinomial_prediction))
|
| 119 |
+
bernoulli_prediction = job_map.get(int(bernoulli_prediction))
|
| 120 |
+
|
| 121 |
+
|
| 122 |
+
# Render the results template with the predicted job classification and accuracy scores
|
| 123 |
+
return render_template('naive.html',
|
| 124 |
+
gaussian_prediction=gaussian_prediction,
|
| 125 |
+
multinomial_prediction=multinomial_prediction,
|
| 126 |
+
bernoulli_prediction=bernoulli_prediction,
|
| 127 |
+
salary=salary,
|
| 128 |
+
experience=experience,
|
| 129 |
+
reset=True)
|
| 130 |
+
|
| 131 |
+
except:
|
| 132 |
+
return render_template('naive.html')
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
@app.route('/predictkm', methods=['GET'])
|
| 136 |
+
def predictkm():
|
| 137 |
+
|
| 138 |
+
# render the HTML template
|
| 139 |
+
return render_template('kmeans.html')
|
| 140 |
+
|
| 141 |
+
# # convert the figure to a base64 string for embedding in the HTML template
|
| 142 |
+
# import io
|
| 143 |
+
# import base64
|
| 144 |
+
# buf = io.BytesIO()
|
| 145 |
+
# fig.savefig(buf, format='png')
|
| 146 |
+
# figdata = base64.b64encode(buf.getbuffer()).decode('utf-8')
|
| 147 |
+
|
| 148 |
+
# # render the HTML template and pass the figure data to it
|
| 149 |
+
# return render_template('kmeans.html', figdata=figdata)
|
| 150 |
+
|
| 151 |
+
|
| 152 |
+
if __name__ == '__main__':
|
| 153 |
+
app.run(debug=True, port=8000)
|
requirements.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
flask==2.2.3
|
| 2 |
+
numpy==1.24.2
|
| 3 |
+
pickle-mixin==1.0.2
|
| 4 |
+
scikit-learn==1.2.2
|
| 5 |
+
gunicorn
|
| 6 |
+
matplotlib
|
| 7 |
+
pandas
|
static/css/main.css
ADDED
|
@@ -0,0 +1,3098 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
|
| 2 |
+
html {
|
| 3 |
+
-ms-text-size-adjust: 100%;
|
| 4 |
+
-webkit-text-size-adjust: 100%;
|
| 5 |
+
font-family: sans-serif;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
body {
|
| 9 |
+
margin: 0;
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
article,
|
| 13 |
+
aside,
|
| 14 |
+
details,
|
| 15 |
+
figcaption,
|
| 16 |
+
figure,
|
| 17 |
+
footer,
|
| 18 |
+
header,
|
| 19 |
+
hgroup,
|
| 20 |
+
main,
|
| 21 |
+
menu,
|
| 22 |
+
nav,
|
| 23 |
+
section,
|
| 24 |
+
summary {
|
| 25 |
+
display: block;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
audio,
|
| 29 |
+
canvas,
|
| 30 |
+
progress,
|
| 31 |
+
video {
|
| 32 |
+
vertical-align: baseline;
|
| 33 |
+
display: inline-block;
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
audio:not([controls]) {
|
| 37 |
+
height: 0;
|
| 38 |
+
display: none;
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
[hidden],
|
| 42 |
+
template {
|
| 43 |
+
display: none;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
a {
|
| 47 |
+
background-color: rgba(0, 0, 0, 0);
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
a:active,
|
| 51 |
+
a:hover {
|
| 52 |
+
outline: 0;
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
abbr[title] {
|
| 56 |
+
border-bottom: 1px dotted;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
b,
|
| 60 |
+
strong {
|
| 61 |
+
font-weight: bold;
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
dfn {
|
| 65 |
+
font-style: italic;
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
h1 {
|
| 69 |
+
margin: .67em 0;
|
| 70 |
+
font-size: 2em;
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
mark {
|
| 74 |
+
color: #000;
|
| 75 |
+
background: #ff0;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
small {
|
| 79 |
+
font-size: 80%;
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
sub,
|
| 83 |
+
sup {
|
| 84 |
+
vertical-align: baseline;
|
| 85 |
+
font-size: 75%;
|
| 86 |
+
line-height: 0;
|
| 87 |
+
position: relative;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
sup {
|
| 91 |
+
top: -.5em;
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
sub {
|
| 95 |
+
bottom: -.25em;
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
img {
|
| 99 |
+
border: 0;
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
svg:not(:root) {
|
| 103 |
+
overflow: hidden;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
figure {
|
| 107 |
+
margin: 1em 40px;
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
hr {
|
| 111 |
+
box-sizing: content-box;
|
| 112 |
+
height: 0;
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
pre {
|
| 116 |
+
overflow: auto;
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
code,
|
| 120 |
+
kbd,
|
| 121 |
+
pre,
|
| 122 |
+
samp {
|
| 123 |
+
font-family: monospace;
|
| 124 |
+
font-size: 1em;
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
button,
|
| 128 |
+
input,
|
| 129 |
+
optgroup,
|
| 130 |
+
select,
|
| 131 |
+
textarea {
|
| 132 |
+
color: inherit;
|
| 133 |
+
font: inherit;
|
| 134 |
+
margin: 0;
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
button {
|
| 138 |
+
overflow: visible;
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
button,
|
| 142 |
+
select {
|
| 143 |
+
text-transform: none;
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
button[disabled],
|
| 147 |
+
html input[disabled] {
|
| 148 |
+
cursor: default;
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
button::-moz-focus-inner,
|
| 152 |
+
input::-moz-focus-inner {
|
| 153 |
+
border: 0;
|
| 154 |
+
padding: 0;
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
input {
|
| 158 |
+
line-height: normal;
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
input[type="checkbox"],
|
| 162 |
+
input[type="radio"] {
|
| 163 |
+
box-sizing: border-box;
|
| 164 |
+
padding: 0;
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
input[type="number"]::-webkit-inner-spin-button,
|
| 168 |
+
input[type="number"]::-webkit-outer-spin-button {
|
| 169 |
+
height: auto;
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
input[type="search"]::-webkit-search-cancel-button,
|
| 173 |
+
input[type="search"]::-webkit-search-decoration {
|
| 174 |
+
-webkit-appearance: none;
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
fieldset {
|
| 178 |
+
border: 1px solid silver;
|
| 179 |
+
margin: 0 2px;
|
| 180 |
+
padding: .35em .625em .75em;
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
legend {
|
| 184 |
+
border: 0;
|
| 185 |
+
padding: 0;
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
textarea {
|
| 189 |
+
overflow: auto;
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
optgroup {
|
| 193 |
+
font-weight: bold;
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
table {
|
| 197 |
+
border-collapse: collapse;
|
| 198 |
+
border-spacing: 0;
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
td,
|
| 202 |
+
th {
|
| 203 |
+
padding: 0;
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
@font-face {
|
| 207 |
+
font-family: webflow-icons;
|
| 208 |
+
src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format("truetype");
|
| 209 |
+
font-weight: normal;
|
| 210 |
+
font-style: normal;
|
| 211 |
+
}
|
| 212 |
+
|
| 213 |
+
[class^="w-icon-"],
|
| 214 |
+
[class*=" w-icon-"] {
|
| 215 |
+
font-variant: normal;
|
| 216 |
+
text-transform: none;
|
| 217 |
+
-webkit-font-smoothing: antialiased;
|
| 218 |
+
-moz-osx-font-smoothing: grayscale;
|
| 219 |
+
font-style: normal;
|
| 220 |
+
font-weight: normal;
|
| 221 |
+
line-height: 1;
|
| 222 |
+
font-family: webflow-icons !important;
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
+
.w-icon-slider-right:before {
|
| 226 |
+
content: "";
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
.w-icon-slider-left:before {
|
| 230 |
+
content: "î˜";
|
| 231 |
+
}
|
| 232 |
+
|
| 233 |
+
.w-icon-nav-menu:before {
|
| 234 |
+
content: "";
|
| 235 |
+
}
|
| 236 |
+
|
| 237 |
+
.w-icon-arrow-down:before,
|
| 238 |
+
.w-icon-dropdown-toggle:before {
|
| 239 |
+
content: "";
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
.w-icon-file-upload-remove:before {
|
| 243 |
+
content: "";
|
| 244 |
+
}
|
| 245 |
+
|
| 246 |
+
.w-icon-file-upload-icon:before {
|
| 247 |
+
content: "";
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
* {
|
| 251 |
+
box-sizing: border-box;
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
html {
|
| 255 |
+
height: 100%;
|
| 256 |
+
}
|
| 257 |
+
|
| 258 |
+
body {
|
| 259 |
+
min-height: 100%;
|
| 260 |
+
color: #333;
|
| 261 |
+
background-color: #fff;
|
| 262 |
+
margin: 0;
|
| 263 |
+
font-family: Arial, sans-serif;
|
| 264 |
+
font-size: 14px;
|
| 265 |
+
line-height: 20px;
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
img {
|
| 269 |
+
max-width: 100%;
|
| 270 |
+
vertical-align: middle;
|
| 271 |
+
display: inline-block;
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
html.w-mod-touch * {
|
| 275 |
+
background-attachment: scroll !important;
|
| 276 |
+
}
|
| 277 |
+
|
| 278 |
+
.w-block {
|
| 279 |
+
display: block;
|
| 280 |
+
}
|
| 281 |
+
|
| 282 |
+
.w-inline-block {
|
| 283 |
+
max-width: 100%;
|
| 284 |
+
display: inline-block;
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
.w-clearfix:before,
|
| 288 |
+
.w-clearfix:after {
|
| 289 |
+
content: " ";
|
| 290 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 291 |
+
display: table;
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
.w-clearfix:after {
|
| 295 |
+
clear: both;
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
.w-hidden {
|
| 299 |
+
display: none;
|
| 300 |
+
}
|
| 301 |
+
|
| 302 |
+
.w-button {
|
| 303 |
+
color: #fff;
|
| 304 |
+
line-height: inherit;
|
| 305 |
+
cursor: pointer;
|
| 306 |
+
background-color: #3898ec;
|
| 307 |
+
border: 0;
|
| 308 |
+
border-radius: 0;
|
| 309 |
+
padding: 9px 15px;
|
| 310 |
+
text-decoration: none;
|
| 311 |
+
display: inline-block;
|
| 312 |
+
}
|
| 313 |
+
|
| 314 |
+
html[data-w-dynpage] [data-w-cloak] {
|
| 315 |
+
color: rgba(0, 0, 0, 0) !important;
|
| 316 |
+
}
|
| 317 |
+
|
| 318 |
+
h1,
|
| 319 |
+
h2,
|
| 320 |
+
h3,
|
| 321 |
+
h4,
|
| 322 |
+
h5,
|
| 323 |
+
h6 {
|
| 324 |
+
margin-bottom: 10px;
|
| 325 |
+
font-weight: bold;
|
| 326 |
+
}
|
| 327 |
+
|
| 328 |
+
h1 {
|
| 329 |
+
margin-top: 20px;
|
| 330 |
+
font-size: 38px;
|
| 331 |
+
line-height: 44px;
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
h2 {
|
| 335 |
+
margin-top: 20px;
|
| 336 |
+
font-size: 32px;
|
| 337 |
+
line-height: 36px;
|
| 338 |
+
}
|
| 339 |
+
|
| 340 |
+
h3 {
|
| 341 |
+
margin-top: 20px;
|
| 342 |
+
font-size: 24px;
|
| 343 |
+
line-height: 30px;
|
| 344 |
+
}
|
| 345 |
+
|
| 346 |
+
h4 {
|
| 347 |
+
margin-top: 10px;
|
| 348 |
+
font-size: 18px;
|
| 349 |
+
line-height: 24px;
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
h5 {
|
| 353 |
+
margin-top: 10px;
|
| 354 |
+
font-size: 14px;
|
| 355 |
+
line-height: 20px;
|
| 356 |
+
}
|
| 357 |
+
|
| 358 |
+
h6 {
|
| 359 |
+
margin-top: 10px;
|
| 360 |
+
font-size: 12px;
|
| 361 |
+
line-height: 18px;
|
| 362 |
+
}
|
| 363 |
+
|
| 364 |
+
p {
|
| 365 |
+
margin-top: 0;
|
| 366 |
+
margin-bottom: 10px;
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
blockquote {
|
| 370 |
+
border-left: 5px solid #e2e2e2;
|
| 371 |
+
margin: 0 0 10px;
|
| 372 |
+
padding: 10px 20px;
|
| 373 |
+
font-size: 18px;
|
| 374 |
+
line-height: 22px;
|
| 375 |
+
}
|
| 376 |
+
|
| 377 |
+
figure {
|
| 378 |
+
margin: 0 0 10px;
|
| 379 |
+
}
|
| 380 |
+
|
| 381 |
+
figcaption {
|
| 382 |
+
text-align: center;
|
| 383 |
+
margin-top: 5px;
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
+
ul,
|
| 387 |
+
ol {
|
| 388 |
+
margin-top: 0;
|
| 389 |
+
margin-bottom: 10px;
|
| 390 |
+
padding-left: 40px;
|
| 391 |
+
}
|
| 392 |
+
|
| 393 |
+
.w-list-unstyled {
|
| 394 |
+
padding-left: 0;
|
| 395 |
+
list-style: none;
|
| 396 |
+
}
|
| 397 |
+
|
| 398 |
+
.w-embed:before,
|
| 399 |
+
.w-embed:after {
|
| 400 |
+
content: " ";
|
| 401 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 402 |
+
display: table;
|
| 403 |
+
}
|
| 404 |
+
|
| 405 |
+
.w-embed:after {
|
| 406 |
+
clear: both;
|
| 407 |
+
}
|
| 408 |
+
|
| 409 |
+
.w-video {
|
| 410 |
+
width: 100%;
|
| 411 |
+
padding: 0;
|
| 412 |
+
position: relative;
|
| 413 |
+
}
|
| 414 |
+
|
| 415 |
+
.w-video iframe,
|
| 416 |
+
.w-video object,
|
| 417 |
+
.w-video embed {
|
| 418 |
+
width: 100%;
|
| 419 |
+
height: 100%;
|
| 420 |
+
border: none;
|
| 421 |
+
position: absolute;
|
| 422 |
+
top: 0;
|
| 423 |
+
left: 0;
|
| 424 |
+
}
|
| 425 |
+
|
| 426 |
+
fieldset {
|
| 427 |
+
border: 0;
|
| 428 |
+
margin: 0;
|
| 429 |
+
padding: 0;
|
| 430 |
+
}
|
| 431 |
+
|
| 432 |
+
button,
|
| 433 |
+
[type="button"],
|
| 434 |
+
[type="reset"] {
|
| 435 |
+
cursor: pointer;
|
| 436 |
+
border: 0;
|
| 437 |
+
}
|
| 438 |
+
|
| 439 |
+
.w-form {
|
| 440 |
+
margin: 0 0 15px;
|
| 441 |
+
}
|
| 442 |
+
|
| 443 |
+
.w-form-done {
|
| 444 |
+
text-align: center;
|
| 445 |
+
background-color: #ddd;
|
| 446 |
+
padding: 20px;
|
| 447 |
+
display: none;
|
| 448 |
+
}
|
| 449 |
+
|
| 450 |
+
.w-form-fail {
|
| 451 |
+
background-color: #ffdede;
|
| 452 |
+
margin-top: 10px;
|
| 453 |
+
padding: 10px;
|
| 454 |
+
display: none;
|
| 455 |
+
}
|
| 456 |
+
|
| 457 |
+
label {
|
| 458 |
+
margin-bottom: 5px;
|
| 459 |
+
font-weight: bold;
|
| 460 |
+
display: block;
|
| 461 |
+
}
|
| 462 |
+
|
| 463 |
+
.w-input,
|
| 464 |
+
.w-select {
|
| 465 |
+
width: 100%;
|
| 466 |
+
height: 38px;
|
| 467 |
+
color: #333;
|
| 468 |
+
background-color: #fff;
|
| 469 |
+
border: 1px solid #ccc;
|
| 470 |
+
margin-bottom: 10px;
|
| 471 |
+
padding: 8px 12px;
|
| 472 |
+
font-size: 14px;
|
| 473 |
+
line-height: 1.42857;
|
| 474 |
+
display: block;
|
| 475 |
+
}
|
| 476 |
+
|
| 477 |
+
.w-input:-moz-placeholder,
|
| 478 |
+
.w-select:-moz-placeholder {
|
| 479 |
+
color: #999;
|
| 480 |
+
}
|
| 481 |
+
|
| 482 |
+
.w-input::-moz-placeholder,
|
| 483 |
+
.w-select::-moz-placeholder {
|
| 484 |
+
color: #999;
|
| 485 |
+
opacity: 1;
|
| 486 |
+
}
|
| 487 |
+
|
| 488 |
+
.w-input:-ms-input-placeholder,
|
| 489 |
+
.w-select:-ms-input-placeholder {
|
| 490 |
+
color: #999;
|
| 491 |
+
}
|
| 492 |
+
|
| 493 |
+
.w-input::-webkit-input-placeholder,
|
| 494 |
+
.w-select::-webkit-input-placeholder {
|
| 495 |
+
color: #999;
|
| 496 |
+
}
|
| 497 |
+
|
| 498 |
+
.w-input:focus,
|
| 499 |
+
.w-select:focus {
|
| 500 |
+
border-color: #3898ec;
|
| 501 |
+
outline: 0;
|
| 502 |
+
}
|
| 503 |
+
|
| 504 |
+
.w-input[disabled],
|
| 505 |
+
.w-select[disabled],
|
| 506 |
+
.w-input[readonly],
|
| 507 |
+
.w-select[readonly],
|
| 508 |
+
fieldset[disabled] .w-input,
|
| 509 |
+
fieldset[disabled] .w-select {
|
| 510 |
+
cursor: not-allowed;
|
| 511 |
+
}
|
| 512 |
+
|
| 513 |
+
.w-input[disabled]:not(.w-input-disabled),
|
| 514 |
+
.w-select[disabled]:not(.w-input-disabled),
|
| 515 |
+
.w-input[readonly],
|
| 516 |
+
.w-select[readonly],
|
| 517 |
+
fieldset[disabled]:not(.w-input-disabled) .w-input,
|
| 518 |
+
fieldset[disabled]:not(.w-input-disabled) .w-select {
|
| 519 |
+
background-color: #eee;
|
| 520 |
+
}
|
| 521 |
+
|
| 522 |
+
textarea.w-input,
|
| 523 |
+
textarea.w-select {
|
| 524 |
+
height: auto;
|
| 525 |
+
}
|
| 526 |
+
|
| 527 |
+
.w-select {
|
| 528 |
+
background-color: #f3f3f3;
|
| 529 |
+
}
|
| 530 |
+
|
| 531 |
+
.w-select[multiple] {
|
| 532 |
+
height: auto;
|
| 533 |
+
}
|
| 534 |
+
|
| 535 |
+
.w-form-label {
|
| 536 |
+
cursor: pointer;
|
| 537 |
+
margin-bottom: 0;
|
| 538 |
+
font-weight: normal;
|
| 539 |
+
display: inline-block;
|
| 540 |
+
}
|
| 541 |
+
|
| 542 |
+
.w-radio {
|
| 543 |
+
margin-bottom: 5px;
|
| 544 |
+
padding-left: 20px;
|
| 545 |
+
display: block;
|
| 546 |
+
}
|
| 547 |
+
|
| 548 |
+
.w-radio:before,
|
| 549 |
+
.w-radio:after {
|
| 550 |
+
content: " ";
|
| 551 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 552 |
+
display: table;
|
| 553 |
+
}
|
| 554 |
+
|
| 555 |
+
.w-radio:after {
|
| 556 |
+
clear: both;
|
| 557 |
+
}
|
| 558 |
+
|
| 559 |
+
.w-radio-input {
|
| 560 |
+
margin: 4px 0 0;
|
| 561 |
+
margin-top: 1px \9;
|
| 562 |
+
float: left;
|
| 563 |
+
margin-top: 3px;
|
| 564 |
+
margin-left: -20px;
|
| 565 |
+
line-height: normal;
|
| 566 |
+
}
|
| 567 |
+
|
| 568 |
+
.w-file-upload {
|
| 569 |
+
margin-bottom: 10px;
|
| 570 |
+
display: block;
|
| 571 |
+
}
|
| 572 |
+
|
| 573 |
+
.w-file-upload-input {
|
| 574 |
+
width: .1px;
|
| 575 |
+
height: .1px;
|
| 576 |
+
opacity: 0;
|
| 577 |
+
z-index: -100;
|
| 578 |
+
position: absolute;
|
| 579 |
+
overflow: hidden;
|
| 580 |
+
}
|
| 581 |
+
|
| 582 |
+
.w-file-upload-default,
|
| 583 |
+
.w-file-upload-uploading,
|
| 584 |
+
.w-file-upload-success {
|
| 585 |
+
color: #333;
|
| 586 |
+
display: inline-block;
|
| 587 |
+
}
|
| 588 |
+
|
| 589 |
+
.w-file-upload-error {
|
| 590 |
+
margin-top: 10px;
|
| 591 |
+
display: block;
|
| 592 |
+
}
|
| 593 |
+
|
| 594 |
+
.w-file-upload-default.w-hidden,
|
| 595 |
+
.w-file-upload-uploading.w-hidden,
|
| 596 |
+
.w-file-upload-error.w-hidden,
|
| 597 |
+
.w-file-upload-success.w-hidden {
|
| 598 |
+
display: none;
|
| 599 |
+
}
|
| 600 |
+
|
| 601 |
+
.w-file-upload-uploading-btn {
|
| 602 |
+
cursor: pointer;
|
| 603 |
+
background-color: #fafafa;
|
| 604 |
+
border: 1px solid #ccc;
|
| 605 |
+
margin: 0;
|
| 606 |
+
padding: 8px 12px;
|
| 607 |
+
font-size: 14px;
|
| 608 |
+
font-weight: normal;
|
| 609 |
+
display: flex;
|
| 610 |
+
}
|
| 611 |
+
|
| 612 |
+
.w-file-upload-file {
|
| 613 |
+
background-color: #fafafa;
|
| 614 |
+
border: 1px solid #ccc;
|
| 615 |
+
flex-grow: 1;
|
| 616 |
+
justify-content: space-between;
|
| 617 |
+
margin: 0;
|
| 618 |
+
padding: 8px 9px 8px 11px;
|
| 619 |
+
display: flex;
|
| 620 |
+
}
|
| 621 |
+
|
| 622 |
+
.w-file-upload-file-name {
|
| 623 |
+
font-size: 14px;
|
| 624 |
+
font-weight: normal;
|
| 625 |
+
display: block;
|
| 626 |
+
}
|
| 627 |
+
|
| 628 |
+
.w-file-remove-link {
|
| 629 |
+
width: auto;
|
| 630 |
+
height: auto;
|
| 631 |
+
cursor: pointer;
|
| 632 |
+
margin-top: 3px;
|
| 633 |
+
margin-left: 10px;
|
| 634 |
+
padding: 3px;
|
| 635 |
+
display: block;
|
| 636 |
+
}
|
| 637 |
+
|
| 638 |
+
.w-icon-file-upload-remove {
|
| 639 |
+
margin: auto;
|
| 640 |
+
font-size: 10px;
|
| 641 |
+
}
|
| 642 |
+
|
| 643 |
+
.w-file-upload-error-msg {
|
| 644 |
+
color: #ea384c;
|
| 645 |
+
padding: 2px 0;
|
| 646 |
+
display: inline-block;
|
| 647 |
+
}
|
| 648 |
+
|
| 649 |
+
.w-file-upload-info {
|
| 650 |
+
padding: 0 12px;
|
| 651 |
+
line-height: 38px;
|
| 652 |
+
display: inline-block;
|
| 653 |
+
}
|
| 654 |
+
|
| 655 |
+
.w-file-upload-label {
|
| 656 |
+
cursor: pointer;
|
| 657 |
+
background-color: #fafafa;
|
| 658 |
+
border: 1px solid #ccc;
|
| 659 |
+
margin: 0;
|
| 660 |
+
padding: 8px 12px;
|
| 661 |
+
font-size: 14px;
|
| 662 |
+
font-weight: normal;
|
| 663 |
+
display: inline-block;
|
| 664 |
+
}
|
| 665 |
+
|
| 666 |
+
.w-icon-file-upload-icon,
|
| 667 |
+
.w-icon-file-upload-uploading {
|
| 668 |
+
width: 20px;
|
| 669 |
+
margin-right: 8px;
|
| 670 |
+
display: inline-block;
|
| 671 |
+
}
|
| 672 |
+
|
| 673 |
+
.w-icon-file-upload-uploading {
|
| 674 |
+
height: 20px;
|
| 675 |
+
}
|
| 676 |
+
|
| 677 |
+
.w-container {
|
| 678 |
+
max-width: 940px;
|
| 679 |
+
margin-left: auto;
|
| 680 |
+
margin-right: auto;
|
| 681 |
+
}
|
| 682 |
+
|
| 683 |
+
.w-container:before,
|
| 684 |
+
.w-container:after {
|
| 685 |
+
content: " ";
|
| 686 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 687 |
+
display: table;
|
| 688 |
+
}
|
| 689 |
+
|
| 690 |
+
.w-container:after {
|
| 691 |
+
clear: both;
|
| 692 |
+
}
|
| 693 |
+
|
| 694 |
+
.w-container .w-row {
|
| 695 |
+
margin-left: -10px;
|
| 696 |
+
margin-right: -10px;
|
| 697 |
+
}
|
| 698 |
+
|
| 699 |
+
.w-row:before,
|
| 700 |
+
.w-row:after {
|
| 701 |
+
content: " ";
|
| 702 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 703 |
+
display: table;
|
| 704 |
+
}
|
| 705 |
+
|
| 706 |
+
.w-row:after {
|
| 707 |
+
clear: both;
|
| 708 |
+
}
|
| 709 |
+
|
| 710 |
+
.w-row .w-row {
|
| 711 |
+
margin-left: 0;
|
| 712 |
+
margin-right: 0;
|
| 713 |
+
}
|
| 714 |
+
|
| 715 |
+
.w-col {
|
| 716 |
+
float: left;
|
| 717 |
+
width: 100%;
|
| 718 |
+
min-height: 1px;
|
| 719 |
+
padding-left: 10px;
|
| 720 |
+
padding-right: 10px;
|
| 721 |
+
position: relative;
|
| 722 |
+
}
|
| 723 |
+
|
| 724 |
+
.w-col .w-col {
|
| 725 |
+
padding-left: 0;
|
| 726 |
+
padding-right: 0;
|
| 727 |
+
}
|
| 728 |
+
|
| 729 |
+
.w-col-1 {
|
| 730 |
+
width: 8.33333%;
|
| 731 |
+
}
|
| 732 |
+
|
| 733 |
+
.w-col-2 {
|
| 734 |
+
width: 16.6667%;
|
| 735 |
+
}
|
| 736 |
+
|
| 737 |
+
.w-col-3 {
|
| 738 |
+
width: 25%;
|
| 739 |
+
}
|
| 740 |
+
|
| 741 |
+
.w-col-4 {
|
| 742 |
+
width: 33.3333%;
|
| 743 |
+
}
|
| 744 |
+
|
| 745 |
+
.w-col-5 {
|
| 746 |
+
width: 41.6667%;
|
| 747 |
+
}
|
| 748 |
+
|
| 749 |
+
.w-col-6 {
|
| 750 |
+
width: 50%;
|
| 751 |
+
}
|
| 752 |
+
|
| 753 |
+
.w-col-7 {
|
| 754 |
+
width: 58.3333%;
|
| 755 |
+
}
|
| 756 |
+
|
| 757 |
+
.w-col-8 {
|
| 758 |
+
width: 66.6667%;
|
| 759 |
+
}
|
| 760 |
+
|
| 761 |
+
.w-col-9 {
|
| 762 |
+
width: 75%;
|
| 763 |
+
}
|
| 764 |
+
|
| 765 |
+
.w-col-10 {
|
| 766 |
+
width: 83.3333%;
|
| 767 |
+
}
|
| 768 |
+
|
| 769 |
+
.w-col-11 {
|
| 770 |
+
width: 91.6667%;
|
| 771 |
+
}
|
| 772 |
+
|
| 773 |
+
.w-col-12 {
|
| 774 |
+
width: 100%;
|
| 775 |
+
}
|
| 776 |
+
|
| 777 |
+
.w-hidden-main {
|
| 778 |
+
display: none !important;
|
| 779 |
+
}
|
| 780 |
+
|
| 781 |
+
@media screen and (max-width: 991px) {
|
| 782 |
+
.w-container {
|
| 783 |
+
max-width: 728px;
|
| 784 |
+
}
|
| 785 |
+
.w-hidden-main {
|
| 786 |
+
display: inherit !important;
|
| 787 |
+
}
|
| 788 |
+
.w-hidden-medium {
|
| 789 |
+
display: none !important;
|
| 790 |
+
}
|
| 791 |
+
.w-col-medium-1 {
|
| 792 |
+
width: 8.33333%;
|
| 793 |
+
}
|
| 794 |
+
.w-col-medium-2 {
|
| 795 |
+
width: 16.6667%;
|
| 796 |
+
}
|
| 797 |
+
.w-col-medium-3 {
|
| 798 |
+
width: 25%;
|
| 799 |
+
}
|
| 800 |
+
.w-col-medium-4 {
|
| 801 |
+
width: 33.3333%;
|
| 802 |
+
}
|
| 803 |
+
.w-col-medium-5 {
|
| 804 |
+
width: 41.6667%;
|
| 805 |
+
}
|
| 806 |
+
.w-col-medium-6 {
|
| 807 |
+
width: 50%;
|
| 808 |
+
}
|
| 809 |
+
.w-col-medium-7 {
|
| 810 |
+
width: 58.3333%;
|
| 811 |
+
}
|
| 812 |
+
.w-col-medium-8 {
|
| 813 |
+
width: 66.6667%;
|
| 814 |
+
}
|
| 815 |
+
.w-col-medium-9 {
|
| 816 |
+
width: 75%;
|
| 817 |
+
}
|
| 818 |
+
.w-col-medium-10 {
|
| 819 |
+
width: 83.3333%;
|
| 820 |
+
}
|
| 821 |
+
.w-col-medium-11 {
|
| 822 |
+
width: 91.6667%;
|
| 823 |
+
}
|
| 824 |
+
.w-col-medium-12 {
|
| 825 |
+
width: 100%;
|
| 826 |
+
}
|
| 827 |
+
.w-col-stack {
|
| 828 |
+
width: 100%;
|
| 829 |
+
left: auto;
|
| 830 |
+
right: auto;
|
| 831 |
+
}
|
| 832 |
+
}
|
| 833 |
+
|
| 834 |
+
@media screen and (max-width: 767px) {
|
| 835 |
+
.w-hidden-main,
|
| 836 |
+
.w-hidden-medium {
|
| 837 |
+
display: inherit !important;
|
| 838 |
+
}
|
| 839 |
+
.w-hidden-small {
|
| 840 |
+
display: none !important;
|
| 841 |
+
}
|
| 842 |
+
.w-row,
|
| 843 |
+
.w-container .w-row {
|
| 844 |
+
margin-left: 0;
|
| 845 |
+
margin-right: 0;
|
| 846 |
+
}
|
| 847 |
+
.w-col {
|
| 848 |
+
width: 100%;
|
| 849 |
+
left: auto;
|
| 850 |
+
right: auto;
|
| 851 |
+
}
|
| 852 |
+
.w-col-small-1 {
|
| 853 |
+
width: 8.33333%;
|
| 854 |
+
}
|
| 855 |
+
.w-col-small-2 {
|
| 856 |
+
width: 16.6667%;
|
| 857 |
+
}
|
| 858 |
+
.w-col-small-3 {
|
| 859 |
+
width: 25%;
|
| 860 |
+
}
|
| 861 |
+
.w-col-small-4 {
|
| 862 |
+
width: 33.3333%;
|
| 863 |
+
}
|
| 864 |
+
.w-col-small-5 {
|
| 865 |
+
width: 41.6667%;
|
| 866 |
+
}
|
| 867 |
+
.w-col-small-6 {
|
| 868 |
+
width: 50%;
|
| 869 |
+
}
|
| 870 |
+
.w-col-small-7 {
|
| 871 |
+
width: 58.3333%;
|
| 872 |
+
}
|
| 873 |
+
.w-col-small-8 {
|
| 874 |
+
width: 66.6667%;
|
| 875 |
+
}
|
| 876 |
+
.w-col-small-9 {
|
| 877 |
+
width: 75%;
|
| 878 |
+
}
|
| 879 |
+
.w-col-small-10 {
|
| 880 |
+
width: 83.3333%;
|
| 881 |
+
}
|
| 882 |
+
.w-col-small-11 {
|
| 883 |
+
width: 91.6667%;
|
| 884 |
+
}
|
| 885 |
+
.w-col-small-12 {
|
| 886 |
+
width: 100%;
|
| 887 |
+
}
|
| 888 |
+
}
|
| 889 |
+
|
| 890 |
+
@media screen and (max-width: 479px) {
|
| 891 |
+
.w-container {
|
| 892 |
+
max-width: none;
|
| 893 |
+
}
|
| 894 |
+
.w-hidden-main,
|
| 895 |
+
.w-hidden-medium,
|
| 896 |
+
.w-hidden-small {
|
| 897 |
+
display: inherit !important;
|
| 898 |
+
}
|
| 899 |
+
.w-hidden-tiny {
|
| 900 |
+
display: none !important;
|
| 901 |
+
}
|
| 902 |
+
.w-col {
|
| 903 |
+
width: 100%;
|
| 904 |
+
}
|
| 905 |
+
.w-col-tiny-1 {
|
| 906 |
+
width: 8.33333%;
|
| 907 |
+
}
|
| 908 |
+
.w-col-tiny-2 {
|
| 909 |
+
width: 16.6667%;
|
| 910 |
+
}
|
| 911 |
+
.w-col-tiny-3 {
|
| 912 |
+
width: 25%;
|
| 913 |
+
}
|
| 914 |
+
.w-col-tiny-4 {
|
| 915 |
+
width: 33.3333%;
|
| 916 |
+
}
|
| 917 |
+
.w-col-tiny-5 {
|
| 918 |
+
width: 41.6667%;
|
| 919 |
+
}
|
| 920 |
+
.w-col-tiny-6 {
|
| 921 |
+
width: 50%;
|
| 922 |
+
}
|
| 923 |
+
.w-col-tiny-7 {
|
| 924 |
+
width: 58.3333%;
|
| 925 |
+
}
|
| 926 |
+
.w-col-tiny-8 {
|
| 927 |
+
width: 66.6667%;
|
| 928 |
+
}
|
| 929 |
+
.w-col-tiny-9 {
|
| 930 |
+
width: 75%;
|
| 931 |
+
}
|
| 932 |
+
.w-col-tiny-10 {
|
| 933 |
+
width: 83.3333%;
|
| 934 |
+
}
|
| 935 |
+
.w-col-tiny-11 {
|
| 936 |
+
width: 91.6667%;
|
| 937 |
+
}
|
| 938 |
+
.w-col-tiny-12 {
|
| 939 |
+
width: 100%;
|
| 940 |
+
}
|
| 941 |
+
}
|
| 942 |
+
|
| 943 |
+
.w-widget {
|
| 944 |
+
position: relative;
|
| 945 |
+
}
|
| 946 |
+
|
| 947 |
+
.w-widget-map {
|
| 948 |
+
width: 100%;
|
| 949 |
+
height: 400px;
|
| 950 |
+
}
|
| 951 |
+
|
| 952 |
+
.w-widget-map label {
|
| 953 |
+
width: auto;
|
| 954 |
+
display: inline;
|
| 955 |
+
}
|
| 956 |
+
|
| 957 |
+
.w-widget-map img {
|
| 958 |
+
max-width: inherit;
|
| 959 |
+
}
|
| 960 |
+
|
| 961 |
+
.w-widget-map .gm-style-iw {
|
| 962 |
+
text-align: center;
|
| 963 |
+
}
|
| 964 |
+
|
| 965 |
+
.w-widget-map .gm-style-iw>button {
|
| 966 |
+
display: none !important;
|
| 967 |
+
}
|
| 968 |
+
|
| 969 |
+
.w-widget-twitter {
|
| 970 |
+
overflow: hidden;
|
| 971 |
+
}
|
| 972 |
+
|
| 973 |
+
.w-widget-twitter-count-shim {
|
| 974 |
+
vertical-align: top;
|
| 975 |
+
width: 28px;
|
| 976 |
+
height: 20px;
|
| 977 |
+
text-align: center;
|
| 978 |
+
background: #fff;
|
| 979 |
+
border: 1px solid #758696;
|
| 980 |
+
border-radius: 3px;
|
| 981 |
+
display: inline-block;
|
| 982 |
+
position: relative;
|
| 983 |
+
}
|
| 984 |
+
|
| 985 |
+
.w-widget-twitter-count-shim * {
|
| 986 |
+
pointer-events: none;
|
| 987 |
+
-webkit-user-select: none;
|
| 988 |
+
-ms-user-select: none;
|
| 989 |
+
user-select: none;
|
| 990 |
+
}
|
| 991 |
+
|
| 992 |
+
.w-widget-twitter-count-shim .w-widget-twitter-count-inner {
|
| 993 |
+
text-align: center;
|
| 994 |
+
color: #999;
|
| 995 |
+
font-family: serif;
|
| 996 |
+
font-size: 15px;
|
| 997 |
+
line-height: 12px;
|
| 998 |
+
position: relative;
|
| 999 |
+
}
|
| 1000 |
+
|
| 1001 |
+
.w-widget-twitter-count-shim .w-widget-twitter-count-clear {
|
| 1002 |
+
display: block;
|
| 1003 |
+
position: relative;
|
| 1004 |
+
}
|
| 1005 |
+
|
| 1006 |
+
.w-widget-twitter-count-shim.w--large {
|
| 1007 |
+
width: 36px;
|
| 1008 |
+
height: 28px;
|
| 1009 |
+
}
|
| 1010 |
+
|
| 1011 |
+
.w-widget-twitter-count-shim.w--large .w-widget-twitter-count-inner {
|
| 1012 |
+
font-size: 18px;
|
| 1013 |
+
line-height: 18px;
|
| 1014 |
+
}
|
| 1015 |
+
|
| 1016 |
+
.w-widget-twitter-count-shim:not(.w--vertical) {
|
| 1017 |
+
margin-left: 5px;
|
| 1018 |
+
margin-right: 8px;
|
| 1019 |
+
}
|
| 1020 |
+
|
| 1021 |
+
.w-widget-twitter-count-shim:not(.w--vertical).w--large {
|
| 1022 |
+
margin-left: 6px;
|
| 1023 |
+
}
|
| 1024 |
+
|
| 1025 |
+
.w-widget-twitter-count-shim:not(.w--vertical):before,
|
| 1026 |
+
.w-widget-twitter-count-shim:not(.w--vertical):after {
|
| 1027 |
+
content: " ";
|
| 1028 |
+
height: 0;
|
| 1029 |
+
width: 0;
|
| 1030 |
+
pointer-events: none;
|
| 1031 |
+
border: solid rgba(0, 0, 0, 0);
|
| 1032 |
+
position: absolute;
|
| 1033 |
+
top: 50%;
|
| 1034 |
+
left: 0;
|
| 1035 |
+
}
|
| 1036 |
+
|
| 1037 |
+
.w-widget-twitter-count-shim:not(.w--vertical):before {
|
| 1038 |
+
border-width: 4px;
|
| 1039 |
+
border-color: rgba(117, 134, 150, 0) #5d6c7b rgba(117, 134, 150, 0) rgba(117, 134, 150, 0);
|
| 1040 |
+
margin-top: -4px;
|
| 1041 |
+
margin-left: -9px;
|
| 1042 |
+
}
|
| 1043 |
+
|
| 1044 |
+
.w-widget-twitter-count-shim:not(.w--vertical).w--large:before {
|
| 1045 |
+
border-width: 5px;
|
| 1046 |
+
margin-top: -5px;
|
| 1047 |
+
margin-left: -10px;
|
| 1048 |
+
}
|
| 1049 |
+
|
| 1050 |
+
.w-widget-twitter-count-shim:not(.w--vertical):after {
|
| 1051 |
+
border-width: 4px;
|
| 1052 |
+
border-color: rgba(255, 255, 255, 0) #fff rgba(255, 255, 255, 0) rgba(255, 255, 255, 0);
|
| 1053 |
+
margin-top: -4px;
|
| 1054 |
+
margin-left: -8px;
|
| 1055 |
+
}
|
| 1056 |
+
|
| 1057 |
+
.w-widget-twitter-count-shim:not(.w--vertical).w--large:after {
|
| 1058 |
+
border-width: 5px;
|
| 1059 |
+
margin-top: -5px;
|
| 1060 |
+
margin-left: -9px;
|
| 1061 |
+
}
|
| 1062 |
+
|
| 1063 |
+
.w-widget-twitter-count-shim.w--vertical {
|
| 1064 |
+
width: 61px;
|
| 1065 |
+
height: 33px;
|
| 1066 |
+
margin-bottom: 8px;
|
| 1067 |
+
}
|
| 1068 |
+
|
| 1069 |
+
.w-widget-twitter-count-shim.w--vertical:before,
|
| 1070 |
+
.w-widget-twitter-count-shim.w--vertical:after {
|
| 1071 |
+
content: " ";
|
| 1072 |
+
height: 0;
|
| 1073 |
+
width: 0;
|
| 1074 |
+
pointer-events: none;
|
| 1075 |
+
border: solid rgba(0, 0, 0, 0);
|
| 1076 |
+
position: absolute;
|
| 1077 |
+
top: 100%;
|
| 1078 |
+
left: 50%;
|
| 1079 |
+
}
|
| 1080 |
+
|
| 1081 |
+
.w-widget-twitter-count-shim.w--vertical:before {
|
| 1082 |
+
border-width: 5px;
|
| 1083 |
+
border-color: #5d6c7b rgba(117, 134, 150, 0) rgba(117, 134, 150, 0);
|
| 1084 |
+
margin-left: -5px;
|
| 1085 |
+
}
|
| 1086 |
+
|
| 1087 |
+
.w-widget-twitter-count-shim.w--vertical:after {
|
| 1088 |
+
border-width: 4px;
|
| 1089 |
+
border-color: #fff rgba(255, 255, 255, 0) rgba(255, 255, 255, 0);
|
| 1090 |
+
margin-left: -4px;
|
| 1091 |
+
}
|
| 1092 |
+
|
| 1093 |
+
.w-widget-twitter-count-shim.w--vertical .w-widget-twitter-count-inner {
|
| 1094 |
+
font-size: 18px;
|
| 1095 |
+
line-height: 22px;
|
| 1096 |
+
}
|
| 1097 |
+
|
| 1098 |
+
.w-widget-twitter-count-shim.w--vertical.w--large {
|
| 1099 |
+
width: 76px;
|
| 1100 |
+
}
|
| 1101 |
+
|
| 1102 |
+
.w-background-video {
|
| 1103 |
+
height: 500px;
|
| 1104 |
+
color: #fff;
|
| 1105 |
+
position: relative;
|
| 1106 |
+
overflow: hidden;
|
| 1107 |
+
}
|
| 1108 |
+
|
| 1109 |
+
.w-background-video>video {
|
| 1110 |
+
width: 100%;
|
| 1111 |
+
height: 100%;
|
| 1112 |
+
object-fit: cover;
|
| 1113 |
+
z-index: -100;
|
| 1114 |
+
background-position: 50%;
|
| 1115 |
+
background-size: cover;
|
| 1116 |
+
margin: auto;
|
| 1117 |
+
position: absolute;
|
| 1118 |
+
top: -100%;
|
| 1119 |
+
bottom: -100%;
|
| 1120 |
+
left: -100%;
|
| 1121 |
+
right: -100%;
|
| 1122 |
+
}
|
| 1123 |
+
|
| 1124 |
+
.w-background-video>video::-webkit-media-controls-start-playback-button {
|
| 1125 |
+
-webkit-appearance: none;
|
| 1126 |
+
display: none !important;
|
| 1127 |
+
}
|
| 1128 |
+
|
| 1129 |
+
.w-background-video--control {
|
| 1130 |
+
background-color: rgba(0, 0, 0, 0);
|
| 1131 |
+
padding: 0;
|
| 1132 |
+
position: absolute;
|
| 1133 |
+
bottom: 1em;
|
| 1134 |
+
right: 1em;
|
| 1135 |
+
}
|
| 1136 |
+
|
| 1137 |
+
.w-background-video--control>[hidden] {
|
| 1138 |
+
display: none !important;
|
| 1139 |
+
}
|
| 1140 |
+
|
| 1141 |
+
.w-slider {
|
| 1142 |
+
height: 300px;
|
| 1143 |
+
text-align: center;
|
| 1144 |
+
clear: both;
|
| 1145 |
+
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
| 1146 |
+
background: #ddd;
|
| 1147 |
+
position: relative;
|
| 1148 |
+
}
|
| 1149 |
+
|
| 1150 |
+
.w-slider-mask {
|
| 1151 |
+
z-index: 1;
|
| 1152 |
+
height: 100%;
|
| 1153 |
+
white-space: nowrap;
|
| 1154 |
+
display: block;
|
| 1155 |
+
position: relative;
|
| 1156 |
+
left: 0;
|
| 1157 |
+
right: 0;
|
| 1158 |
+
overflow: hidden;
|
| 1159 |
+
}
|
| 1160 |
+
|
| 1161 |
+
.w-slide {
|
| 1162 |
+
vertical-align: top;
|
| 1163 |
+
width: 100%;
|
| 1164 |
+
height: 100%;
|
| 1165 |
+
white-space: normal;
|
| 1166 |
+
text-align: left;
|
| 1167 |
+
display: inline-block;
|
| 1168 |
+
position: relative;
|
| 1169 |
+
}
|
| 1170 |
+
|
| 1171 |
+
.w-slider-nav {
|
| 1172 |
+
z-index: 2;
|
| 1173 |
+
height: 40px;
|
| 1174 |
+
text-align: center;
|
| 1175 |
+
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
| 1176 |
+
margin: auto;
|
| 1177 |
+
padding-top: 10px;
|
| 1178 |
+
position: absolute;
|
| 1179 |
+
top: auto;
|
| 1180 |
+
bottom: 0;
|
| 1181 |
+
left: 0;
|
| 1182 |
+
right: 0;
|
| 1183 |
+
}
|
| 1184 |
+
|
| 1185 |
+
.w-slider-nav.w-round>div {
|
| 1186 |
+
border-radius: 100%;
|
| 1187 |
+
}
|
| 1188 |
+
|
| 1189 |
+
.w-slider-nav.w-num>div {
|
| 1190 |
+
width: auto;
|
| 1191 |
+
height: auto;
|
| 1192 |
+
font-size: inherit;
|
| 1193 |
+
line-height: inherit;
|
| 1194 |
+
padding: .2em .5em;
|
| 1195 |
+
}
|
| 1196 |
+
|
| 1197 |
+
.w-slider-nav.w-shadow>div {
|
| 1198 |
+
box-shadow: 0 0 3px rgba(51, 51, 51, .4);
|
| 1199 |
+
}
|
| 1200 |
+
|
| 1201 |
+
.w-slider-nav-invert {
|
| 1202 |
+
color: #fff;
|
| 1203 |
+
}
|
| 1204 |
+
|
| 1205 |
+
.w-slider-nav-invert>div {
|
| 1206 |
+
background-color: rgba(34, 34, 34, .4);
|
| 1207 |
+
}
|
| 1208 |
+
|
| 1209 |
+
.w-slider-nav-invert>div.w-active {
|
| 1210 |
+
background-color: #222;
|
| 1211 |
+
}
|
| 1212 |
+
|
| 1213 |
+
.w-slider-dot {
|
| 1214 |
+
width: 1em;
|
| 1215 |
+
height: 1em;
|
| 1216 |
+
cursor: pointer;
|
| 1217 |
+
background-color: rgba(255, 255, 255, .4);
|
| 1218 |
+
margin: 0 3px .5em;
|
| 1219 |
+
transition: background-color .1s, color .1s;
|
| 1220 |
+
display: inline-block;
|
| 1221 |
+
position: relative;
|
| 1222 |
+
}
|
| 1223 |
+
|
| 1224 |
+
.w-slider-dot.w-active {
|
| 1225 |
+
background-color: #fff;
|
| 1226 |
+
}
|
| 1227 |
+
|
| 1228 |
+
.w-slider-dot:focus {
|
| 1229 |
+
outline: none;
|
| 1230 |
+
box-shadow: 0 0 0 2px #fff;
|
| 1231 |
+
}
|
| 1232 |
+
|
| 1233 |
+
.w-slider-dot:focus.w-active {
|
| 1234 |
+
box-shadow: none;
|
| 1235 |
+
}
|
| 1236 |
+
|
| 1237 |
+
.w-slider-arrow-left,
|
| 1238 |
+
.w-slider-arrow-right {
|
| 1239 |
+
width: 80px;
|
| 1240 |
+
cursor: pointer;
|
| 1241 |
+
color: #fff;
|
| 1242 |
+
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
| 1243 |
+
-webkit-user-select: none;
|
| 1244 |
+
-ms-user-select: none;
|
| 1245 |
+
user-select: none;
|
| 1246 |
+
margin: auto;
|
| 1247 |
+
font-size: 40px;
|
| 1248 |
+
position: absolute;
|
| 1249 |
+
top: 0;
|
| 1250 |
+
bottom: 0;
|
| 1251 |
+
left: 0;
|
| 1252 |
+
right: 0;
|
| 1253 |
+
overflow: hidden;
|
| 1254 |
+
}
|
| 1255 |
+
|
| 1256 |
+
.w-slider-arrow-left [class^="w-icon-"],
|
| 1257 |
+
.w-slider-arrow-right [class^="w-icon-"],
|
| 1258 |
+
.w-slider-arrow-left [class*=" w-icon-"],
|
| 1259 |
+
.w-slider-arrow-right [class*=" w-icon-"] {
|
| 1260 |
+
position: absolute;
|
| 1261 |
+
}
|
| 1262 |
+
|
| 1263 |
+
.w-slider-arrow-left:focus,
|
| 1264 |
+
.w-slider-arrow-right:focus {
|
| 1265 |
+
outline: 0;
|
| 1266 |
+
}
|
| 1267 |
+
|
| 1268 |
+
.w-slider-arrow-left {
|
| 1269 |
+
z-index: 3;
|
| 1270 |
+
right: auto;
|
| 1271 |
+
}
|
| 1272 |
+
|
| 1273 |
+
.w-slider-arrow-right {
|
| 1274 |
+
z-index: 4;
|
| 1275 |
+
left: auto;
|
| 1276 |
+
}
|
| 1277 |
+
|
| 1278 |
+
.w-icon-slider-left,
|
| 1279 |
+
.w-icon-slider-right {
|
| 1280 |
+
width: 1em;
|
| 1281 |
+
height: 1em;
|
| 1282 |
+
margin: auto;
|
| 1283 |
+
top: 0;
|
| 1284 |
+
bottom: 0;
|
| 1285 |
+
left: 0;
|
| 1286 |
+
right: 0;
|
| 1287 |
+
}
|
| 1288 |
+
|
| 1289 |
+
.w-slider-aria-label {
|
| 1290 |
+
clip: rect(0 0 0 0);
|
| 1291 |
+
height: 1px;
|
| 1292 |
+
width: 1px;
|
| 1293 |
+
border: 0;
|
| 1294 |
+
margin: -1px;
|
| 1295 |
+
padding: 0;
|
| 1296 |
+
position: absolute;
|
| 1297 |
+
overflow: hidden;
|
| 1298 |
+
}
|
| 1299 |
+
|
| 1300 |
+
.w-slider-force-show {
|
| 1301 |
+
display: block !important;
|
| 1302 |
+
}
|
| 1303 |
+
|
| 1304 |
+
.w-dropdown {
|
| 1305 |
+
text-align: left;
|
| 1306 |
+
z-index: 900;
|
| 1307 |
+
margin-left: auto;
|
| 1308 |
+
margin-right: auto;
|
| 1309 |
+
display: inline-block;
|
| 1310 |
+
position: relative;
|
| 1311 |
+
}
|
| 1312 |
+
|
| 1313 |
+
.w-dropdown-btn,
|
| 1314 |
+
.w-dropdown-toggle,
|
| 1315 |
+
.w-dropdown-link {
|
| 1316 |
+
vertical-align: top;
|
| 1317 |
+
color: #222;
|
| 1318 |
+
text-align: left;
|
| 1319 |
+
white-space: nowrap;
|
| 1320 |
+
margin-left: auto;
|
| 1321 |
+
margin-right: auto;
|
| 1322 |
+
padding: 20px;
|
| 1323 |
+
text-decoration: none;
|
| 1324 |
+
position: relative;
|
| 1325 |
+
}
|
| 1326 |
+
|
| 1327 |
+
.w-dropdown-toggle {
|
| 1328 |
+
-webkit-user-select: none;
|
| 1329 |
+
-ms-user-select: none;
|
| 1330 |
+
user-select: none;
|
| 1331 |
+
cursor: pointer;
|
| 1332 |
+
padding-right: 40px;
|
| 1333 |
+
display: inline-block;
|
| 1334 |
+
}
|
| 1335 |
+
|
| 1336 |
+
.w-dropdown-toggle:focus {
|
| 1337 |
+
outline: 0;
|
| 1338 |
+
}
|
| 1339 |
+
|
| 1340 |
+
.w-icon-dropdown-toggle {
|
| 1341 |
+
width: 1em;
|
| 1342 |
+
height: 1em;
|
| 1343 |
+
margin: auto 20px auto auto;
|
| 1344 |
+
position: absolute;
|
| 1345 |
+
top: 0;
|
| 1346 |
+
bottom: 0;
|
| 1347 |
+
right: 0;
|
| 1348 |
+
}
|
| 1349 |
+
|
| 1350 |
+
.w-dropdown-list {
|
| 1351 |
+
min-width: 100%;
|
| 1352 |
+
background: #ddd;
|
| 1353 |
+
display: none;
|
| 1354 |
+
position: absolute;
|
| 1355 |
+
}
|
| 1356 |
+
|
| 1357 |
+
.w-dropdown-list.w--open {
|
| 1358 |
+
display: block;
|
| 1359 |
+
}
|
| 1360 |
+
|
| 1361 |
+
.w-dropdown-link {
|
| 1362 |
+
color: #222;
|
| 1363 |
+
padding: 10px 20px;
|
| 1364 |
+
display: block;
|
| 1365 |
+
}
|
| 1366 |
+
|
| 1367 |
+
.w-dropdown-link.w--current {
|
| 1368 |
+
color: #0082f3;
|
| 1369 |
+
}
|
| 1370 |
+
|
| 1371 |
+
.w-dropdown-link:focus {
|
| 1372 |
+
outline: 0;
|
| 1373 |
+
}
|
| 1374 |
+
|
| 1375 |
+
@media screen and (max-width: 767px) {
|
| 1376 |
+
.w-nav-brand {
|
| 1377 |
+
padding-left: 10px;
|
| 1378 |
+
}
|
| 1379 |
+
}
|
| 1380 |
+
|
| 1381 |
+
.w-lightbox-backdrop {
|
| 1382 |
+
cursor: auto;
|
| 1383 |
+
letter-spacing: normal;
|
| 1384 |
+
text-indent: 0;
|
| 1385 |
+
text-shadow: none;
|
| 1386 |
+
text-transform: none;
|
| 1387 |
+
visibility: visible;
|
| 1388 |
+
white-space: normal;
|
| 1389 |
+
word-break: normal;
|
| 1390 |
+
word-spacing: normal;
|
| 1391 |
+
word-wrap: normal;
|
| 1392 |
+
color: #fff;
|
| 1393 |
+
text-align: center;
|
| 1394 |
+
z-index: 2000;
|
| 1395 |
+
opacity: 0;
|
| 1396 |
+
-webkit-tap-highlight-color: transparent;
|
| 1397 |
+
background: rgba(0, 0, 0, .9);
|
| 1398 |
+
outline: 0;
|
| 1399 |
+
font-family: Helvetica Neue, Helvetica, Ubuntu, Segoe UI, Verdana, sans-serif;
|
| 1400 |
+
font-size: 17px;
|
| 1401 |
+
font-style: normal;
|
| 1402 |
+
font-weight: 300;
|
| 1403 |
+
line-height: 1.2;
|
| 1404 |
+
list-style: disc;
|
| 1405 |
+
position: fixed;
|
| 1406 |
+
top: 0;
|
| 1407 |
+
bottom: 0;
|
| 1408 |
+
left: 0;
|
| 1409 |
+
right: 0;
|
| 1410 |
+
}
|
| 1411 |
+
|
| 1412 |
+
.w-lightbox-backdrop,
|
| 1413 |
+
.w-lightbox-container {
|
| 1414 |
+
height: 100%;
|
| 1415 |
+
-webkit-overflow-scrolling: touch;
|
| 1416 |
+
overflow: auto;
|
| 1417 |
+
}
|
| 1418 |
+
|
| 1419 |
+
.w-lightbox-content {
|
| 1420 |
+
height: 100vh;
|
| 1421 |
+
position: relative;
|
| 1422 |
+
overflow: hidden;
|
| 1423 |
+
}
|
| 1424 |
+
|
| 1425 |
+
.w-lightbox-view {
|
| 1426 |
+
width: 100vw;
|
| 1427 |
+
height: 100vh;
|
| 1428 |
+
opacity: 0;
|
| 1429 |
+
position: absolute;
|
| 1430 |
+
}
|
| 1431 |
+
|
| 1432 |
+
.w-lightbox-view:before {
|
| 1433 |
+
content: "";
|
| 1434 |
+
height: 100vh;
|
| 1435 |
+
}
|
| 1436 |
+
|
| 1437 |
+
.w-lightbox-group,
|
| 1438 |
+
.w-lightbox-group .w-lightbox-view,
|
| 1439 |
+
.w-lightbox-group .w-lightbox-view:before {
|
| 1440 |
+
height: 86vh;
|
| 1441 |
+
}
|
| 1442 |
+
|
| 1443 |
+
.w-lightbox-frame,
|
| 1444 |
+
.w-lightbox-view:before {
|
| 1445 |
+
vertical-align: middle;
|
| 1446 |
+
display: inline-block;
|
| 1447 |
+
}
|
| 1448 |
+
|
| 1449 |
+
.w-lightbox-figure {
|
| 1450 |
+
margin: 0;
|
| 1451 |
+
position: relative;
|
| 1452 |
+
}
|
| 1453 |
+
|
| 1454 |
+
.w-lightbox-group .w-lightbox-figure {
|
| 1455 |
+
cursor: pointer;
|
| 1456 |
+
}
|
| 1457 |
+
|
| 1458 |
+
.w-lightbox-img {
|
| 1459 |
+
width: auto;
|
| 1460 |
+
height: auto;
|
| 1461 |
+
max-width: none;
|
| 1462 |
+
}
|
| 1463 |
+
|
| 1464 |
+
.w-lightbox-image {
|
| 1465 |
+
float: none;
|
| 1466 |
+
max-width: 100vw;
|
| 1467 |
+
max-height: 100vh;
|
| 1468 |
+
display: block;
|
| 1469 |
+
}
|
| 1470 |
+
|
| 1471 |
+
.w-lightbox-group .w-lightbox-image {
|
| 1472 |
+
max-height: 86vh;
|
| 1473 |
+
}
|
| 1474 |
+
|
| 1475 |
+
.w-lightbox-caption {
|
| 1476 |
+
text-align: left;
|
| 1477 |
+
text-overflow: ellipsis;
|
| 1478 |
+
white-space: nowrap;
|
| 1479 |
+
background: rgba(0, 0, 0, .4);
|
| 1480 |
+
padding: .5em 1em;
|
| 1481 |
+
position: absolute;
|
| 1482 |
+
bottom: 0;
|
| 1483 |
+
left: 0;
|
| 1484 |
+
right: 0;
|
| 1485 |
+
overflow: hidden;
|
| 1486 |
+
}
|
| 1487 |
+
|
| 1488 |
+
.w-lightbox-embed {
|
| 1489 |
+
width: 100%;
|
| 1490 |
+
height: 100%;
|
| 1491 |
+
position: absolute;
|
| 1492 |
+
top: 0;
|
| 1493 |
+
bottom: 0;
|
| 1494 |
+
left: 0;
|
| 1495 |
+
right: 0;
|
| 1496 |
+
}
|
| 1497 |
+
|
| 1498 |
+
.w-lightbox-control {
|
| 1499 |
+
width: 4em;
|
| 1500 |
+
cursor: pointer;
|
| 1501 |
+
background-position: center;
|
| 1502 |
+
background-repeat: no-repeat;
|
| 1503 |
+
background-size: 24px;
|
| 1504 |
+
transition: all .3s;
|
| 1505 |
+
position: absolute;
|
| 1506 |
+
top: 0;
|
| 1507 |
+
}
|
| 1508 |
+
|
| 1509 |
+
.w-lightbox-left {
|
| 1510 |
+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAwIDI0IDQwIiB3aWR0aD0iMjQiIGhlaWdodD0iNDAiPjxnIHRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHBhdGggZD0ibTAgMGg1djIzaDIzdjVoLTI4eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDN2MjNoMjN2M2gtMjZ6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg==");
|
| 1511 |
+
display: none;
|
| 1512 |
+
bottom: 0;
|
| 1513 |
+
left: 0;
|
| 1514 |
+
}
|
| 1515 |
+
|
| 1516 |
+
.w-lightbox-right {
|
| 1517 |
+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMjQgNDAiIHdpZHRoPSIyNCIgaGVpZ2h0PSI0MCI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMC0waDI4djI4aC01di0yM2gtMjN6IiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Im0xIDFoMjZ2MjZoLTN2LTIzaC0yM3oiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+");
|
| 1518 |
+
display: none;
|
| 1519 |
+
bottom: 0;
|
| 1520 |
+
right: 0;
|
| 1521 |
+
}
|
| 1522 |
+
|
| 1523 |
+
.w-lightbox-close {
|
| 1524 |
+
height: 2.6em;
|
| 1525 |
+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMTggMTciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMCAwaDd2LTdoNXY3aDd2NWgtN3Y3aC01di03aC03eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDd2LTdoM3Y3aDd2M2gtN3Y3aC0zdi03aC03eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=");
|
| 1526 |
+
background-size: 18px;
|
| 1527 |
+
right: 0;
|
| 1528 |
+
}
|
| 1529 |
+
|
| 1530 |
+
.w-lightbox-strip {
|
| 1531 |
+
white-space: nowrap;
|
| 1532 |
+
padding: 0 1vh;
|
| 1533 |
+
line-height: 0;
|
| 1534 |
+
position: absolute;
|
| 1535 |
+
bottom: 0;
|
| 1536 |
+
left: 0;
|
| 1537 |
+
right: 0;
|
| 1538 |
+
overflow-x: auto;
|
| 1539 |
+
overflow-y: hidden;
|
| 1540 |
+
}
|
| 1541 |
+
|
| 1542 |
+
.w-lightbox-item {
|
| 1543 |
+
width: 10vh;
|
| 1544 |
+
box-sizing: content-box;
|
| 1545 |
+
cursor: pointer;
|
| 1546 |
+
padding: 2vh 1vh;
|
| 1547 |
+
display: inline-block;
|
| 1548 |
+
}
|
| 1549 |
+
|
| 1550 |
+
.w-lightbox-active {
|
| 1551 |
+
opacity: .3;
|
| 1552 |
+
}
|
| 1553 |
+
|
| 1554 |
+
.w-lightbox-thumbnail {
|
| 1555 |
+
height: 10vh;
|
| 1556 |
+
background: #222;
|
| 1557 |
+
position: relative;
|
| 1558 |
+
overflow: hidden;
|
| 1559 |
+
}
|
| 1560 |
+
|
| 1561 |
+
.w-lightbox-thumbnail-image {
|
| 1562 |
+
position: absolute;
|
| 1563 |
+
top: 0;
|
| 1564 |
+
left: 0;
|
| 1565 |
+
}
|
| 1566 |
+
|
| 1567 |
+
.w-lightbox-thumbnail .w-lightbox-tall {
|
| 1568 |
+
width: 100%;
|
| 1569 |
+
top: 50%;
|
| 1570 |
+
transform: translate(0, -50%);
|
| 1571 |
+
}
|
| 1572 |
+
|
| 1573 |
+
.w-lightbox-thumbnail .w-lightbox-wide {
|
| 1574 |
+
height: 100%;
|
| 1575 |
+
left: 50%;
|
| 1576 |
+
transform: translate(-50%);
|
| 1577 |
+
}
|
| 1578 |
+
|
| 1579 |
+
.w-lightbox-spinner {
|
| 1580 |
+
box-sizing: border-box;
|
| 1581 |
+
width: 40px;
|
| 1582 |
+
height: 40px;
|
| 1583 |
+
border: 5px solid rgba(0, 0, 0, .4);
|
| 1584 |
+
border-radius: 50%;
|
| 1585 |
+
margin-top: -20px;
|
| 1586 |
+
margin-left: -20px;
|
| 1587 |
+
animation: .8s linear infinite spin;
|
| 1588 |
+
position: absolute;
|
| 1589 |
+
top: 50%;
|
| 1590 |
+
left: 50%;
|
| 1591 |
+
}
|
| 1592 |
+
|
| 1593 |
+
.w-lightbox-spinner:after {
|
| 1594 |
+
content: "";
|
| 1595 |
+
border: 3px solid rgba(0, 0, 0, 0);
|
| 1596 |
+
border-bottom-color: #fff;
|
| 1597 |
+
border-radius: 50%;
|
| 1598 |
+
position: absolute;
|
| 1599 |
+
top: -4px;
|
| 1600 |
+
bottom: -4px;
|
| 1601 |
+
left: -4px;
|
| 1602 |
+
right: -4px;
|
| 1603 |
+
}
|
| 1604 |
+
|
| 1605 |
+
.w-lightbox-hide {
|
| 1606 |
+
display: none;
|
| 1607 |
+
}
|
| 1608 |
+
|
| 1609 |
+
.w-lightbox-noscroll {
|
| 1610 |
+
overflow: hidden;
|
| 1611 |
+
}
|
| 1612 |
+
|
| 1613 |
+
@media (min-width: 768px) {
|
| 1614 |
+
.w-lightbox-content {
|
| 1615 |
+
height: 96vh;
|
| 1616 |
+
margin-top: 2vh;
|
| 1617 |
+
}
|
| 1618 |
+
.w-lightbox-view,
|
| 1619 |
+
.w-lightbox-view:before {
|
| 1620 |
+
height: 96vh;
|
| 1621 |
+
}
|
| 1622 |
+
.w-lightbox-group,
|
| 1623 |
+
.w-lightbox-group .w-lightbox-view,
|
| 1624 |
+
.w-lightbox-group .w-lightbox-view:before {
|
| 1625 |
+
height: 84vh;
|
| 1626 |
+
}
|
| 1627 |
+
.w-lightbox-image {
|
| 1628 |
+
max-width: 96vw;
|
| 1629 |
+
max-height: 96vh;
|
| 1630 |
+
}
|
| 1631 |
+
.w-lightbox-group .w-lightbox-image {
|
| 1632 |
+
max-width: 82.3vw;
|
| 1633 |
+
max-height: 84vh;
|
| 1634 |
+
}
|
| 1635 |
+
.w-lightbox-left,
|
| 1636 |
+
.w-lightbox-right {
|
| 1637 |
+
opacity: .5;
|
| 1638 |
+
display: block;
|
| 1639 |
+
}
|
| 1640 |
+
.w-lightbox-close {
|
| 1641 |
+
opacity: .8;
|
| 1642 |
+
}
|
| 1643 |
+
.w-lightbox-control:hover {
|
| 1644 |
+
opacity: 1;
|
| 1645 |
+
}
|
| 1646 |
+
}
|
| 1647 |
+
|
| 1648 |
+
.w-lightbox-inactive,
|
| 1649 |
+
.w-lightbox-inactive:hover {
|
| 1650 |
+
opacity: 0;
|
| 1651 |
+
}
|
| 1652 |
+
|
| 1653 |
+
.w-richtext:before,
|
| 1654 |
+
.w-richtext:after {
|
| 1655 |
+
content: " ";
|
| 1656 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 1657 |
+
display: table;
|
| 1658 |
+
}
|
| 1659 |
+
|
| 1660 |
+
.w-richtext:after {
|
| 1661 |
+
clear: both;
|
| 1662 |
+
}
|
| 1663 |
+
|
| 1664 |
+
.w-richtext[contenteditable="true"]:before,
|
| 1665 |
+
.w-richtext[contenteditable="true"]:after {
|
| 1666 |
+
white-space: initial;
|
| 1667 |
+
}
|
| 1668 |
+
|
| 1669 |
+
.w-richtext ol,
|
| 1670 |
+
.w-richtext ul {
|
| 1671 |
+
overflow: hidden;
|
| 1672 |
+
}
|
| 1673 |
+
|
| 1674 |
+
.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-video div:after,
|
| 1675 |
+
.w-richtext .w-richtext-figure-selected[data-rt-type="video"] div:after,
|
| 1676 |
+
.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-image div,
|
| 1677 |
+
.w-richtext .w-richtext-figure-selected[data-rt-type="image"] div {
|
| 1678 |
+
outline: 2px solid #2895f7;
|
| 1679 |
+
}
|
| 1680 |
+
|
| 1681 |
+
.w-richtext figure.w-richtext-figure-type-video>div:after,
|
| 1682 |
+
.w-richtext figure[data-rt-type="video"]>div:after {
|
| 1683 |
+
content: "";
|
| 1684 |
+
display: none;
|
| 1685 |
+
position: absolute;
|
| 1686 |
+
top: 0;
|
| 1687 |
+
bottom: 0;
|
| 1688 |
+
left: 0;
|
| 1689 |
+
right: 0;
|
| 1690 |
+
}
|
| 1691 |
+
|
| 1692 |
+
.w-richtext figure {
|
| 1693 |
+
max-width: 60%;
|
| 1694 |
+
position: relative;
|
| 1695 |
+
}
|
| 1696 |
+
|
| 1697 |
+
.w-richtext figure>div:before {
|
| 1698 |
+
cursor: default !important;
|
| 1699 |
+
}
|
| 1700 |
+
|
| 1701 |
+
.w-richtext figure img {
|
| 1702 |
+
width: 100%;
|
| 1703 |
+
}
|
| 1704 |
+
|
| 1705 |
+
.w-richtext figure figcaption.w-richtext-figcaption-placeholder {
|
| 1706 |
+
opacity: .6;
|
| 1707 |
+
}
|
| 1708 |
+
|
| 1709 |
+
.w-richtext figure div {
|
| 1710 |
+
color: rgba(0, 0, 0, 0);
|
| 1711 |
+
font-size: 0;
|
| 1712 |
+
}
|
| 1713 |
+
|
| 1714 |
+
.w-richtext figure.w-richtext-figure-type-image,
|
| 1715 |
+
.w-richtext figure[data-rt-type="image"] {
|
| 1716 |
+
display: table;
|
| 1717 |
+
}
|
| 1718 |
+
|
| 1719 |
+
.w-richtext figure.w-richtext-figure-type-image>div,
|
| 1720 |
+
.w-richtext figure[data-rt-type="image"]>div {
|
| 1721 |
+
display: inline-block;
|
| 1722 |
+
}
|
| 1723 |
+
|
| 1724 |
+
.w-richtext figure.w-richtext-figure-type-image>figcaption,
|
| 1725 |
+
.w-richtext figure[data-rt-type="image"]>figcaption {
|
| 1726 |
+
caption-side: bottom;
|
| 1727 |
+
display: table-caption;
|
| 1728 |
+
}
|
| 1729 |
+
|
| 1730 |
+
.w-richtext figure.w-richtext-figure-type-video,
|
| 1731 |
+
.w-richtext figure[data-rt-type="video"] {
|
| 1732 |
+
width: 60%;
|
| 1733 |
+
height: 0;
|
| 1734 |
+
}
|
| 1735 |
+
|
| 1736 |
+
.w-richtext figure.w-richtext-figure-type-video iframe,
|
| 1737 |
+
.w-richtext figure[data-rt-type="video"] iframe {
|
| 1738 |
+
width: 100%;
|
| 1739 |
+
height: 100%;
|
| 1740 |
+
position: absolute;
|
| 1741 |
+
top: 0;
|
| 1742 |
+
left: 0;
|
| 1743 |
+
}
|
| 1744 |
+
|
| 1745 |
+
.w-richtext figure.w-richtext-figure-type-video>div,
|
| 1746 |
+
.w-richtext figure[data-rt-type="video"]>div {
|
| 1747 |
+
width: 100%;
|
| 1748 |
+
}
|
| 1749 |
+
|
| 1750 |
+
.w-richtext figure.w-richtext-align-center {
|
| 1751 |
+
clear: both;
|
| 1752 |
+
margin-left: auto;
|
| 1753 |
+
margin-right: auto;
|
| 1754 |
+
}
|
| 1755 |
+
|
| 1756 |
+
.w-richtext figure.w-richtext-align-center.w-richtext-figure-type-image>div,
|
| 1757 |
+
.w-richtext figure.w-richtext-align-center[data-rt-type="image"]>div {
|
| 1758 |
+
max-width: 100%;
|
| 1759 |
+
}
|
| 1760 |
+
|
| 1761 |
+
.w-richtext figure.w-richtext-align-normal {
|
| 1762 |
+
clear: both;
|
| 1763 |
+
}
|
| 1764 |
+
|
| 1765 |
+
.w-richtext figure.w-richtext-align-fullwidth {
|
| 1766 |
+
width: 100%;
|
| 1767 |
+
max-width: 100%;
|
| 1768 |
+
text-align: center;
|
| 1769 |
+
clear: both;
|
| 1770 |
+
margin-left: auto;
|
| 1771 |
+
margin-right: auto;
|
| 1772 |
+
display: block;
|
| 1773 |
+
}
|
| 1774 |
+
|
| 1775 |
+
.w-richtext figure.w-richtext-align-fullwidth>div {
|
| 1776 |
+
padding-bottom: inherit;
|
| 1777 |
+
display: inline-block;
|
| 1778 |
+
}
|
| 1779 |
+
|
| 1780 |
+
.w-richtext figure.w-richtext-align-fullwidth>figcaption {
|
| 1781 |
+
display: block;
|
| 1782 |
+
}
|
| 1783 |
+
|
| 1784 |
+
.w-richtext figure.w-richtext-align-floatleft {
|
| 1785 |
+
float: left;
|
| 1786 |
+
clear: none;
|
| 1787 |
+
margin-right: 15px;
|
| 1788 |
+
}
|
| 1789 |
+
|
| 1790 |
+
.w-richtext figure.w-richtext-align-floatright {
|
| 1791 |
+
float: right;
|
| 1792 |
+
clear: none;
|
| 1793 |
+
margin-left: 15px;
|
| 1794 |
+
}
|
| 1795 |
+
|
| 1796 |
+
.w-nav {
|
| 1797 |
+
z-index: 1000;
|
| 1798 |
+
background: #ddd;
|
| 1799 |
+
position: relative;
|
| 1800 |
+
}
|
| 1801 |
+
|
| 1802 |
+
.w-nav:before,
|
| 1803 |
+
.w-nav:after {
|
| 1804 |
+
content: " ";
|
| 1805 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 1806 |
+
display: table;
|
| 1807 |
+
}
|
| 1808 |
+
|
| 1809 |
+
.w-nav:after {
|
| 1810 |
+
clear: both;
|
| 1811 |
+
}
|
| 1812 |
+
|
| 1813 |
+
.w-nav-brand {
|
| 1814 |
+
float: left;
|
| 1815 |
+
color: #333;
|
| 1816 |
+
text-decoration: none;
|
| 1817 |
+
position: relative;
|
| 1818 |
+
}
|
| 1819 |
+
|
| 1820 |
+
.w-nav-link {
|
| 1821 |
+
vertical-align: top;
|
| 1822 |
+
color: #222;
|
| 1823 |
+
text-align: left;
|
| 1824 |
+
margin-left: auto;
|
| 1825 |
+
margin-right: auto;
|
| 1826 |
+
padding: 20px;
|
| 1827 |
+
text-decoration: none;
|
| 1828 |
+
display: inline-block;
|
| 1829 |
+
position: relative;
|
| 1830 |
+
}
|
| 1831 |
+
|
| 1832 |
+
.w-nav-link.w--current {
|
| 1833 |
+
color: #0082f3;
|
| 1834 |
+
}
|
| 1835 |
+
|
| 1836 |
+
.w-nav-menu {
|
| 1837 |
+
float: right;
|
| 1838 |
+
position: relative;
|
| 1839 |
+
}
|
| 1840 |
+
|
| 1841 |
+
[data-nav-menu-open] {
|
| 1842 |
+
text-align: center;
|
| 1843 |
+
min-width: 200px;
|
| 1844 |
+
background: #c8c8c8;
|
| 1845 |
+
position: absolute;
|
| 1846 |
+
top: 100%;
|
| 1847 |
+
left: 0;
|
| 1848 |
+
right: 0;
|
| 1849 |
+
overflow: visible;
|
| 1850 |
+
display: block !important;
|
| 1851 |
+
}
|
| 1852 |
+
|
| 1853 |
+
.w--nav-link-open {
|
| 1854 |
+
display: block;
|
| 1855 |
+
position: relative;
|
| 1856 |
+
}
|
| 1857 |
+
|
| 1858 |
+
.w-nav-overlay {
|
| 1859 |
+
width: 100%;
|
| 1860 |
+
display: none;
|
| 1861 |
+
position: absolute;
|
| 1862 |
+
top: 100%;
|
| 1863 |
+
left: 0;
|
| 1864 |
+
right: 0;
|
| 1865 |
+
overflow: hidden;
|
| 1866 |
+
}
|
| 1867 |
+
|
| 1868 |
+
.w-nav-overlay [data-nav-menu-open] {
|
| 1869 |
+
top: 0;
|
| 1870 |
+
}
|
| 1871 |
+
|
| 1872 |
+
.w-nav[data-animation="over-left"] .w-nav-overlay {
|
| 1873 |
+
width: auto;
|
| 1874 |
+
}
|
| 1875 |
+
|
| 1876 |
+
.w-nav[data-animation="over-left"] .w-nav-overlay,
|
| 1877 |
+
.w-nav[data-animation="over-left"] [data-nav-menu-open] {
|
| 1878 |
+
z-index: 1;
|
| 1879 |
+
top: 0;
|
| 1880 |
+
right: auto;
|
| 1881 |
+
}
|
| 1882 |
+
|
| 1883 |
+
.w-nav[data-animation="over-right"] .w-nav-overlay {
|
| 1884 |
+
width: auto;
|
| 1885 |
+
}
|
| 1886 |
+
|
| 1887 |
+
.w-nav[data-animation="over-right"] .w-nav-overlay,
|
| 1888 |
+
.w-nav[data-animation="over-right"] [data-nav-menu-open] {
|
| 1889 |
+
z-index: 1;
|
| 1890 |
+
top: 0;
|
| 1891 |
+
left: auto;
|
| 1892 |
+
}
|
| 1893 |
+
|
| 1894 |
+
.w-nav-button {
|
| 1895 |
+
float: right;
|
| 1896 |
+
cursor: pointer;
|
| 1897 |
+
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
| 1898 |
+
-webkit-user-select: none;
|
| 1899 |
+
-ms-user-select: none;
|
| 1900 |
+
user-select: none;
|
| 1901 |
+
padding: 18px;
|
| 1902 |
+
font-size: 24px;
|
| 1903 |
+
display: none;
|
| 1904 |
+
position: relative;
|
| 1905 |
+
}
|
| 1906 |
+
|
| 1907 |
+
.w-nav-button:focus {
|
| 1908 |
+
outline: 0;
|
| 1909 |
+
}
|
| 1910 |
+
|
| 1911 |
+
.w-nav-button.w--open {
|
| 1912 |
+
color: #fff;
|
| 1913 |
+
background-color: #c8c8c8;
|
| 1914 |
+
}
|
| 1915 |
+
|
| 1916 |
+
.w-nav[data-collapse="all"] .w-nav-menu {
|
| 1917 |
+
display: none;
|
| 1918 |
+
}
|
| 1919 |
+
|
| 1920 |
+
.w-nav[data-collapse="all"] .w-nav-button,
|
| 1921 |
+
.w--nav-dropdown-open,
|
| 1922 |
+
.w--nav-dropdown-toggle-open {
|
| 1923 |
+
display: block;
|
| 1924 |
+
}
|
| 1925 |
+
|
| 1926 |
+
.w--nav-dropdown-list-open {
|
| 1927 |
+
position: static;
|
| 1928 |
+
}
|
| 1929 |
+
|
| 1930 |
+
@media screen and (max-width: 991px) {
|
| 1931 |
+
.w-nav[data-collapse="medium"] .w-nav-menu {
|
| 1932 |
+
display: none;
|
| 1933 |
+
}
|
| 1934 |
+
.w-nav[data-collapse="medium"] .w-nav-button {
|
| 1935 |
+
display: block;
|
| 1936 |
+
}
|
| 1937 |
+
}
|
| 1938 |
+
|
| 1939 |
+
@media screen and (max-width: 767px) {
|
| 1940 |
+
.w-nav[data-collapse="small"] .w-nav-menu {
|
| 1941 |
+
display: none;
|
| 1942 |
+
}
|
| 1943 |
+
.w-nav[data-collapse="small"] .w-nav-button {
|
| 1944 |
+
display: block;
|
| 1945 |
+
}
|
| 1946 |
+
.w-nav-brand {
|
| 1947 |
+
padding-left: 10px;
|
| 1948 |
+
}
|
| 1949 |
+
}
|
| 1950 |
+
|
| 1951 |
+
@media screen and (max-width: 479px) {
|
| 1952 |
+
.w-nav[data-collapse="tiny"] .w-nav-menu {
|
| 1953 |
+
display: none;
|
| 1954 |
+
}
|
| 1955 |
+
.w-nav[data-collapse="tiny"] .w-nav-button {
|
| 1956 |
+
display: block;
|
| 1957 |
+
}
|
| 1958 |
+
}
|
| 1959 |
+
|
| 1960 |
+
.w-tabs {
|
| 1961 |
+
position: relative;
|
| 1962 |
+
}
|
| 1963 |
+
|
| 1964 |
+
.w-tabs:before,
|
| 1965 |
+
.w-tabs:after {
|
| 1966 |
+
content: " ";
|
| 1967 |
+
grid-area: 1 / 1 / 2 / 2;
|
| 1968 |
+
display: table;
|
| 1969 |
+
}
|
| 1970 |
+
|
| 1971 |
+
.w-tabs:after {
|
| 1972 |
+
clear: both;
|
| 1973 |
+
}
|
| 1974 |
+
|
| 1975 |
+
.w-tab-menu {
|
| 1976 |
+
position: relative;
|
| 1977 |
+
}
|
| 1978 |
+
|
| 1979 |
+
.w-tab-link {
|
| 1980 |
+
vertical-align: top;
|
| 1981 |
+
text-align: left;
|
| 1982 |
+
cursor: pointer;
|
| 1983 |
+
color: #222;
|
| 1984 |
+
background-color: #ddd;
|
| 1985 |
+
padding: 9px 30px;
|
| 1986 |
+
text-decoration: none;
|
| 1987 |
+
display: inline-block;
|
| 1988 |
+
position: relative;
|
| 1989 |
+
}
|
| 1990 |
+
|
| 1991 |
+
.w-tab-link.w--current {
|
| 1992 |
+
background-color: #c8c8c8;
|
| 1993 |
+
}
|
| 1994 |
+
|
| 1995 |
+
.w-tab-link:focus {
|
| 1996 |
+
outline: 0;
|
| 1997 |
+
}
|
| 1998 |
+
|
| 1999 |
+
.w-tab-content {
|
| 2000 |
+
display: block;
|
| 2001 |
+
position: relative;
|
| 2002 |
+
overflow: hidden;
|
| 2003 |
+
}
|
| 2004 |
+
|
| 2005 |
+
.w-tab-pane {
|
| 2006 |
+
display: none;
|
| 2007 |
+
position: relative;
|
| 2008 |
+
}
|
| 2009 |
+
|
| 2010 |
+
.w--tab-active {
|
| 2011 |
+
display: block;
|
| 2012 |
+
}
|
| 2013 |
+
|
| 2014 |
+
@media screen and (max-width: 479px) {
|
| 2015 |
+
.w-tab-link {
|
| 2016 |
+
display: block;
|
| 2017 |
+
}
|
| 2018 |
+
}
|
| 2019 |
+
|
| 2020 |
+
.w-ix-emptyfix:after {
|
| 2021 |
+
content: "";
|
| 2022 |
+
}
|
| 2023 |
+
|
| 2024 |
+
@keyframes spin {
|
| 2025 |
+
0% {
|
| 2026 |
+
transform: rotate(0);
|
| 2027 |
+
}
|
| 2028 |
+
100% {
|
| 2029 |
+
transform: rotate(360deg);
|
| 2030 |
+
}
|
| 2031 |
+
}
|
| 2032 |
+
|
| 2033 |
+
.w-dyn-empty {
|
| 2034 |
+
background-color: #ddd;
|
| 2035 |
+
padding: 10px;
|
| 2036 |
+
}
|
| 2037 |
+
|
| 2038 |
+
.w-dyn-hide,
|
| 2039 |
+
.w-dyn-bind-empty,
|
| 2040 |
+
.w-condition-invisible {
|
| 2041 |
+
display: none !important;
|
| 2042 |
+
}
|
| 2043 |
+
|
| 2044 |
+
body {
|
| 2045 |
+
color: #333;
|
| 2046 |
+
font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
|
| 2047 |
+
font-size: 14px;
|
| 2048 |
+
line-height: 20px;
|
| 2049 |
+
}
|
| 2050 |
+
|
| 2051 |
+
.navbar-link {
|
| 2052 |
+
grid-column-gap: 0px;
|
| 2053 |
+
grid-row-gap: 0px;
|
| 2054 |
+
flex: 0 auto;
|
| 2055 |
+
justify-content: flex-start;
|
| 2056 |
+
align-items: flex-start;
|
| 2057 |
+
padding: 24px 12px;
|
| 2058 |
+
display: flex;
|
| 2059 |
+
}
|
| 2060 |
+
|
| 2061 |
+
.text {
|
| 2062 |
+
color: #000;
|
| 2063 |
+
font-size: 14px;
|
| 2064 |
+
font-weight: 400;
|
| 2065 |
+
line-height: 150%;
|
| 2066 |
+
}
|
| 2067 |
+
|
| 2068 |
+
.text-4 {
|
| 2069 |
+
color: #212121;
|
| 2070 |
+
font-size: 18px;
|
| 2071 |
+
font-weight: 400;
|
| 2072 |
+
line-height: 150%;
|
| 2073 |
+
}
|
| 2074 |
+
|
| 2075 |
+
.title {
|
| 2076 |
+
color: #000;
|
| 2077 |
+
font-size: 24px;
|
| 2078 |
+
font-weight: 700;
|
| 2079 |
+
line-height: 150%;
|
| 2080 |
+
}
|
| 2081 |
+
|
| 2082 |
+
.description {
|
| 2083 |
+
color: #000;
|
| 2084 |
+
font-size: 14px;
|
| 2085 |
+
font-weight: 400;
|
| 2086 |
+
line-height: 150%;
|
| 2087 |
+
}
|
| 2088 |
+
|
| 2089 |
+
.text-5 {
|
| 2090 |
+
color: #000;
|
| 2091 |
+
text-align: center;
|
| 2092 |
+
font-size: 32px;
|
| 2093 |
+
font-weight: 700;
|
| 2094 |
+
line-height: 120%;
|
| 2095 |
+
}
|
| 2096 |
+
|
| 2097 |
+
.text-6 {
|
| 2098 |
+
color: #000;
|
| 2099 |
+
text-align: center;
|
| 2100 |
+
font-size: 16px;
|
| 2101 |
+
font-weight: 400;
|
| 2102 |
+
line-height: 150%;
|
| 2103 |
+
}
|
| 2104 |
+
|
| 2105 |
+
.text-7 {
|
| 2106 |
+
color: #000;
|
| 2107 |
+
text-align: center;
|
| 2108 |
+
font-size: 20px;
|
| 2109 |
+
font-weight: 700;
|
| 2110 |
+
line-height: 150%;
|
| 2111 |
+
}
|
| 2112 |
+
|
| 2113 |
+
.text-8 {
|
| 2114 |
+
color: #000;
|
| 2115 |
+
text-align: center;
|
| 2116 |
+
font-size: 18px;
|
| 2117 |
+
font-weight: 400;
|
| 2118 |
+
line-height: 150%;
|
| 2119 |
+
}
|
| 2120 |
+
|
| 2121 |
+
.navbar-logo-left-2 {
|
| 2122 |
+
z-index: 2147483647;
|
| 2123 |
+
width: 100%;
|
| 2124 |
+
max-width: 100%;
|
| 2125 |
+
grid-column-gap: 0px;
|
| 2126 |
+
grid-row-gap: 0px;
|
| 2127 |
+
background-color: #fff;
|
| 2128 |
+
justify-content: center;
|
| 2129 |
+
align-items: center;
|
| 2130 |
+
padding-bottom: 10px;
|
| 2131 |
+
padding-left: 24px;
|
| 2132 |
+
padding-right: 24px;
|
| 2133 |
+
display: flex;
|
| 2134 |
+
position: -webkit-sticky;
|
| 2135 |
+
position: sticky;
|
| 2136 |
+
top: 0;
|
| 2137 |
+
bottom: 10px;
|
| 2138 |
+
}
|
| 2139 |
+
|
| 2140 |
+
.navbarcontainer-2 {
|
| 2141 |
+
width: 100%;
|
| 2142 |
+
max-width: 1200px;
|
| 2143 |
+
grid-column-gap: 0px;
|
| 2144 |
+
grid-row-gap: 0px;
|
| 2145 |
+
justify-content: center;
|
| 2146 |
+
align-items: center;
|
| 2147 |
+
padding-top: 10px;
|
| 2148 |
+
display: flex;
|
| 2149 |
+
}
|
| 2150 |
+
|
| 2151 |
+
.navbar-content-2 {
|
| 2152 |
+
width: 100%;
|
| 2153 |
+
max-width: 1200px;
|
| 2154 |
+
text-align: left;
|
| 2155 |
+
justify-content: center;
|
| 2156 |
+
align-items: center;
|
| 2157 |
+
margin-left: auto;
|
| 2158 |
+
margin-right: auto;
|
| 2159 |
+
display: flex;
|
| 2160 |
+
position: static;
|
| 2161 |
+
}
|
| 2162 |
+
|
| 2163 |
+
.frame-237640 {
|
| 2164 |
+
height: 53px;
|
| 2165 |
+
grid-column-gap: 5px;
|
| 2166 |
+
grid-row-gap: 5px;
|
| 2167 |
+
flex: 0 auto;
|
| 2168 |
+
justify-content: flex-start;
|
| 2169 |
+
align-items: center;
|
| 2170 |
+
margin-right: auto;
|
| 2171 |
+
display: flex;
|
| 2172 |
+
}
|
| 2173 |
+
|
| 2174 |
+
.frame-237642 {
|
| 2175 |
+
grid-column-gap: 7px;
|
| 2176 |
+
grid-row-gap: 7px;
|
| 2177 |
+
flex: 0 auto;
|
| 2178 |
+
justify-content: flex-start;
|
| 2179 |
+
align-items: center;
|
| 2180 |
+
display: flex;
|
| 2181 |
+
}
|
| 2182 |
+
|
| 2183 |
+
.vectors-wrapper {
|
| 2184 |
+
width: 65px;
|
| 2185 |
+
height: 65px;
|
| 2186 |
+
grid-column-gap: 0px;
|
| 2187 |
+
grid-row-gap: 0px;
|
| 2188 |
+
object-fit: cover;
|
| 2189 |
+
justify-content: center;
|
| 2190 |
+
align-items: center;
|
| 2191 |
+
display: flex;
|
| 2192 |
+
}
|
| 2193 |
+
|
| 2194 |
+
.text-11 {
|
| 2195 |
+
color: #000;
|
| 2196 |
+
letter-spacing: .1em;
|
| 2197 |
+
font-family: Orbitron, sans-serif;
|
| 2198 |
+
font-size: 24px;
|
| 2199 |
+
font-weight: 500;
|
| 2200 |
+
line-height: 150%;
|
| 2201 |
+
}
|
| 2202 |
+
|
| 2203 |
+
.navbar-menu-2 {
|
| 2204 |
+
grid-column-gap: 46px;
|
| 2205 |
+
grid-row-gap: 46px;
|
| 2206 |
+
text-align: left;
|
| 2207 |
+
flex: none;
|
| 2208 |
+
justify-content: space-between;
|
| 2209 |
+
align-self: center;
|
| 2210 |
+
align-items: center;
|
| 2211 |
+
font-family: Inter, sans-serif;
|
| 2212 |
+
font-size: 24px;
|
| 2213 |
+
display: flex;
|
| 2214 |
+
position: fixed;
|
| 2215 |
+
}
|
| 2216 |
+
|
| 2217 |
+
.hero-heading-left-2 {
|
| 2218 |
+
width: 100%;
|
| 2219 |
+
height: 600px;
|
| 2220 |
+
grid-column-gap: 80px;
|
| 2221 |
+
grid-row-gap: 80px;
|
| 2222 |
+
background-color: #f5f7fa;
|
| 2223 |
+
justify-content: center;
|
| 2224 |
+
align-items: flex-start;
|
| 2225 |
+
padding: 40px 24px 100px;
|
| 2226 |
+
display: flex;
|
| 2227 |
+
}
|
| 2228 |
+
|
| 2229 |
+
.container {
|
| 2230 |
+
overflow: hidden;
|
| 2231 |
+
}
|
| 2232 |
+
|
| 2233 |
+
.container-3 {
|
| 2234 |
+
width: 100%;
|
| 2235 |
+
max-width: 1200px;
|
| 2236 |
+
justify-content: flex-start;
|
| 2237 |
+
align-items: center;
|
| 2238 |
+
display: flex;
|
| 2239 |
+
margin-top: 8%;
|
| 2240 |
+
margin-left: 8%;
|
| 2241 |
+
overflow-x: hidden;
|
| 2242 |
+
}
|
| 2243 |
+
|
| 2244 |
+
.f2wf-columns-2 {
|
| 2245 |
+
flex-wrap: nowrap;
|
| 2246 |
+
align-self: auto;
|
| 2247 |
+
padding-left: 10px;
|
| 2248 |
+
padding-right: 10px;
|
| 2249 |
+
}
|
| 2250 |
+
|
| 2251 |
+
.column-4 {
|
| 2252 |
+
width: 100%;
|
| 2253 |
+
grid-column-gap: 24px;
|
| 2254 |
+
grid-row-gap: 24px;
|
| 2255 |
+
flex-direction: column;
|
| 2256 |
+
justify-content: flex-start;
|
| 2257 |
+
align-items: flex-start;
|
| 2258 |
+
display: flex;
|
| 2259 |
+
}
|
| 2260 |
+
|
| 2261 |
+
.title-copy {
|
| 2262 |
+
color: #000;
|
| 2263 |
+
font-family: Inter, sans-serif;
|
| 2264 |
+
font-size: 56px;
|
| 2265 |
+
font-weight: 700;
|
| 2266 |
+
line-height: 110%;
|
| 2267 |
+
}
|
| 2268 |
+
|
| 2269 |
+
.actions-2 {
|
| 2270 |
+
grid-column-gap: 16px;
|
| 2271 |
+
grid-row-gap: 16px;
|
| 2272 |
+
border-radius: 3px;
|
| 2273 |
+
flex-direction: column;
|
| 2274 |
+
justify-content: flex-start;
|
| 2275 |
+
align-items: flex-start;
|
| 2276 |
+
padding-top: 16px;
|
| 2277 |
+
display: flex;
|
| 2278 |
+
}
|
| 2279 |
+
|
| 2280 |
+
.button-4 {
|
| 2281 |
+
grid-column-gap: 8px;
|
| 2282 |
+
grid-row-gap: 8px;
|
| 2283 |
+
background-color: #000;
|
| 2284 |
+
border-radius: 3px;
|
| 2285 |
+
flex: 0 auto;
|
| 2286 |
+
justify-content: center;
|
| 2287 |
+
align-items: center;
|
| 2288 |
+
padding: 12px 24px;
|
| 2289 |
+
font-family: Inter, sans-serif;
|
| 2290 |
+
text-decoration: none;
|
| 2291 |
+
display: flex;
|
| 2292 |
+
}
|
| 2293 |
+
|
| 2294 |
+
.text-12 {
|
| 2295 |
+
color: #fff;
|
| 2296 |
+
letter-spacing: .03em;
|
| 2297 |
+
font-size: 12px;
|
| 2298 |
+
font-weight: 500;
|
| 2299 |
+
line-height: 140%;
|
| 2300 |
+
}
|
| 2301 |
+
|
| 2302 |
+
.column-5 {
|
| 2303 |
+
width: 100%;
|
| 2304 |
+
grid-column-gap: 10px;
|
| 2305 |
+
grid-row-gap: 10px;
|
| 2306 |
+
justify-content: flex-start;
|
| 2307 |
+
align-items: flex-start;
|
| 2308 |
+
display: flex;
|
| 2309 |
+
}
|
| 2310 |
+
|
| 2311 |
+
.image-wrapper-4 {
|
| 2312 |
+
width: 85%;
|
| 2313 |
+
grid-column-gap: 0px;
|
| 2314 |
+
grid-row-gap: 0px;
|
| 2315 |
+
flex-direction: column;
|
| 2316 |
+
justify-content: center;
|
| 2317 |
+
align-items: center;
|
| 2318 |
+
display: flex;
|
| 2319 |
+
}
|
| 2320 |
+
|
| 2321 |
+
.image-4 {
|
| 2322 |
+
width: 100%;
|
| 2323 |
+
height: 80%;
|
| 2324 |
+
max-height: 80%;
|
| 2325 |
+
grid-column-gap: 0px;
|
| 2326 |
+
grid-row-gap: 0px;
|
| 2327 |
+
object-fit: cover;
|
| 2328 |
+
justify-content: center;
|
| 2329 |
+
align-items: center;
|
| 2330 |
+
display: flex;
|
| 2331 |
+
}
|
| 2332 |
+
|
| 2333 |
+
.features-list-2 {
|
| 2334 |
+
width: 100%;
|
| 2335 |
+
height: 506px;
|
| 2336 |
+
grid-column-gap: 80px;
|
| 2337 |
+
grid-row-gap: 80px;
|
| 2338 |
+
background-color: #fff;
|
| 2339 |
+
justify-content: center;
|
| 2340 |
+
align-items: flex-start;
|
| 2341 |
+
padding: 64px 24px;
|
| 2342 |
+
display: flex;
|
| 2343 |
+
}
|
| 2344 |
+
|
| 2345 |
+
.columns-4 {
|
| 2346 |
+
width: 100%;
|
| 2347 |
+
max-width: 960px;
|
| 2348 |
+
grid-column-gap: 80px;
|
| 2349 |
+
grid-row-gap: 80px;
|
| 2350 |
+
justify-content: center;
|
| 2351 |
+
align-items: flex-start;
|
| 2352 |
+
display: flex;
|
| 2353 |
+
}
|
| 2354 |
+
|
| 2355 |
+
.content-4 {
|
| 2356 |
+
width: 100%;
|
| 2357 |
+
grid-column-gap: 24px;
|
| 2358 |
+
grid-row-gap: 24px;
|
| 2359 |
+
flex-direction: column;
|
| 2360 |
+
justify-content: flex-start;
|
| 2361 |
+
align-items: flex-start;
|
| 2362 |
+
padding-top: 24px;
|
| 2363 |
+
padding-bottom: 24px;
|
| 2364 |
+
display: flex;
|
| 2365 |
+
}
|
| 2366 |
+
|
| 2367 |
+
.intro-2 {
|
| 2368 |
+
width: 100%;
|
| 2369 |
+
grid-column-gap: 16px;
|
| 2370 |
+
grid-row-gap: 16px;
|
| 2371 |
+
flex-direction: column;
|
| 2372 |
+
justify-content: flex-start;
|
| 2373 |
+
align-items: flex-start;
|
| 2374 |
+
display: flex;
|
| 2375 |
+
}
|
| 2376 |
+
|
| 2377 |
+
.models-list {
|
| 2378 |
+
width: 100%;
|
| 2379 |
+
grid-column-gap: 24px;
|
| 2380 |
+
grid-row-gap: 24px;
|
| 2381 |
+
justify-content: flex-start;
|
| 2382 |
+
align-items: center;
|
| 2383 |
+
display: flex;
|
| 2384 |
+
}
|
| 2385 |
+
|
| 2386 |
+
.image-wrapper-5 {
|
| 2387 |
+
width: 80px;
|
| 2388 |
+
height: 80px;
|
| 2389 |
+
grid-column-gap: 0px;
|
| 2390 |
+
grid-row-gap: 0px;
|
| 2391 |
+
justify-content: center;
|
| 2392 |
+
align-items: center;
|
| 2393 |
+
display: flex;
|
| 2394 |
+
}
|
| 2395 |
+
|
| 2396 |
+
.image-5 {
|
| 2397 |
+
width: 80px;
|
| 2398 |
+
height: 80px;
|
| 2399 |
+
grid-column-gap: 0px;
|
| 2400 |
+
grid-row-gap: 0px;
|
| 2401 |
+
object-fit: contain;
|
| 2402 |
+
flex-direction: column;
|
| 2403 |
+
justify-content: center;
|
| 2404 |
+
align-items: center;
|
| 2405 |
+
display: flex;
|
| 2406 |
+
filter: grayscale(100%);
|
| 2407 |
+
}
|
| 2408 |
+
|
| 2409 |
+
.frame-237641 {
|
| 2410 |
+
width: 100%;
|
| 2411 |
+
height: 79px;
|
| 2412 |
+
max-width: 336px;
|
| 2413 |
+
grid-column-gap: 2px;
|
| 2414 |
+
grid-row-gap: 2px;
|
| 2415 |
+
flex-direction: column;
|
| 2416 |
+
justify-content: flex-start;
|
| 2417 |
+
align-items: flex-start;
|
| 2418 |
+
display: flex;
|
| 2419 |
+
}
|
| 2420 |
+
|
| 2421 |
+
.description-2 {
|
| 2422 |
+
color: #000;
|
| 2423 |
+
font-size: 20px;
|
| 2424 |
+
font-weight: 700;
|
| 2425 |
+
line-height: 150%;
|
| 2426 |
+
}
|
| 2427 |
+
|
| 2428 |
+
.team-circles-2 {
|
| 2429 |
+
width: 100%;
|
| 2430 |
+
grid-column-gap: 64px;
|
| 2431 |
+
grid-row-gap: 64px;
|
| 2432 |
+
background-color: #fff;
|
| 2433 |
+
flex-direction: column;
|
| 2434 |
+
justify-content: flex-start;
|
| 2435 |
+
align-items: center;
|
| 2436 |
+
padding: 64px 24px;
|
| 2437 |
+
display: flex;
|
| 2438 |
+
}
|
| 2439 |
+
|
| 2440 |
+
.container-4 {
|
| 2441 |
+
width: 100%;
|
| 2442 |
+
max-width: 1200px;
|
| 2443 |
+
grid-column-gap: 64px;
|
| 2444 |
+
grid-row-gap: 64px;
|
| 2445 |
+
flex-direction: column;
|
| 2446 |
+
justify-content: flex-start;
|
| 2447 |
+
align-items: center;
|
| 2448 |
+
display: flex;
|
| 2449 |
+
}
|
| 2450 |
+
|
| 2451 |
+
.title-section-2 {
|
| 2452 |
+
width: 100%;
|
| 2453 |
+
max-width: 530px;
|
| 2454 |
+
grid-column-gap: 16px;
|
| 2455 |
+
grid-row-gap: 16px;
|
| 2456 |
+
flex-direction: column;
|
| 2457 |
+
justify-content: flex-start;
|
| 2458 |
+
align-items: center;
|
| 2459 |
+
display: flex;
|
| 2460 |
+
}
|
| 2461 |
+
|
| 2462 |
+
.columns-5 {
|
| 2463 |
+
width: 100%;
|
| 2464 |
+
grid-column-gap: 48px;
|
| 2465 |
+
grid-row-gap: 48px;
|
| 2466 |
+
justify-content: center;
|
| 2467 |
+
align-items: flex-start;
|
| 2468 |
+
display: flex;
|
| 2469 |
+
}
|
| 2470 |
+
|
| 2471 |
+
.card-2 {
|
| 2472 |
+
width: 100%;
|
| 2473 |
+
grid-column-gap: 24px;
|
| 2474 |
+
grid-row-gap: 24px;
|
| 2475 |
+
flex-direction: column;
|
| 2476 |
+
justify-content: flex-start;
|
| 2477 |
+
align-items: center;
|
| 2478 |
+
display: flex;
|
| 2479 |
+
}
|
| 2480 |
+
|
| 2481 |
+
.image-wrapper-6 {
|
| 2482 |
+
width: 100%;
|
| 2483 |
+
height: 270px;
|
| 2484 |
+
max-width: 270px;
|
| 2485 |
+
grid-column-gap: 0px;
|
| 2486 |
+
grid-row-gap: 0px;
|
| 2487 |
+
justify-content: center;
|
| 2488 |
+
align-items: center;
|
| 2489 |
+
display: flex;
|
| 2490 |
+
}
|
| 2491 |
+
|
| 2492 |
+
.image-6 {
|
| 2493 |
+
width: 130%;
|
| 2494 |
+
height: 270px;
|
| 2495 |
+
max-width: 270px;
|
| 2496 |
+
grid-column-gap: 0px;
|
| 2497 |
+
grid-row-gap: 0px;
|
| 2498 |
+
object-fit: cover;
|
| 2499 |
+
justify-content: center;
|
| 2500 |
+
align-items: center;
|
| 2501 |
+
display: flex;
|
| 2502 |
+
}
|
| 2503 |
+
|
| 2504 |
+
.content-5 {
|
| 2505 |
+
width: 100%;
|
| 2506 |
+
grid-column-gap: 16px;
|
| 2507 |
+
grid-row-gap: 16px;
|
| 2508 |
+
flex-direction: column;
|
| 2509 |
+
justify-content: flex-start;
|
| 2510 |
+
align-items: center;
|
| 2511 |
+
display: flex;
|
| 2512 |
+
}
|
| 2513 |
+
|
| 2514 |
+
.info-2 {
|
| 2515 |
+
width: 100%;
|
| 2516 |
+
grid-column-gap: 0px;
|
| 2517 |
+
grid-row-gap: 0px;
|
| 2518 |
+
flex-direction: column;
|
| 2519 |
+
justify-content: flex-start;
|
| 2520 |
+
align-items: center;
|
| 2521 |
+
display: flex;
|
| 2522 |
+
}
|
| 2523 |
+
|
| 2524 |
+
.footer-2 {
|
| 2525 |
+
width: 100%;
|
| 2526 |
+
grid-column-gap: 40px;
|
| 2527 |
+
grid-row-gap: 40px;
|
| 2528 |
+
background-color: #f5f7fa;
|
| 2529 |
+
flex-direction: column;
|
| 2530 |
+
justify-content: flex-start;
|
| 2531 |
+
align-items: center;
|
| 2532 |
+
padding: 60px 24px;
|
| 2533 |
+
display: flex;
|
| 2534 |
+
}
|
| 2535 |
+
|
| 2536 |
+
.columns-6 {
|
| 2537 |
+
width: 100%;
|
| 2538 |
+
max-width: 960px;
|
| 2539 |
+
justify-content: center;
|
| 2540 |
+
align-items: center;
|
| 2541 |
+
display: flex;
|
| 2542 |
+
}
|
| 2543 |
+
|
| 2544 |
+
.column-6 {
|
| 2545 |
+
width: 100%;
|
| 2546 |
+
max-width: 320px;
|
| 2547 |
+
grid-column-gap: 24px;
|
| 2548 |
+
grid-row-gap: 24px;
|
| 2549 |
+
text-align: left;
|
| 2550 |
+
flex-direction: column;
|
| 2551 |
+
flex: 0 auto;
|
| 2552 |
+
justify-content: center;
|
| 2553 |
+
align-self: center;
|
| 2554 |
+
align-items: center;
|
| 2555 |
+
display: flex;
|
| 2556 |
+
}
|
| 2557 |
+
|
| 2558 |
+
.logo-wrapper-2 {
|
| 2559 |
+
grid-column-gap: 0px;
|
| 2560 |
+
grid-row-gap: 0px;
|
| 2561 |
+
text-align: left;
|
| 2562 |
+
flex: 0 auto;
|
| 2563 |
+
justify-content: center;
|
| 2564 |
+
align-self: center;
|
| 2565 |
+
align-items: center;
|
| 2566 |
+
padding-top: 16px;
|
| 2567 |
+
display: flex;
|
| 2568 |
+
}
|
| 2569 |
+
|
| 2570 |
+
.utility-page-wrap {
|
| 2571 |
+
width: 100vw;
|
| 2572 |
+
height: 100vh;
|
| 2573 |
+
max-height: 100%;
|
| 2574 |
+
max-width: 100%;
|
| 2575 |
+
justify-content: center;
|
| 2576 |
+
align-items: center;
|
| 2577 |
+
display: flex;
|
| 2578 |
+
}
|
| 2579 |
+
|
| 2580 |
+
.utility-page-content {
|
| 2581 |
+
width: 260px;
|
| 2582 |
+
text-align: center;
|
| 2583 |
+
flex-direction: column;
|
| 2584 |
+
display: flex;
|
| 2585 |
+
}
|
| 2586 |
+
|
| 2587 |
+
.utility-page-form {
|
| 2588 |
+
flex-direction: column;
|
| 2589 |
+
align-items: stretch;
|
| 2590 |
+
display: flex;
|
| 2591 |
+
}
|
| 2592 |
+
|
| 2593 |
+
.section {
|
| 2594 |
+
text-align: left;
|
| 2595 |
+
flex-flow: row;
|
| 2596 |
+
align-content: flex-end;
|
| 2597 |
+
justify-content: center;
|
| 2598 |
+
align-items: stretch;
|
| 2599 |
+
margin-top: 0;
|
| 2600 |
+
margin-left: 60px;
|
| 2601 |
+
margin-right: 60px;
|
| 2602 |
+
padding-top: 0;
|
| 2603 |
+
padding-bottom: 20px;
|
| 2604 |
+
display: flex;
|
| 2605 |
+
}
|
| 2606 |
+
|
| 2607 |
+
.div-block {
|
| 2608 |
+
padding-right: 0;
|
| 2609 |
+
}
|
| 2610 |
+
|
| 2611 |
+
.submit-button-2 {
|
| 2612 |
+
text-align: left;
|
| 2613 |
+
background-color: #333;
|
| 2614 |
+
}
|
| 2615 |
+
|
| 2616 |
+
.heading-3 {
|
| 2617 |
+
font-size: 24px;
|
| 2618 |
+
}
|
| 2619 |
+
|
| 2620 |
+
.button-5 {
|
| 2621 |
+
background-color: #333;
|
| 2622 |
+
border-radius: 10px;
|
| 2623 |
+
align-self: center;
|
| 2624 |
+
}
|
| 2625 |
+
|
| 2626 |
+
.button-6 {
|
| 2627 |
+
background-color: #333;
|
| 2628 |
+
border-radius: 10px;
|
| 2629 |
+
}
|
| 2630 |
+
|
| 2631 |
+
@media screen and (max-width: 991px) {
|
| 2632 |
+
.navbar-link {
|
| 2633 |
+
justify-content: center;
|
| 2634 |
+
}
|
| 2635 |
+
.navbar-logo-left-2 {
|
| 2636 |
+
padding-right: 0;
|
| 2637 |
+
}
|
| 2638 |
+
.navbar-menu-2 {
|
| 2639 |
+
max-width: unset;
|
| 2640 |
+
}
|
| 2641 |
+
.hero-heading-left-2 {
|
| 2642 |
+
height: 450px;
|
| 2643 |
+
}
|
| 2644 |
+
.f2wf-columns-2 {
|
| 2645 |
+
flex-direction: column;
|
| 2646 |
+
align-items: center;
|
| 2647 |
+
}
|
| 2648 |
+
.button-4 {
|
| 2649 |
+
text-align: left;
|
| 2650 |
+
justify-content: center;
|
| 2651 |
+
align-self: center;
|
| 2652 |
+
align-items: center;
|
| 2653 |
+
}
|
| 2654 |
+
.image-4 {
|
| 2655 |
+
width: 50%;
|
| 2656 |
+
height: 50%;
|
| 2657 |
+
flex-wrap: nowrap;
|
| 2658 |
+
display: none;
|
| 2659 |
+
overflow: auto;
|
| 2660 |
+
}
|
| 2661 |
+
.column-6 {
|
| 2662 |
+
align-items: center;
|
| 2663 |
+
}
|
| 2664 |
+
.tabs {
|
| 2665 |
+
margin-left: 10px;
|
| 2666 |
+
margin-right: 10px;
|
| 2667 |
+
}
|
| 2668 |
+
.tabs-menu-2 {
|
| 2669 |
+
justify-content: center;
|
| 2670 |
+
display: flex;
|
| 2671 |
+
}
|
| 2672 |
+
.tabs-content {
|
| 2673 |
+
padding-left: 0;
|
| 2674 |
+
}
|
| 2675 |
+
}
|
| 2676 |
+
|
| 2677 |
+
@media screen and (max-width: 767px) {
|
| 2678 |
+
.text-4 {
|
| 2679 |
+
font-size: 16px;
|
| 2680 |
+
}
|
| 2681 |
+
.hero-heading-left-2 {
|
| 2682 |
+
height: 380px;
|
| 2683 |
+
}
|
| 2684 |
+
.f2wf-columns-2 {
|
| 2685 |
+
height: 600px;
|
| 2686 |
+
}
|
| 2687 |
+
.title-copy {
|
| 2688 |
+
font-size: 45px;
|
| 2689 |
+
}
|
| 2690 |
+
.team-circles-2 {
|
| 2691 |
+
margin-top: auto;
|
| 2692 |
+
position: static;
|
| 2693 |
+
}
|
| 2694 |
+
.card-2 {
|
| 2695 |
+
flex-wrap: nowrap;
|
| 2696 |
+
align-content: space-between;
|
| 2697 |
+
justify-content: flex-start;
|
| 2698 |
+
align-items: flex-start;
|
| 2699 |
+
}
|
| 2700 |
+
.image-6 {
|
| 2701 |
+
width: 50%;
|
| 2702 |
+
height: 100%;
|
| 2703 |
+
}
|
| 2704 |
+
.tabs {
|
| 2705 |
+
flex-direction: column;
|
| 2706 |
+
justify-content: center;
|
| 2707 |
+
align-items: flex-start;
|
| 2708 |
+
margin-top: 10px;
|
| 2709 |
+
margin-left: 15px;
|
| 2710 |
+
margin-right: 15px;
|
| 2711 |
+
}
|
| 2712 |
+
.tabs-menu-2 {
|
| 2713 |
+
grid-column-gap: 10px;
|
| 2714 |
+
grid-row-gap: 10px;
|
| 2715 |
+
text-align: center;
|
| 2716 |
+
flex-direction: row;
|
| 2717 |
+
grid-template-rows: auto auto;
|
| 2718 |
+
grid-template-columns: 1fr 1fr;
|
| 2719 |
+
grid-auto-columns: 1fr;
|
| 2720 |
+
justify-content: center;
|
| 2721 |
+
align-self: stretch;
|
| 2722 |
+
align-items: stretch;
|
| 2723 |
+
display: grid;
|
| 2724 |
+
}
|
| 2725 |
+
.tab-link-tab-4 {
|
| 2726 |
+
width: auto;
|
| 2727 |
+
}
|
| 2728 |
+
.paragraph {
|
| 2729 |
+
font-size: 13px;
|
| 2730 |
+
}
|
| 2731 |
+
.heading {
|
| 2732 |
+
font-size: 30px;
|
| 2733 |
+
}
|
| 2734 |
+
.submit-button {
|
| 2735 |
+
text-align: center;
|
| 2736 |
+
object-position: 50% 50%;
|
| 2737 |
+
display: inline-block;
|
| 2738 |
+
position: static;
|
| 2739 |
+
overflow: visible;
|
| 2740 |
+
}
|
| 2741 |
+
}
|
| 2742 |
+
|
| 2743 |
+
@media screen and (max-width: 479px) {
|
| 2744 |
+
.text-4 {
|
| 2745 |
+
text-align: center;
|
| 2746 |
+
font-family: Inter, sans-serif;
|
| 2747 |
+
font-size: 14px;
|
| 2748 |
+
line-height: 120%;
|
| 2749 |
+
}
|
| 2750 |
+
.vectors-wrapper {
|
| 2751 |
+
width: 40px;
|
| 2752 |
+
height: 40px;
|
| 2753 |
+
}
|
| 2754 |
+
.text-11 {
|
| 2755 |
+
font-size: 15px;
|
| 2756 |
+
}
|
| 2757 |
+
.title-copy {
|
| 2758 |
+
font-size: 30px;
|
| 2759 |
+
}
|
| 2760 |
+
.tabs {
|
| 2761 |
+
margin-left: 16px;
|
| 2762 |
+
margin-right: 16px;
|
| 2763 |
+
}
|
| 2764 |
+
.tabs-menu-2 {
|
| 2765 |
+
grid-column-gap: 10px;
|
| 2766 |
+
grid-row-gap: 10px;
|
| 2767 |
+
flex: 1;
|
| 2768 |
+
grid-template-rows: auto auto;
|
| 2769 |
+
grid-template-columns: 1fr 1fr;
|
| 2770 |
+
grid-auto-columns: 1fr;
|
| 2771 |
+
grid-auto-flow: row;
|
| 2772 |
+
align-self: stretch;
|
| 2773 |
+
align-items: stretch;
|
| 2774 |
+
justify-items: stretch;
|
| 2775 |
+
font-size: 10px;
|
| 2776 |
+
line-height: 12px;
|
| 2777 |
+
display: grid;
|
| 2778 |
+
}
|
| 2779 |
+
.text-block-2 {
|
| 2780 |
+
text-align: center;
|
| 2781 |
+
}
|
| 2782 |
+
.text-block-3 {
|
| 2783 |
+
text-align: center;
|
| 2784 |
+
display: block;
|
| 2785 |
+
overflow: visible;
|
| 2786 |
+
}
|
| 2787 |
+
.tab-link-tab-4 {
|
| 2788 |
+
flex-direction: row;
|
| 2789 |
+
display: block;
|
| 2790 |
+
}
|
| 2791 |
+
.text-block-4 {
|
| 2792 |
+
text-align: center;
|
| 2793 |
+
}
|
| 2794 |
+
.paragraph {
|
| 2795 |
+
text-align: left;
|
| 2796 |
+
margin-bottom: 20px;
|
| 2797 |
+
font-size: 12px;
|
| 2798 |
+
line-height: 15px;
|
| 2799 |
+
}
|
| 2800 |
+
.heading {
|
| 2801 |
+
text-align: left;
|
| 2802 |
+
font-size: 28px;
|
| 2803 |
+
line-height: 24px;
|
| 2804 |
+
}
|
| 2805 |
+
.field-label,
|
| 2806 |
+
.field-label-2 {
|
| 2807 |
+
font-size: 15px;
|
| 2808 |
+
}
|
| 2809 |
+
.text-block-5 {
|
| 2810 |
+
text-align: center;
|
| 2811 |
+
}
|
| 2812 |
+
#w-node-bdfdfb5d-318b-f1c9-e2df-4b82621eca06-3afa01cf {
|
| 2813 |
+
align-self: stretch;
|
| 2814 |
+
justify-self: stretch;
|
| 2815 |
+
}
|
| 2816 |
+
}
|
| 2817 |
+
|
| 2818 |
+
.tab-container {
|
| 2819 |
+
display: flex;
|
| 2820 |
+
flex-wrap: wrap;
|
| 2821 |
+
margin: 0 auto;
|
| 2822 |
+
max-width: 800px;
|
| 2823 |
+
margin-left: 10%;
|
| 2824 |
+
margin-right: 10%;
|
| 2825 |
+
margin-top: 10%;
|
| 2826 |
+
}
|
| 2827 |
+
|
| 2828 |
+
|
| 2829 |
+
/* Style the left column (tab menu) */
|
| 2830 |
+
|
| 2831 |
+
.tab-menu {
|
| 2832 |
+
flex: 1;
|
| 2833 |
+
margin-right: 10px;
|
| 2834 |
+
padding-bottom: 10px;
|
| 2835 |
+
}
|
| 2836 |
+
|
| 2837 |
+
|
| 2838 |
+
/* Style the tab buttons inside the tab menu */
|
| 2839 |
+
|
| 2840 |
+
.tab-menu button {
|
| 2841 |
+
display: block;
|
| 2842 |
+
background-color: #ddd;
|
| 2843 |
+
border: none;
|
| 2844 |
+
outline: none;
|
| 2845 |
+
cursor: pointer;
|
| 2846 |
+
padding: 14px 16px;
|
| 2847 |
+
transition: 0.3s;
|
| 2848 |
+
font-size: 17px;
|
| 2849 |
+
margin: 0;
|
| 2850 |
+
width: 100%;
|
| 2851 |
+
text-align: center;
|
| 2852 |
+
border-radius: 10px;
|
| 2853 |
+
margin-bottom: 10px;
|
| 2854 |
+
}
|
| 2855 |
+
|
| 2856 |
+
|
| 2857 |
+
/* Change background color of buttons on hover */
|
| 2858 |
+
|
| 2859 |
+
.tab-menu button:hover {
|
| 2860 |
+
background-color: #ddd;
|
| 2861 |
+
}
|
| 2862 |
+
|
| 2863 |
+
|
| 2864 |
+
/* Create an active/current tablink class */
|
| 2865 |
+
|
| 2866 |
+
.tab-menu button.active {
|
| 2867 |
+
background-color: #ccc;
|
| 2868 |
+
}
|
| 2869 |
+
|
| 2870 |
+
|
| 2871 |
+
/* Style the right column (tab content) */
|
| 2872 |
+
|
| 2873 |
+
.tab-content {
|
| 2874 |
+
flex: 2;
|
| 2875 |
+
background-color: #fff;
|
| 2876 |
+
margin-left: 10px;
|
| 2877 |
+
border-radius: 10px;
|
| 2878 |
+
}
|
| 2879 |
+
|
| 2880 |
+
|
| 2881 |
+
/* Style the tab content */
|
| 2882 |
+
|
| 2883 |
+
.tabcontent {
|
| 2884 |
+
display: none;
|
| 2885 |
+
margin: 0 auto;
|
| 2886 |
+
max-width: 800px;
|
| 2887 |
+
padding: 0px 12px;
|
| 2888 |
+
border-top: none;
|
| 2889 |
+
}
|
| 2890 |
+
|
| 2891 |
+
iframe {
|
| 2892 |
+
border: none;
|
| 2893 |
+
overflow: hidden;
|
| 2894 |
+
}
|
| 2895 |
+
|
| 2896 |
+
body {
|
| 2897 |
+
margin: 0;
|
| 2898 |
+
padding: 0;
|
| 2899 |
+
font-family: Inter;
|
| 2900 |
+
}
|
| 2901 |
+
|
| 2902 |
+
.responsive-bar {
|
| 2903 |
+
display: none;
|
| 2904 |
+
}
|
| 2905 |
+
|
| 2906 |
+
nav {
|
| 2907 |
+
width: 100%;
|
| 2908 |
+
position: fixed;
|
| 2909 |
+
top: 0;
|
| 2910 |
+
left: 0;
|
| 2911 |
+
height: 80px;
|
| 2912 |
+
padding: 10px 100px;
|
| 2913 |
+
box-sizing: border-box;
|
| 2914 |
+
transition: .5s;
|
| 2915 |
+
font-family: Poppins;
|
| 2916 |
+
}
|
| 2917 |
+
|
| 2918 |
+
nav.black {
|
| 2919 |
+
background: rgba(0, 0, 0, 0.8);
|
| 2920 |
+
height: 80px;
|
| 2921 |
+
padding: 10px 50px;
|
| 2922 |
+
z-index: 10;
|
| 2923 |
+
}
|
| 2924 |
+
|
| 2925 |
+
nav .logo {
|
| 2926 |
+
float: left;
|
| 2927 |
+
display: flex;
|
| 2928 |
+
align-items: center;
|
| 2929 |
+
}
|
| 2930 |
+
|
| 2931 |
+
nav .logo img {
|
| 2932 |
+
height: 80px;
|
| 2933 |
+
transition: .5s;
|
| 2934 |
+
margin-right: 10px;
|
| 2935 |
+
}
|
| 2936 |
+
|
| 2937 |
+
nav .logo .logo-text {
|
| 2938 |
+
color: #000;
|
| 2939 |
+
letter-spacing: .1em;
|
| 2940 |
+
font-family: Orbitron, sans-serif;
|
| 2941 |
+
font-size: 24px;
|
| 2942 |
+
font-weight: regular;
|
| 2943 |
+
}
|
| 2944 |
+
|
| 2945 |
+
nav.black .logo img {
|
| 2946 |
+
height: 60px;
|
| 2947 |
+
filter: invert(100%);
|
| 2948 |
+
font-weight: regular;
|
| 2949 |
+
}
|
| 2950 |
+
|
| 2951 |
+
nav.black .logo .logo-text {
|
| 2952 |
+
color: #fff;
|
| 2953 |
+
}
|
| 2954 |
+
|
| 2955 |
+
nav>ul {
|
| 2956 |
+
width: 100%;
|
| 2957 |
+
margin: 0 auto;
|
| 2958 |
+
padding: 0;
|
| 2959 |
+
float: none;
|
| 2960 |
+
text-align: right;
|
| 2961 |
+
}
|
| 2962 |
+
|
| 2963 |
+
nav>ul>li {
|
| 2964 |
+
display: inline-block;
|
| 2965 |
+
margin: 0 10px;
|
| 2966 |
+
color: #000;
|
| 2967 |
+
}
|
| 2968 |
+
|
| 2969 |
+
nav>ul>li>a:hover {
|
| 2970 |
+
background: #000;
|
| 2971 |
+
color: #fff;
|
| 2972 |
+
}
|
| 2973 |
+
|
| 2974 |
+
nav>ul>li>a {
|
| 2975 |
+
color: #000;
|
| 2976 |
+
text-decoration: none;
|
| 2977 |
+
line-height: 80px;
|
| 2978 |
+
padding: 5px 20px;
|
| 2979 |
+
transition: .5s;
|
| 2980 |
+
}
|
| 2981 |
+
|
| 2982 |
+
nav.black>ul>li>a {
|
| 2983 |
+
color: #fff;
|
| 2984 |
+
line-height: 60px;
|
| 2985 |
+
}
|
| 2986 |
+
|
| 2987 |
+
nav.black>ul>li>a:hover {
|
| 2988 |
+
background: #fff;
|
| 2989 |
+
color: #000;
|
| 2990 |
+
}
|
| 2991 |
+
|
| 2992 |
+
.end-button {
|
| 2993 |
+
display: absolute;
|
| 2994 |
+
padding: 10px 15px;
|
| 2995 |
+
border: 2px solid #000;
|
| 2996 |
+
border-radius: 20px;
|
| 2997 |
+
background-color: #000;
|
| 2998 |
+
color: #fff;
|
| 2999 |
+
text-decoration: none;
|
| 3000 |
+
}
|
| 3001 |
+
|
| 3002 |
+
.end-button:hover {
|
| 3003 |
+
border: 2px solid #000;
|
| 3004 |
+
background-color: transparent;
|
| 3005 |
+
color: #000;
|
| 3006 |
+
}
|
| 3007 |
+
|
| 3008 |
+
section.sec1 {
|
| 3009 |
+
display: flex;
|
| 3010 |
+
align-items: flex-start;
|
| 3011 |
+
justify-content: flex-start;
|
| 3012 |
+
flex-direction: column;
|
| 3013 |
+
color: #fff;
|
| 3014 |
+
width: 100%;
|
| 3015 |
+
height: 100vh;
|
| 3016 |
+
background: url(https://i.pinimg.com/originals/7a/d0/c9/7ad0c9b192167fbeac6f53ff97a656df.gif);
|
| 3017 |
+
background-size: cover;
|
| 3018 |
+
}
|
| 3019 |
+
|
| 3020 |
+
section.content {
|
| 3021 |
+
margin: 0;
|
| 3022 |
+
padding: 0;
|
| 3023 |
+
font-size: 1.1em;
|
| 3024 |
+
}
|
| 3025 |
+
|
| 3026 |
+
@media(max-width:768px) {
|
| 3027 |
+
.responsive-bar {
|
| 3028 |
+
display: block;
|
| 3029 |
+
width: 100%;
|
| 3030 |
+
height: 60px;
|
| 3031 |
+
background: #262626;
|
| 3032 |
+
position: fixed;
|
| 3033 |
+
top: 0;
|
| 3034 |
+
left: 0;
|
| 3035 |
+
padding: 5px 20px;
|
| 3036 |
+
box-sizing: border-box;
|
| 3037 |
+
z-index: 1;
|
| 3038 |
+
}
|
| 3039 |
+
.responsive-bar .logo img {
|
| 3040 |
+
float: left;
|
| 3041 |
+
height: 50px;
|
| 3042 |
+
}
|
| 3043 |
+
.responsive-bar .menu h4 {
|
| 3044 |
+
float: right;
|
| 3045 |
+
color: #fff;
|
| 3046 |
+
margin: 0;
|
| 3047 |
+
padding: 0;
|
| 3048 |
+
line-height: 50px;
|
| 3049 |
+
cursor: pointer;
|
| 3050 |
+
text-transform: uppercase;
|
| 3051 |
+
}
|
| 3052 |
+
nav {
|
| 3053 |
+
padding: 0;
|
| 3054 |
+
}
|
| 3055 |
+
nav,
|
| 3056 |
+
nav.black {
|
| 3057 |
+
background: #262626;
|
| 3058 |
+
height: 60px;
|
| 3059 |
+
padding: 0;
|
| 3060 |
+
}
|
| 3061 |
+
nav .logo {
|
| 3062 |
+
display: none;
|
| 3063 |
+
}
|
| 3064 |
+
nav ul {
|
| 3065 |
+
position: absolute;
|
| 3066 |
+
width: 100%;
|
| 3067 |
+
top: 60px;
|
| 3068 |
+
left: 0;
|
| 3069 |
+
background: #262626;
|
| 3070 |
+
float: none;
|
| 3071 |
+
display: none;
|
| 3072 |
+
}
|
| 3073 |
+
nav ul.active {
|
| 3074 |
+
display: block;
|
| 3075 |
+
}
|
| 3076 |
+
nav ul li {
|
| 3077 |
+
width: 100%;
|
| 3078 |
+
}
|
| 3079 |
+
nav ul li a {
|
| 3080 |
+
display: block;
|
| 3081 |
+
padding: 0;
|
| 3082 |
+
width: 100%;
|
| 3083 |
+
text-align: center;
|
| 3084 |
+
line-height: 30px !important;
|
| 3085 |
+
color: #fff;
|
| 3086 |
+
}
|
| 3087 |
+
nav>ul {
|
| 3088 |
+
width: 100%;
|
| 3089 |
+
display: none;
|
| 3090 |
+
}
|
| 3091 |
+
nav>ul>li {
|
| 3092 |
+
display: block;
|
| 3093 |
+
text-align: center;
|
| 3094 |
+
}
|
| 3095 |
+
.active {
|
| 3096 |
+
display: block;
|
| 3097 |
+
}
|
| 3098 |
+
}
|
static/css/model.css
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
|
| 2 |
+
body {
|
| 3 |
+
font-family: 'Poppins', sans-serif;
|
| 4 |
+
margin: 20 px;
|
| 5 |
+
padding: 0;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
.container {
|
| 9 |
+
max-width: 600px;
|
| 10 |
+
margin: 50px auto;
|
| 11 |
+
background-color: #fff;
|
| 12 |
+
border-radius: 8px;
|
| 13 |
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
| 14 |
+
padding: 20px;
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
h1 {
|
| 18 |
+
text-align: left;
|
| 19 |
+
color: #333;
|
| 20 |
+
font-weight: 600;
|
| 21 |
+
font-size: 24px;
|
| 22 |
+
margin-bottom: 20px;
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
form {
|
| 26 |
+
display: flex;
|
| 27 |
+
flex-wrap: wrap;
|
| 28 |
+
gap: 10px;
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
label {
|
| 32 |
+
margin-bottom: 8px;
|
| 33 |
+
color: #555;
|
| 34 |
+
font-weight: 500;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
input[type="number"] {
|
| 38 |
+
border: 1px solid #ddd;
|
| 39 |
+
border-radius: 4px;
|
| 40 |
+
flex: 1;
|
| 41 |
+
min-width: 100px;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
button {
|
| 45 |
+
padding: 8px 16px;
|
| 46 |
+
background-color: #4CAF50;
|
| 47 |
+
color: #fff;
|
| 48 |
+
border: none;
|
| 49 |
+
border-radius: 4px;
|
| 50 |
+
cursor: pointer;
|
| 51 |
+
font-weight: 600;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
table {
|
| 55 |
+
width: 100%;
|
| 56 |
+
border-collapse: collapse;
|
| 57 |
+
margin-bottom: 20px;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
th,
|
| 61 |
+
td {
|
| 62 |
+
padding: 8px;
|
| 63 |
+
text-align: left;
|
| 64 |
+
border-bottom: 1px solid #ddd;
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
th {
|
| 68 |
+
font-weight: 600;
|
| 69 |
+
background-color: #f9f9f9;
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
ul {
|
| 73 |
+
list-style-type: none;
|
| 74 |
+
padding: 0;
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
li {
|
| 78 |
+
margin-bottom: 10px;
|
| 79 |
+
color: #555;
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
p {
|
| 83 |
+
margin-bottom: 5px;
|
| 84 |
+
color: #333;
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
.logo {
|
| 88 |
+
width: 50px;
|
| 89 |
+
height: 50px;
|
| 90 |
+
margin-right: 10px;
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
.header {
|
| 94 |
+
display: flex;
|
| 95 |
+
align-items: center;
|
| 96 |
+
max-width: 100%;
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
.form-container {
|
| 100 |
+
display: flex;
|
| 101 |
+
flex-direction: row;
|
| 102 |
+
align-items: center;
|
| 103 |
+
justify-content: center;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
.form-container .form-group {
|
| 107 |
+
display: flex;
|
| 108 |
+
flex-wrap: wrap;
|
| 109 |
+
gap: 2px;
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
.form-group label {
|
| 113 |
+
margin-bottom: 5px;
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
.form-group input[type="number"] {
|
| 117 |
+
padding: 8px;
|
| 118 |
+
border: 1px solid #ddd;
|
| 119 |
+
border-radius: 4px;
|
| 120 |
+
flex: 1;
|
| 121 |
+
min-width: 50px;
|
| 122 |
+
}
|
| 123 |
+
|
| 124 |
+
.submit-btn {
|
| 125 |
+
width: 200px;
|
| 126 |
+
margin-top: 10px;
|
| 127 |
+
align-self: center;
|
| 128 |
+
}
|
static/images/Model-Linear.png
ADDED
|
static/images/Model-Naive.png
ADDED
|
static/images/Model-kMeans.png
ADDED
|
static/images/Model-kNN.png
ADDED
|
static/images/cluster.png
ADDED
|
static/images/gif3.webp
ADDED
|
static/images/hero.png
ADDED
|
static/images/logo.svg
ADDED
|
|
static/js/js.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
templates/algos.html
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{% extends 'base.html' %} {% block content %}
|
| 2 |
+
<!DOCTYPE html>
|
| 3 |
+
<html>
|
| 4 |
+
|
| 5 |
+
<head>
|
| 6 |
+
<meta charset="utf-8 " />
|
| 7 |
+
<title>Classifiers</title>
|
| 8 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='main.css')}}">
|
| 9 |
+
<link href="https://fonts.googleapis.com " rel="preconnect " />
|
| 10 |
+
<link href="https://fonts.gstatic.com " rel="preconnect " crossorigin="anonymous " />
|
| 11 |
+
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js " type="text/javascript "></script>
|
| 12 |
+
<script type="text/javascript ">
|
| 13 |
+
WebFont.load({
|
| 14 |
+
google: {
|
| 15 |
+
families: ["Orbitron:regular,500,600,700,800,900 ", "Noto Sans Tamil:100,200,300,regular,500,600,700,800,900 ", "Inter:100,200,300,regular,500,600,700,800,900 "]
|
| 16 |
+
}
|
| 17 |
+
});
|
| 18 |
+
</script>
|
| 19 |
+
<script type="text/javascript ">
|
| 20 |
+
! function(o, c) {
|
| 21 |
+
var n = c.documentElement,
|
| 22 |
+
t = " w-mod- ";
|
| 23 |
+
n.className += t + "js ", ("ontouchstart " in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch ")
|
| 24 |
+
}(window, document);
|
| 25 |
+
</script>
|
| 26 |
+
</head>
|
| 27 |
+
|
| 28 |
+
<body>
|
| 29 |
+
<div class="tab-container">
|
| 30 |
+
<!-- Left column (tab menu) -->
|
| 31 |
+
<div class="tab-menu">
|
| 32 |
+
<button class="tablinks active" onclick="openTab(event, 'linear')">Linear Regression</button>
|
| 33 |
+
<button class="tablinks" onclick="openTab(event, 'knn')">KNN</button>
|
| 34 |
+
<button class="tablinks" onclick="openTab(event, 'kmeans')">KMeans</button>
|
| 35 |
+
<button class="tablinks" onclick="openTab(event, 'naive-bayes')">Naive Bayes</button>
|
| 36 |
+
</div>
|
| 37 |
+
|
| 38 |
+
<!-- Right column (tab content) -->
|
| 39 |
+
<div class="tab-content">
|
| 40 |
+
<div id="linear" class="tabcontent">
|
| 41 |
+
<iframe src="{{ url_for('linear') }}" style="width:100%; height:500px;" scrolling="no"></iframe>
|
| 42 |
+
</div>
|
| 43 |
+
|
| 44 |
+
<div id="knn" class="tabcontent">
|
| 45 |
+
<iframe src="{{ url_for('knn') }}" style="width:100%; height:500px;" scrolling="no"></iframe>
|
| 46 |
+
</div>
|
| 47 |
+
|
| 48 |
+
<div id="kmeans" class="tabcontent">
|
| 49 |
+
<iframe src="{{ url_for('kmeans') }}" style="width:100%; height:500px; display: flex;" scrolling="no"></iframe>
|
| 50 |
+
</div>
|
| 51 |
+
|
| 52 |
+
<div id="naive-bayes" class="tabcontent">
|
| 53 |
+
<iframe src="{{ url_for('naive') }}" style="width:100%; height:500px;" scrolling="no"></iframe>
|
| 54 |
+
</div>
|
| 55 |
+
</div>
|
| 56 |
+
|
| 57 |
+
<script>
|
| 58 |
+
document.getElementById("linear").style.display = "block";
|
| 59 |
+
|
| 60 |
+
function openTab(evt, tabName) {
|
| 61 |
+
var i, tabcontent, tablinks;
|
| 62 |
+
|
| 63 |
+
tabcontent = document.getElementsByClassName("tabcontent");
|
| 64 |
+
for (i = 0; i < tabcontent.length; i++) {
|
| 65 |
+
tabcontent[i].style.display = "none";
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
tablinks = document.getElementsByClassName("tablinks");
|
| 69 |
+
for (i = 0; i < tablinks.length; i++) {
|
| 70 |
+
tablinks[i].className = tablinks[i].className.replace(" active", "");
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
document.getElementById(tabName).style.display = "block";
|
| 74 |
+
evt.currentTarget.className += " active";
|
| 75 |
+
}
|
| 76 |
+
</script>
|
| 77 |
+
</body>
|
| 78 |
+
|
| 79 |
+
</html>{% endblock %}
|
templates/base.html
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta name="viewport" content="width=device-width,initial-scale=1, user-scalable=no">
|
| 6 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css')}}">
|
| 7 |
+
<link href="https://fonts.googleapis.com " rel="preconnect " />
|
| 8 |
+
<link rel="icon" type="image/png" href="{{ url_for('static', filename='images/logo.svg')}}"/>
|
| 9 |
+
<link href="https://fonts.gstatic.com " rel="preconnect " crossorigin="anonymous " />
|
| 10 |
+
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
|
| 11 |
+
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
|
| 12 |
+
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js " type="text/javascript "></script>
|
| 13 |
+
<script type="text/javascript ">
|
| 14 |
+
WebFont.load({
|
| 15 |
+
google: {
|
| 16 |
+
families: ["Orbitron:regular,500,600,700,800,900 ", "Noto Sans Tamil:100,200,300,regular,500,600,700,800,900 ", "Inter:100,200,300,regular,500,600,700,800,900 "]
|
| 17 |
+
}
|
| 18 |
+
});
|
| 19 |
+
</script>
|
| 20 |
+
|
| 21 |
+
<script type="text/javascript">
|
| 22 |
+
$(window).on('scroll', function() {
|
| 23 |
+
if ($(window).scrollTop()) {
|
| 24 |
+
$('nav').addClass('black');
|
| 25 |
+
} else {
|
| 26 |
+
$('nav').removeClass('black');
|
| 27 |
+
}
|
| 28 |
+
})
|
| 29 |
+
/*menu button onclick function*/
|
| 30 |
+
$(document).ready(function() {
|
| 31 |
+
$('.menu h4').click(function() {
|
| 32 |
+
$("nav ul").toggleClass("active")
|
| 33 |
+
})
|
| 34 |
+
})
|
| 35 |
+
</script>
|
| 36 |
+
</head>
|
| 37 |
+
|
| 38 |
+
<body>
|
| 39 |
+
<div class="responsive-bar">
|
| 40 |
+
<div class="logo">
|
| 41 |
+
<img src="{{ url_for('static', filename='images/logo.svg') }}" alt="logo" />
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
</div>
|
| 45 |
+
<div class="menu">
|
| 46 |
+
<h4>Menu</h4>
|
| 47 |
+
</div>
|
| 48 |
+
</div>
|
| 49 |
+
<nav>
|
| 50 |
+
<div class="logo">
|
| 51 |
+
<img src="{{ url_for('static', filename='images/logo.svg') }}" alt="logo" />
|
| 52 |
+
|
| 53 |
+
<span class="logo-text">Quatro</span>
|
| 54 |
+
</div>
|
| 55 |
+
<ul>
|
| 56 |
+
<li><a href="{{ url_for('index')}}" class="menulink">Home</a></li>
|
| 57 |
+
<li><a href="{{ url_for('algos')}}" class="end-button">Classifiers</a></li>
|
| 58 |
+
|
| 59 |
+
</ul>
|
| 60 |
+
</nav>
|
| 61 |
+
|
| 62 |
+
<div class="container">
|
| 63 |
+
{% block content %} {% endblock %}
|
| 64 |
+
</div>
|
| 65 |
+
</body>
|
| 66 |
+
|
| 67 |
+
</html>
|
templates/draft.html
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta name="viewport" content="width=device-width,initial-scale=1, user-scalable=no">
|
| 6 |
+
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
|
| 7 |
+
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
|
| 8 |
+
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js " type="text/javascript "></script>
|
| 9 |
+
<script type="text/javascript ">
|
| 10 |
+
WebFont.load({
|
| 11 |
+
google: {
|
| 12 |
+
families: ["Orbitron:regular,500,600,700,800,900 ", "Noto Sans Tamil:100,200,300,regular,500,600,700,800,900 ", "Inter:100,200,300,regular,500,600,700,800,900 "]
|
| 13 |
+
}
|
| 14 |
+
});
|
| 15 |
+
</script>
|
| 16 |
+
|
| 17 |
+
<script type="text/javascript">
|
| 18 |
+
$(window).on('scroll', function() {
|
| 19 |
+
if ($(window).scrollTop()) {
|
| 20 |
+
$('nav').addClass('black');
|
| 21 |
+
} else {
|
| 22 |
+
$('nav').removeClass('black');
|
| 23 |
+
}
|
| 24 |
+
})
|
| 25 |
+
/*menu button onclick function*/
|
| 26 |
+
$(document).ready(function() {
|
| 27 |
+
$('.menu h4').click(function() {
|
| 28 |
+
$("nav ul").toggleClass("active")
|
| 29 |
+
})
|
| 30 |
+
})
|
| 31 |
+
</script>
|
| 32 |
+
<style>
|
| 33 |
+
body {
|
| 34 |
+
margin: 0;
|
| 35 |
+
padding: 0;
|
| 36 |
+
font-family: Inter;
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
.responsive-bar {
|
| 40 |
+
display: none;
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
nav {
|
| 44 |
+
width: 100%;
|
| 45 |
+
position: fixed;
|
| 46 |
+
top: 0;
|
| 47 |
+
left: 0;
|
| 48 |
+
height: 80px;
|
| 49 |
+
padding: 10px 100px;
|
| 50 |
+
box-sizing: border-box;
|
| 51 |
+
transition: .5s;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
nav.black {
|
| 55 |
+
background: rgba(0, 0, 0, 0.8);
|
| 56 |
+
height: 80px;
|
| 57 |
+
padding: 10px 50px;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
nav .logo {
|
| 61 |
+
float: left;
|
| 62 |
+
display: flex;
|
| 63 |
+
align-items: center;
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
nav .logo img {
|
| 67 |
+
height: 80px;
|
| 68 |
+
transition: .5s;
|
| 69 |
+
margin-right: 10px;
|
| 70 |
+
filter: invert(100%);
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
nav .logo .logo-text {
|
| 74 |
+
color: #fff;
|
| 75 |
+
letter-spacing: .1em;
|
| 76 |
+
font-family: Orbitron, sans-serif;
|
| 77 |
+
font-size: 24px;
|
| 78 |
+
font-weight: regular;
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
nav.black .logo img {
|
| 82 |
+
height: 60px;
|
| 83 |
+
filter: invert(100%);
|
| 84 |
+
font-weight: regular;
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
nav.black .logo .logo-text {
|
| 88 |
+
color: #fff;
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
nav>ul {
|
| 92 |
+
width: 80%;
|
| 93 |
+
margin: 0 auto;
|
| 94 |
+
padding: 0;
|
| 95 |
+
float: none;
|
| 96 |
+
text-align: center;
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
nav>ul>li {
|
| 100 |
+
display: inline-block;
|
| 101 |
+
margin: 0 10px;
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
nav>ul>li>a:hover {
|
| 105 |
+
background: #f00;
|
| 106 |
+
color: #fff;
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
nav>ul>li>a {
|
| 110 |
+
color: #ffffff;
|
| 111 |
+
text-decoration: none;
|
| 112 |
+
line-height: 80px;
|
| 113 |
+
padding: 5px 20px;
|
| 114 |
+
transition: .5s;
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
nav.black>ul>li>a {
|
| 118 |
+
color: #fff;
|
| 119 |
+
line-height: 60px;
|
| 120 |
+
}
|
| 121 |
+
|
| 122 |
+
section.sec1 {
|
| 123 |
+
display: flex;
|
| 124 |
+
align-items: flex-start;
|
| 125 |
+
justify-content: flex-start;
|
| 126 |
+
flex-direction: column;
|
| 127 |
+
color: #fff;
|
| 128 |
+
width: 100%;
|
| 129 |
+
height: 100vh;
|
| 130 |
+
background: url(https://i.pinimg.com/originals/7a/d0/c9/7ad0c9b192167fbeac6f53ff97a656df.gif);
|
| 131 |
+
background-size: cover;
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
section.content {
|
| 135 |
+
margin: 0;
|
| 136 |
+
padding: 0;
|
| 137 |
+
font-size: 1.1em;
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
@media(max-width:768px) {
|
| 141 |
+
.responsive-bar {
|
| 142 |
+
display: block;
|
| 143 |
+
width: 100%;
|
| 144 |
+
height: 60px;
|
| 145 |
+
background: #262626;
|
| 146 |
+
position: fixed;
|
| 147 |
+
top: 0;
|
| 148 |
+
left: 0;
|
| 149 |
+
padding: 5px 20px;
|
| 150 |
+
box-sizing: border-box;
|
| 151 |
+
z-index: 1;
|
| 152 |
+
}
|
| 153 |
+
.responsive-bar .logo img {
|
| 154 |
+
float: left;
|
| 155 |
+
height: 50px;
|
| 156 |
+
}
|
| 157 |
+
.responsive-bar .menu h4 {
|
| 158 |
+
float: right;
|
| 159 |
+
color: #fff;
|
| 160 |
+
margin: 0;
|
| 161 |
+
padding: 0;
|
| 162 |
+
line-height: 50px;
|
| 163 |
+
cursor: pointer;
|
| 164 |
+
text-transform: uppercase;
|
| 165 |
+
}
|
| 166 |
+
nav {
|
| 167 |
+
padding: 0;
|
| 168 |
+
}
|
| 169 |
+
nav,
|
| 170 |
+
nav.black {
|
| 171 |
+
background: #262626;
|
| 172 |
+
height: 60px;
|
| 173 |
+
padding: 0;
|
| 174 |
+
}
|
| 175 |
+
nav .logo {
|
| 176 |
+
display: none;
|
| 177 |
+
}
|
| 178 |
+
nav ul {
|
| 179 |
+
position: absolute;
|
| 180 |
+
width: 100%;
|
| 181 |
+
top: 60px;
|
| 182 |
+
left: 0;
|
| 183 |
+
background: #262626;
|
| 184 |
+
float: none;
|
| 185 |
+
display: none;
|
| 186 |
+
}
|
| 187 |
+
nav ul.active {
|
| 188 |
+
display: block;
|
| 189 |
+
}
|
| 190 |
+
nav ul li {
|
| 191 |
+
width: 100%;
|
| 192 |
+
}
|
| 193 |
+
nav ul li a {
|
| 194 |
+
display: block;
|
| 195 |
+
padding: 0;
|
| 196 |
+
width: 100%;
|
| 197 |
+
text-align: center;
|
| 198 |
+
line-height: 30px !important;
|
| 199 |
+
color: #fff;
|
| 200 |
+
}
|
| 201 |
+
nav>ul {
|
| 202 |
+
width: 100%;
|
| 203 |
+
display: none;
|
| 204 |
+
}
|
| 205 |
+
nav>ul>li {
|
| 206 |
+
display: block;
|
| 207 |
+
text-align: center;
|
| 208 |
+
}
|
| 209 |
+
.active {
|
| 210 |
+
display: block;
|
| 211 |
+
}
|
| 212 |
+
}
|
| 213 |
+
</style>
|
| 214 |
+
</head>
|
| 215 |
+
|
| 216 |
+
<body>
|
| 217 |
+
<div class="responsive-bar">
|
| 218 |
+
<div class="logo">
|
| 219 |
+
<img src="logo.svg" alt="logo" />
|
| 220 |
+
|
| 221 |
+
</div>
|
| 222 |
+
<div class="menu">
|
| 223 |
+
<h4>Menu</h4>
|
| 224 |
+
</div>
|
| 225 |
+
</div>
|
| 226 |
+
<nav>
|
| 227 |
+
<div class="logo">
|
| 228 |
+
<img src="logo.svg" alt="logo" />
|
| 229 |
+
<span class="logo-text">Quatro</span>
|
| 230 |
+
</div>
|
| 231 |
+
<ul>
|
| 232 |
+
<li><a href="#">Home</a></li>
|
| 233 |
+
<li> <a href="#">Classifiers</a></li>
|
| 234 |
+
<li><a href="#">About us</a></li>
|
| 235 |
+
|
| 236 |
+
</ul>
|
| 237 |
+
</nav>
|
| 238 |
+
</body>
|
| 239 |
+
|
| 240 |
+
</html>
|
templates/index.html
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{% extends 'base.html' %} {% block content %}
|
| 2 |
+
<!DOCTYPE html>
|
| 3 |
+
<html>
|
| 4 |
+
|
| 5 |
+
<head>
|
| 6 |
+
<meta charset="utf-8" />
|
| 7 |
+
<title>Machine Learning Algorithms</title>
|
| 8 |
+
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
| 9 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='static/css/main.css')}}">
|
| 10 |
+
<link href="https://fonts.googleapis.com" rel="preconnect" />
|
| 11 |
+
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous" />
|
| 12 |
+
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
|
| 13 |
+
<script type="text/javascript">
|
| 14 |
+
WebFont.load({
|
| 15 |
+
google: {
|
| 16 |
+
families: ["Orbitron:regular,500,600,700,800,900", "Noto Sans Tamil:100,200,300,regular,500,600,700,800,900", "Inter:100,200,300,regular,500,600,700,800,900"]
|
| 17 |
+
}
|
| 18 |
+
});
|
| 19 |
+
</script>
|
| 20 |
+
<script type="text/javascript">
|
| 21 |
+
! function(o, c) {
|
| 22 |
+
var n = c.documentElement,
|
| 23 |
+
t = " w-mod-";
|
| 24 |
+
n.className += t + "js", ("ontouchstart" in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch")
|
| 25 |
+
}(window, document);
|
| 26 |
+
</script>
|
| 27 |
+
|
| 28 |
+
</head>
|
| 29 |
+
|
| 30 |
+
<body>
|
| 31 |
+
<div class="container-3 f2wf-columns-2">
|
| 32 |
+
<div class="column-4">
|
| 33 |
+
<div class="column-4">
|
| 34 |
+
<h1 class="title-copy">Machine Learning Algorithms</h1>
|
| 35 |
+
<p class="text-4">Welcome to our Quatro Data Analysis Web App! Explore the power of machine learning models - Linear Regression, K-Nearest Neighbors, K-Means, and Naive Bayes - as we delve into job data extracted from the popular Indeed website. Our intuitive Flask-based web app empowers you to input data and obtain accurate predictions from these models. Unleash the potential of AI-driven insights. Start exploring now!</p>
|
| 36 |
+
</div>
|
| 37 |
+
<a href="{{ url_for('algos')}}" class="button-4">
|
| 38 |
+
<div class="text-12">CLASSIFY</div>
|
| 39 |
+
</a>
|
| 40 |
+
<div class="actions-2"></div>
|
| 41 |
+
</div>
|
| 42 |
+
<div class="column-5">
|
| 43 |
+
<div class="image-wrapper-4"><img src="{{ url_for('static', filename='images/hero1.gif') }}" width="100" height="100" class="image-4" />
|
| 44 |
+
</div>
|
| 45 |
+
</div>
|
| 46 |
+
</div>
|
| 47 |
+
</div>
|
| 48 |
+
<div class="features-list-2">
|
| 49 |
+
<div class="columns-4 f2wf-columns-2">
|
| 50 |
+
<div class="column-4">
|
| 51 |
+
<div class="content-4">
|
| 52 |
+
<div class="intro-2">
|
| 53 |
+
<div class="title">Machine Learning Algorithms</div>
|
| 54 |
+
<div class="description">Machine learning is a branch of artificial intelligence that focuses on developing algorithms and models that enable computers to learn and make predictions or decisions without being explicitly programmed. It involves training machines on data to recognize patterns, extract insights, and improve performance over time.
|
| 55 |
+
</div>
|
| 56 |
+
</div>
|
| 57 |
+
<div class="description">
|
| 58 |
+
<a href="https://www.ibm.com/topics/machine-learning">Learn more →</a>
|
| 59 |
+
</div>
|
| 60 |
+
|
| 61 |
+
</div>
|
| 62 |
+
</div>
|
| 63 |
+
<div class="intro-2">
|
| 64 |
+
<div class="models-list">
|
| 65 |
+
<div class="image-wrapper-5"><img src="{{ url_for('static', filename='images/Model-Linear.png') }}" loading="lazy" width="80" height="80" alt="" class="image-5" /></div>
|
| 66 |
+
<div class="frame-237641">
|
| 67 |
+
<div class="description-2">K-Nearest Neighbor</div>
|
| 68 |
+
<div class="description">Classify data points based on the majority class of their nearest neighbors.</div>
|
| 69 |
+
</div>
|
| 70 |
+
</div>
|
| 71 |
+
<div class="models-list">
|
| 72 |
+
<div class="image-wrapper-5"><img src="{{ url_for('static', filename='images/Model-kNN.png') }}" loading="lazy" width="80" height="80" alt="" class="image-5" /></div>
|
| 73 |
+
<div class="frame-237641">
|
| 74 |
+
<div class="description-2">Linear Regression</div>
|
| 75 |
+
<div class="description">Predict numerical values based on input variables and establish linear relationships.</div>
|
| 76 |
+
</div>
|
| 77 |
+
</div>
|
| 78 |
+
<div class="models-list">
|
| 79 |
+
<div class="image-wrapper-5"><img src="{{ url_for('static', filename='images/Model-kMeans.png') }}" loading="lazy" width="80" height="80" alt="" class="image-5" /></div>
|
| 80 |
+
<div class="frame-237641">
|
| 81 |
+
<div class="description-2">K-Mean Clustering</div>
|
| 82 |
+
<div class="description">Group similar data points into clusters to identify patterns and similarities.</div>
|
| 83 |
+
</div>
|
| 84 |
+
</div>
|
| 85 |
+
<div class="models-list">
|
| 86 |
+
<div class="image-wrapper-5"><img src="{{ url_for('static', filename='images/Model-Naive.png') }}" loading="lazy" width="80" height="80" alt="" class="image-5" /></div>
|
| 87 |
+
<div class="frame-237641">
|
| 88 |
+
<div class="description-2">Naive Bayes </div>
|
| 89 |
+
<div class="description">Use probabilistic classification to predict the likelihood of a data point belonging to a specific class.</div>
|
| 90 |
+
</div>
|
| 91 |
+
</div>
|
| 92 |
+
</div>
|
| 93 |
+
</div>
|
| 94 |
+
</div>
|
| 95 |
+
<div class="team-circles-2">
|
| 96 |
+
<div class="container-4">
|
| 97 |
+
<div class="title-section-2">
|
| 98 |
+
<div class="text-5">Team section</div>
|
| 99 |
+
<div class="text-6">The team behind this web app is group of computer science students with a passion for machine learning and web development. Together, we leverage our expertise in data analysis, AI algorithms, and user experience to create a seamless and intuitive experience for our users.</div>
|
| 100 |
+
</div>
|
| 101 |
+
<div class="columns-5 f2wf-columns-2">
|
| 102 |
+
<div class="card-2">
|
| 103 |
+
<div class="image-wrapper-6"><img src="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png" loading="lazy" width="270" height="270" srcset="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image-p-500.png 500w, https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png 540w"
|
| 104 |
+
sizes="(max-width: 479px) 36vw, (max-width: 767px) 135px, (max-width: 991px) 35vw, 26vw" alt="" class="image-6" /></div>
|
| 105 |
+
<div class="content-5">
|
| 106 |
+
<div class="info-2">
|
| 107 |
+
<div class="text-7">Dave F. Fagarita</div>
|
| 108 |
+
<div class="text-8">BSCS 3A</div>
|
| 109 |
+
</div>
|
| 110 |
+
<div class="text-6">Developer</div>
|
| 111 |
+
</div>
|
| 112 |
+
</div>
|
| 113 |
+
<div class="card-2">
|
| 114 |
+
<div class="image-wrapper-6"><img src="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png" loading="lazy" width="270" height="270" srcset="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image-p-500.png 500w, https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png 540w"
|
| 115 |
+
sizes="(max-width: 479px) 36vw, (max-width: 767px) 135px, (max-width: 991px) 35vw, 26vw" alt="" class="image-6" /></div>
|
| 116 |
+
<div class="content-5">
|
| 117 |
+
<div class="info-2">
|
| 118 |
+
<div class="text-7">Jimuel S. Servandil</div>
|
| 119 |
+
<div class="text-8">BSCS 3A</div>
|
| 120 |
+
</div>
|
| 121 |
+
<div class="text-6">Developer</div>
|
| 122 |
+
</div>
|
| 123 |
+
</div>
|
| 124 |
+
<div class="card-2">
|
| 125 |
+
<div class="image-wrapper-6"><img src="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png" loading="lazy" width="270" height="270" srcset="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image-p-500.png 500w, https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png 540w"
|
| 126 |
+
sizes="(max-width: 479px) 36vw, (max-width: 767px) 135px, (max-width: 991px) 35vw, 26vw" alt="" class="image-6" /></div>
|
| 127 |
+
<div class="content-5">
|
| 128 |
+
<div class="info-2">
|
| 129 |
+
<div class="text-7">Jannica Mae Magno</div>
|
| 130 |
+
<div class="text-8">BSCS 3A</div>
|
| 131 |
+
</div>
|
| 132 |
+
<div class="text-6">Developer</div>
|
| 133 |
+
</div>
|
| 134 |
+
</div>
|
| 135 |
+
<div class="card-2">
|
| 136 |
+
<div class="image-wrapper-6"><img src="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png" loading="lazy" width="270" height="270" srcset="https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image-p-500.png 500w, https://uploads-ssl.webflow.com/642cba496c45ae8313f6671d/642cc12016271546649d87ad_Image.png 540w"
|
| 137 |
+
sizes="(max-width: 479px) 36vw, (max-width: 767px) 135px, (max-width: 991px) 35vw, 26vw" alt="" class="image-6" /></div>
|
| 138 |
+
<div class="content-5">
|
| 139 |
+
<div class="info-2">
|
| 140 |
+
<div class="text-7">Jeziah Lois Catanus</div>
|
| 141 |
+
<div class="text-8">BSCS 3A</div>
|
| 142 |
+
</div>
|
| 143 |
+
<div class="text-6">Developer</div>
|
| 144 |
+
</div>
|
| 145 |
+
</div>
|
| 146 |
+
</div>
|
| 147 |
+
</div>
|
| 148 |
+
<div class="footer-2">
|
| 149 |
+
<div class="columns-6 f2wf-columns-2">
|
| 150 |
+
<div class="column-6">
|
| 151 |
+
<div class="logo-wrapper-2"><img src="{{ url_for('static', filename='images/logo.svg') }}" loading="lazy" width="50" height="50" alt="" class="vectors-wrapper" />
|
| 152 |
+
<div class="text-11">Quatro</div>
|
| 153 |
+
</div>
|
| 154 |
+
</div>
|
| 155 |
+
</div>
|
| 156 |
+
</div>
|
| 157 |
+
</div>
|
| 158 |
+
<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=642cba496c45ae8313f6671d" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
|
| 159 |
+
<script src="" type="text/javascript"></script>
|
| 160 |
+
</body>
|
| 161 |
+
|
| 162 |
+
</html>
|
| 163 |
+
{% endblock %}
|
templates/kmeans.html
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="utf-8">
|
| 6 |
+
<title>K-Nearest Neighbor</title>
|
| 7 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/model.css')}}">
|
| 8 |
+
</head>
|
| 9 |
+
|
| 10 |
+
<body>
|
| 11 |
+
<div class="header">
|
| 12 |
+
<img src="{{ url_for('static', filename='images/Model-kMeans.png') }}" alt="Image" class="logo">
|
| 13 |
+
<h1>K-Means Clustering</h1>
|
| 14 |
+
</div>
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
<img src="{{ url_for('static', filename='images/cluster.png') }}" alt="Image" style="max-width: 100%; height: auto;">
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
</body>
|
| 21 |
+
|
| 22 |
+
</html>
|
templates/knn.html
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="utf-8">
|
| 6 |
+
<title>K-Nearest Neighbor</title>
|
| 7 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/model.css')}}">
|
| 8 |
+
<script>
|
| 9 |
+
function validateForm() {
|
| 10 |
+
var experienceField = document.getElementById("experience");
|
| 11 |
+
var experienceValue = experienceField.value;
|
| 12 |
+
if (experienceValue < 0) {
|
| 13 |
+
alert("Experience cannot be negative.");
|
| 14 |
+
return false;
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
var salaryField = document.getElementById("salary");
|
| 18 |
+
var salaryValue = salaryField.value;
|
| 19 |
+
if (salaryValue < 0) {
|
| 20 |
+
alert("Salary cannot be negative.");
|
| 21 |
+
return false;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
return true;
|
| 25 |
+
}
|
| 26 |
+
</script>
|
| 27 |
+
</head>
|
| 28 |
+
|
| 29 |
+
<body>
|
| 30 |
+
<div class="header">
|
| 31 |
+
<img src="{{ url_for('static', filename='images/Model-kNN.png') }}" alt="Image" class="logo">
|
| 32 |
+
<h1>K-Nearest Neighbor</h1>
|
| 33 |
+
</div>
|
| 34 |
+
<form method="POST" action="{{ url_for('predictknn') }}" onsubmit="return validateForm()">
|
| 35 |
+
<label for="experience">Experience:</label>
|
| 36 |
+
<input type="number" id="experience" name="experience" placeholder="Experience" required>
|
| 37 |
+
|
| 38 |
+
<label for="salary">Salary:</label>
|
| 39 |
+
<input type="number" id="salary" name="salary" placeholder="Salary" required>
|
| 40 |
+
<button type="submit" class="btn btn-primary">Classify</button>
|
| 41 |
+
</form>
|
| 42 |
+
<br>
|
| 43 |
+
|
| 44 |
+
<p>{{salary}}</p>
|
| 45 |
+
<p>{{experience}}</p>
|
| 46 |
+
<h3>{{ prediction_text }}</h3>
|
| 47 |
+
|
| 48 |
+
</body>
|
| 49 |
+
|
| 50 |
+
</html>
|
templates/linear.html
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="utf-8">
|
| 6 |
+
<title>Linear Regression</title>
|
| 7 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/model.css')}}">
|
| 8 |
+
<script>
|
| 9 |
+
function validateForm() {
|
| 10 |
+
var experienceField = document.getElementById("experience");
|
| 11 |
+
var experienceValue = experienceField.value;
|
| 12 |
+
if (experienceValue < 0) {
|
| 13 |
+
alert("Experience cannot be negative.");
|
| 14 |
+
return false;
|
| 15 |
+
}
|
| 16 |
+
return true;
|
| 17 |
+
}
|
| 18 |
+
</script>
|
| 19 |
+
</head>
|
| 20 |
+
|
| 21 |
+
<body>
|
| 22 |
+
<div class="header">
|
| 23 |
+
<img src="{{ url_for('static', filename='images/Model-Linear.png') }}" alt="Image" class="logo">
|
| 24 |
+
<h1>Linear Regression</h1>
|
| 25 |
+
</div>
|
| 26 |
+
|
| 27 |
+
<!-- Main Input For Receiving Query to our ML -->
|
| 28 |
+
<form method="post" action="{{ url_for('predict') }}" onsubmit="return validateForm()">
|
| 29 |
+
<div class="form-container">
|
| 30 |
+
<div class="form-group">
|
| 31 |
+
<label for="exampleInputPassword1">Job Position:</label><br>
|
| 32 |
+
<select class="form-select" aria-label=".form-select-sm example" name="comp_select">
|
| 33 |
+
<option selected>Select Position</option>
|
| 34 |
+
<option value="1">Junior</option>
|
| 35 |
+
<option value="2">Senior</option>
|
| 36 |
+
<option value="3">Project Manager</option>
|
| 37 |
+
<option value="4">CTO</option>
|
| 38 |
+
</select><br><br>
|
| 39 |
+
<label for="experience">Experience:</label>
|
| 40 |
+
<input type="number" id="experience" class="form-control" name="experience" placeholder="Experience" required="required"><br><br>
|
| 41 |
+
</div>
|
| 42 |
+
</div>
|
| 43 |
+
<button type="submit" class="btn btn-primary">Predict</button>
|
| 44 |
+
</form>
|
| 45 |
+
|
| 46 |
+
<br>
|
| 47 |
+
<label for="exampleInputPassword1">{{ position_level }}</label><br>
|
| 48 |
+
<label for="exampleInputPassword1">{{ experience }}</label><br>
|
| 49 |
+
<label for="exampleInputPassword1">{{ prediction_text }}</label>
|
| 50 |
+
|
| 51 |
+
</body>
|
| 52 |
+
|
| 53 |
+
</html>
|
templates/naive.html
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="utf-8">
|
| 6 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='css/model.css')}}">
|
| 7 |
+
<script>
|
| 8 |
+
function validateForm() {
|
| 9 |
+
var experienceField = document.getElementById("experience");
|
| 10 |
+
var experienceValue = experienceField.value;
|
| 11 |
+
if (experienceValue < 0) {
|
| 12 |
+
alert("Experience cannot be negative.");
|
| 13 |
+
return false;
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
var salaryField = document.getElementById("salary");
|
| 17 |
+
var salaryValue = salaryField.value;
|
| 18 |
+
if (salaryValue < 0) {
|
| 19 |
+
alert("Salary cannot be negative.");
|
| 20 |
+
return false;
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
return true;
|
| 24 |
+
}
|
| 25 |
+
</script>
|
| 26 |
+
</head>
|
| 27 |
+
|
| 28 |
+
<body>
|
| 29 |
+
<div class="header">
|
| 30 |
+
<img src="{{ url_for('static', filename='images/Model-Naive.png') }}" alt="Image" class="logo">
|
| 31 |
+
<h1>Naive Bayes</h1>
|
| 32 |
+
</div>
|
| 33 |
+
<form action="{{ url_for('predictnaive') }}" method="POST" onsubmit="return validateForm()">
|
| 34 |
+
<label for="experience">Experience:</label>
|
| 35 |
+
<input type="number" id="experience" name="experience" placeholder="Experience" required>
|
| 36 |
+
|
| 37 |
+
<label for="salary">Salary:</label>
|
| 38 |
+
<input type="number" id="salary" name="salary" placeholder="Salary" required>
|
| 39 |
+
|
| 40 |
+
<button type="submit">Classify</button>
|
| 41 |
+
</form>
|
| 42 |
+
|
| 43 |
+
<ul>
|
| 44 |
+
<li>Salary: {{ salary }}</li>
|
| 45 |
+
<li>Experience: {{ experience }}</li>
|
| 46 |
+
</ul>
|
| 47 |
+
<table>
|
| 48 |
+
<tr>
|
| 49 |
+
<th>Naive Bayes Type</th>
|
| 50 |
+
<th>Prediction</th>
|
| 51 |
+
</tr>
|
| 52 |
+
<tr>
|
| 53 |
+
<td>Multinomial Naive Bayes</td>
|
| 54 |
+
<td>{{ multinomial_accuracy }}</td>
|
| 55 |
+
<td>{{ multinomial_prediction }}</td>
|
| 56 |
+
</tr>
|
| 57 |
+
<tr>
|
| 58 |
+
<td>Gaussian Naive Bayes</td>
|
| 59 |
+
<td>{{ gaussian_accuracy }}</td>
|
| 60 |
+
<td>{{ gaussian_prediction }}</td>
|
| 61 |
+
</tr>
|
| 62 |
+
<tr>
|
| 63 |
+
<td>Bernoulli Naive Bayes</td>
|
| 64 |
+
<td>{{ bernoulli_accuracy }}</td>
|
| 65 |
+
<td>{{ bernoulli_prediction }}</td>
|
| 66 |
+
</tr>
|
| 67 |
+
</table>
|
| 68 |
+
</body>
|
| 69 |
+
|
| 70 |
+
</html>
|