Spaces:
Sleeping
Sleeping
Deploy from Colab
Browse files- .gitattributes +1 -0
- README.md +1 -12
- app.py +71 -0
- neiro1/meta_v6.json +145 -0
- neiro1/model_v6.keras +3 -0
- neiro1/preprocess_v6.joblib +3 -0
- requirements.txt +6 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* 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
|
|
|
|
|
|
| 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 |
+
neiro1/model_v6.keras filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,12 +1 @@
|
|
| 1 |
-
|
| 2 |
-
title: Neiro1
|
| 3 |
-
emoji: 💻
|
| 4 |
-
colorFrom: blue
|
| 5 |
-
colorTo: pink
|
| 6 |
-
sdk: gradio
|
| 7 |
-
sdk_version: 5.49.1
|
| 8 |
-
app_file: app.py
|
| 9 |
-
pinned: false
|
| 10 |
-
---
|
| 11 |
-
|
| 12 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
+
# Нейронка v6 на Gradio (HF Spaces)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
import json, os
|
| 3 |
+
import numpy as np
|
| 4 |
+
import pandas as pd
|
| 5 |
+
import gradio as gr
|
| 6 |
+
import joblib
|
| 7 |
+
import tensorflow as tf
|
| 8 |
+
|
| 9 |
+
MODEL_PATH = "neiro1/model_v6.keras"
|
| 10 |
+
PP_PATH = "neiro1/preprocess_v6.joblib"
|
| 11 |
+
META_PATH = "neiro1/meta_v6.json"
|
| 12 |
+
|
| 13 |
+
model = tf.keras.models.load_model(MODEL_PATH)
|
| 14 |
+
preprocess = joblib.load(PP_PATH)
|
| 15 |
+
|
| 16 |
+
with open(META_PATH, "r", encoding="utf-8") as f:
|
| 17 |
+
meta = json.load(f)
|
| 18 |
+
|
| 19 |
+
# 1) пытаемся взять список фич из препроцессора (sklearn>=1.0)
|
| 20 |
+
FEATURES = None
|
| 21 |
+
for attr in ["feature_names_in_", "features_in_", "input_features_"]:
|
| 22 |
+
if hasattr(preprocess, attr):
|
| 23 |
+
try:
|
| 24 |
+
arr = getattr(preprocess, attr)
|
| 25 |
+
if arr is not None and len(arr) > 0:
|
| 26 |
+
FEATURES = list(arr)
|
| 27 |
+
break
|
| 28 |
+
except Exception:
|
| 29 |
+
pass
|
| 30 |
+
|
| 31 |
+
# 2) если нет — из meta.json
|
| 32 |
+
if FEATURES is None:
|
| 33 |
+
FEATURES = meta.get("features", [])
|
| 34 |
+
|
| 35 |
+
# 3) если и тут пусто — можно руками прописать:
|
| 36 |
+
if not FEATURES:
|
| 37 |
+
FEATURES = meta.get("expected_features", []) or ["feat1","feat2","feat3"]
|
| 38 |
+
|
| 39 |
+
def build_features(inputs_dict):
|
| 40 |
+
X = pd.DataFrame([{k: inputs_dict[k] for k in FEATURES}])
|
| 41 |
+
Xp = preprocess.transform(X)
|
| 42 |
+
return Xp
|
| 43 |
+
|
| 44 |
+
def predict_fn(**kwargs):
|
| 45 |
+
Xp = build_features(kwargs)
|
| 46 |
+
y = model.predict(Xp, verbose=0)
|
| 47 |
+
if y.ndim == 2 and y.shape[1] == 1:
|
| 48 |
+
y = y.ravel()
|
| 49 |
+
pred = float(y[0])
|
| 50 |
+
return f"Прогноз: {pred:,.4f}"
|
| 51 |
+
|
| 52 |
+
with gr.Blocks(title="Нейронка v6") as demo:
|
| 53 |
+
gr.Markdown("# Нейронка v6\nЗаполни параметры → жми Предсказать.")
|
| 54 |
+
|
| 55 |
+
inputs = []
|
| 56 |
+
for f in FEATURES:
|
| 57 |
+
# при желании замени на Slider/Dropdown для категорий
|
| 58 |
+
inputs.append(gr.Number(label=f))
|
| 59 |
+
|
| 60 |
+
out = gr.Textbox(label="Результат", lines=2)
|
| 61 |
+
btn = gr.Button("Предсказать")
|
| 62 |
+
|
| 63 |
+
def _wrap(*vals):
|
| 64 |
+
data = {FEATURES[i]: vals[i] for i in range(len(FEATURES))}
|
| 65 |
+
return predict_fn(**data)
|
| 66 |
+
|
| 67 |
+
btn.click(_wrap, inputs=inputs, outputs=out)
|
| 68 |
+
demo.queue(concurrency_count=4, max_size=32)
|
| 69 |
+
|
| 70 |
+
if __name__ == "__main__":
|
| 71 |
+
demo.launch(server_name="0.0.0.0", server_port=7860)
|
neiro1/meta_v6.json
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"route": "SFO_MIA",
|
| 3 |
+
"airlines": [
|
| 4 |
+
"Alaska",
|
| 5 |
+
"American airlines",
|
| 6 |
+
"Delta",
|
| 7 |
+
"Jetblue",
|
| 8 |
+
"Southwest",
|
| 9 |
+
"Spirit",
|
| 10 |
+
"United"
|
| 11 |
+
],
|
| 12 |
+
"global_mean": 56.50381679389313,
|
| 13 |
+
"blend_month": {
|
| 14 |
+
"7": 31.946564885496187,
|
| 15 |
+
"8": 54.81622844218264,
|
| 16 |
+
"9": 52.90095419847328,
|
| 17 |
+
"10": 57.78141873021783,
|
| 18 |
+
"11": 60.75095419847328,
|
| 19 |
+
"12": 72.88152671755725
|
| 20 |
+
},
|
| 21 |
+
"blend_airline": {
|
| 22 |
+
"Alaska": 54.12659033078881,
|
| 23 |
+
"American airlines": 57.262529040823104,
|
| 24 |
+
"Delta": 50.641526717557255,
|
| 25 |
+
"Jetblue": 56.56152671755726,
|
| 26 |
+
"Southwest": 55.407442748091604,
|
| 27 |
+
"Spirit": 57.372519083969465,
|
| 28 |
+
"United": 61.62265318753868
|
| 29 |
+
},
|
| 30 |
+
"am_means": {
|
| 31 |
+
"Alaska_7": 1.0,
|
| 32 |
+
"Alaska_8": 48.333333333333336,
|
| 33 |
+
"Alaska_9": 50.0,
|
| 34 |
+
"Alaska_10": 56.25,
|
| 35 |
+
"Alaska_11": 63.5,
|
| 36 |
+
"Alaska_12": 86.0,
|
| 37 |
+
"American airlines_7": 2.0,
|
| 38 |
+
"American airlines_8": 74.0,
|
| 39 |
+
"American airlines_9": 44.75,
|
| 40 |
+
"American airlines_10": 47.0,
|
| 41 |
+
"American airlines_11": 65.33333333333333,
|
| 42 |
+
"American airlines_12": 90.0,
|
| 43 |
+
"Delta_7": 1.25,
|
| 44 |
+
"Delta_9": 62.333333333333336,
|
| 45 |
+
"Delta_10": 57.75,
|
| 46 |
+
"Delta_11": 69.5,
|
| 47 |
+
"Jetblue_7": 1.0,
|
| 48 |
+
"Jetblue_8": 80.0,
|
| 49 |
+
"Jetblue_9": 53.25,
|
| 50 |
+
"Jetblue_10": 62.75,
|
| 51 |
+
"Jetblue_11": 60.8,
|
| 52 |
+
"Southwest_7": 1.0,
|
| 53 |
+
"Southwest_8": 57.25,
|
| 54 |
+
"Southwest_9": 52.6,
|
| 55 |
+
"Southwest_10": 58.0,
|
| 56 |
+
"Southwest_11": 52.0,
|
| 57 |
+
"Southwest_12": 79.5,
|
| 58 |
+
"Spirit_8": 42.75,
|
| 59 |
+
"Spirit_9": 50.833333333333336,
|
| 60 |
+
"Spirit_10": 61.333333333333336,
|
| 61 |
+
"Spirit_11": 63.42857142857143,
|
| 62 |
+
"Spirit_12": 77.5,
|
| 63 |
+
"United_8": 47.333333333333336,
|
| 64 |
+
"United_9": 50.8,
|
| 65 |
+
"United_10": 55.666666666666664,
|
| 66 |
+
"United_11": 61.6,
|
| 67 |
+
"United_12": 84.625
|
| 68 |
+
},
|
| 69 |
+
"am_counts": {
|
| 70 |
+
"Alaska_7": 1,
|
| 71 |
+
"Alaska_8": 3,
|
| 72 |
+
"Alaska_9": 3,
|
| 73 |
+
"Alaska_10": 4,
|
| 74 |
+
"Alaska_11": 2,
|
| 75 |
+
"Alaska_12": 1,
|
| 76 |
+
"American airlines_7": 1,
|
| 77 |
+
"American airlines_8": 2,
|
| 78 |
+
"American airlines_9": 4,
|
| 79 |
+
"American airlines_10": 1,
|
| 80 |
+
"American airlines_11": 3,
|
| 81 |
+
"American airlines_12": 2,
|
| 82 |
+
"Delta_7": 4,
|
| 83 |
+
"Delta_9": 3,
|
| 84 |
+
"Delta_10": 4,
|
| 85 |
+
"Delta_11": 4,
|
| 86 |
+
"Jetblue_7": 1,
|
| 87 |
+
"Jetblue_8": 1,
|
| 88 |
+
"Jetblue_9": 4,
|
| 89 |
+
"Jetblue_10": 4,
|
| 90 |
+
"Jetblue_11": 5,
|
| 91 |
+
"Southwest_7": 1,
|
| 92 |
+
"Southwest_8": 4,
|
| 93 |
+
"Southwest_9": 5,
|
| 94 |
+
"Southwest_10": 6,
|
| 95 |
+
"Southwest_11": 4,
|
| 96 |
+
"Southwest_12": 2,
|
| 97 |
+
"Spirit_8": 4,
|
| 98 |
+
"Spirit_9": 6,
|
| 99 |
+
"Spirit_10": 6,
|
| 100 |
+
"Spirit_11": 7,
|
| 101 |
+
"Spirit_12": 2,
|
| 102 |
+
"United_8": 3,
|
| 103 |
+
"United_9": 5,
|
| 104 |
+
"United_10": 6,
|
| 105 |
+
"United_11": 5,
|
| 106 |
+
"United_12": 8
|
| 107 |
+
},
|
| 108 |
+
"w_month": 10,
|
| 109 |
+
"w_air": 10,
|
| 110 |
+
"w_am": 25,
|
| 111 |
+
"floor_frac": 0.25,
|
| 112 |
+
"exog_params": {
|
| 113 |
+
"SUMMER_MULT": 1.6,
|
| 114 |
+
"FRI_MULT": 1.1,
|
| 115 |
+
"SAT_MULT": 1.15,
|
| 116 |
+
"SUN_MULT": 1.1,
|
| 117 |
+
"SPRING_BREAK_MULT": 1.12,
|
| 118 |
+
"MEMORIAL_MULT": 1.35,
|
| 119 |
+
"JULY4_MULT": 1.3,
|
| 120 |
+
"LABOR_MULT": 1.25,
|
| 121 |
+
"THANKSGIVING_MULT": 1.6,
|
| 122 |
+
"XMAS_NEWYEAR_MULT": 1.7
|
| 123 |
+
},
|
| 124 |
+
"calibration_k_airline": 1.0354253783141563,
|
| 125 |
+
"calibration_k_route": 5.177126891570781,
|
| 126 |
+
"airline_share_overall": {
|
| 127 |
+
"United": 0.23169413671980546,
|
| 128 |
+
"Spirit": 0.1949473115374223,
|
| 129 |
+
"Southwest": 0.16319913536881925,
|
| 130 |
+
"Jetblue": 0.11469873007295325,
|
| 131 |
+
"American airlines": 0.10159416373952986,
|
| 132 |
+
"Alaska": 0.09916238854363686,
|
| 133 |
+
"Delta": 0.09470413401783302
|
| 134 |
+
},
|
| 135 |
+
"airline_whitelist": [
|
| 136 |
+
"United",
|
| 137 |
+
"Spirit",
|
| 138 |
+
"Southwest",
|
| 139 |
+
"Jetblue",
|
| 140 |
+
"American airlines",
|
| 141 |
+
"Alaska",
|
| 142 |
+
"Delta"
|
| 143 |
+
],
|
| 144 |
+
"capacity_target_summer": 1000.0
|
| 145 |
+
}
|
neiro1/model_v6.keras
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cb8f8818ce17e249903edd39248e8679b29d3fecac0b8cbbb0efd1aa3e5e350f
|
| 3 |
+
size 369255
|
neiro1/preprocess_v6.joblib
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3642891c51a1f85f3d37ebb0ac4cee67d58112d82f6e16ec4e8f1f33fb25dc7f
|
| 3 |
+
size 2947
|
requirements.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
gradio>=4.44.0
|
| 2 |
+
tensorflow==2.15.0
|
| 3 |
+
scikit-learn
|
| 4 |
+
joblib
|
| 5 |
+
pandas
|
| 6 |
+
numpy
|