buraktrk commited on
Commit
bb344cb
·
verified ·
1 Parent(s): 5d48973

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -55
app.py CHANGED
@@ -1,12 +1,9 @@
1
-
2
-
3
  import pandas as pd, numpy as np, gradio as gr
4
  from sklearn.model_selection import train_test_split, GridSearchCV
5
  from sklearn.preprocessing import MinMaxScaler, LabelEncoder
6
  from sklearn.metrics import accuracy_score
7
  from concrete.ml.sklearn import XGBClassifier as ConcreteXGBClassifier
8
 
9
-
10
  SELECTED_FEATS = [
11
  "Cari Oran",
12
  "Dönen Varlıklar / Aktif (%)",
@@ -118,62 +115,56 @@ def compute_ratios(df: pd.DataFrame) -> pd.DataFrame:
118
 
119
 
120
  # ------------------------ MODEL EĞİTİMİ ------------------------
121
- RUN_TRAINING_ONCE = False
122
-
123
- if RUN_TRAINING_ONCE:
124
- df = pd.read_csv("refined_data.csv")
125
- df["Görüs Tipi"] = df["Görüs Tipi"].apply(
126
- lambda x: "Olumlu" if "olumlu" in str(x).lower() else x)
127
-
128
- DROP = [
129
- "Şirket Adı", "Şirketin Kodu", "Periyot", "Yıl",
130
- "Dönen Varlıklar", "Duran Varlıklar", "Toplam Varlıklar",
131
- "Kısa Vadeli Yükümlülükler", "Uzun Vadeli Yükümlülükler", "Toplam Yükümlülükler",
132
- "Toplam Özkaynaklar", "Ana Ortaklığa Ait Özkaynaklar",
133
- "Kontrol Gücü Olmayan Kaynaklar", "Toplam Kaynaklar"
134
- ]
135
- df = df.drop(columns=DROP).dropna()
136
-
137
- X, y = df.drop(columns="Görüs Tipi"), df["Görüs Tipi"]
138
- X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
139
-
140
- scaler = MinMaxScaler().fit(X_tr)
141
- Xtr_s = scaler.transform(X_tr)
142
- Xte_s = scaler.transform(X_te)
143
-
144
- encoder = LabelEncoder()
145
- ytr_e = encoder.fit_transform(y_tr)
146
- yte_e = encoder.transform(y_te)
147
-
148
- grid = GridSearchCV(
149
- ConcreteXGBClassifier(n_bits=8, random_state=42),
150
- {"n_estimators": [20, 30, 50], "max_depth": [3, 4, 5], "learning_rate": [0.1, 0.2]},
151
- cv=3, scoring="accuracy", verbose=0
152
- )
153
- grid.fit(Xtr_s, ytr_e)
154
- best_params = grid.best_params_
155
 
156
- full_plain = ConcreteXGBClassifier(n_bits=8, **best_params, random_state=42)
157
- full_plain.fit(Xtr_s, ytr_e)
 
 
 
 
 
158
 
159
- imp_df = pd.DataFrame({"col": X.columns, "imp": full_plain.feature_importances_})
160
- imp_df["cum"] = imp_df["imp"].cumsum()
161
- COLS = imp_df.loc[imp_df["cum"] <= 0.95, "col"].tolist()
162
 
163
- print("\n🔎 Modelde kullanılan kolonlar:")
164
- for i, col in enumerate(COLS, start=1):
165
- print(f"{i:>2}. {col}")
166
 
167
- scaler_sel = MinMaxScaler().fit(X_tr[COLS])
168
- Xtr_sel = scaler_sel.transform(X_tr[COLS])
169
- Xte_sel = scaler_sel.transform(X_te[COLS])
170
 
171
- final_model = ConcreteXGBClassifier(n_bits=8, **best_params, random_state=42)
172
- final_model.fit(Xtr_sel, ytr_e)
173
- final_model.compile(Xtr_sel)
174
 
175
- print(f"\n✅ Eğitim tamamlandı. Accuracy: {accuracy_score(yte_e, final_model.predict(Xte_sel)):.4f}")
176
- exit()
 
177
 
178
  # ------------------------ Tahmin Fonksiyonu ------------------------
179
  def predict_opinion(excel_file: gr.File):
@@ -207,5 +198,5 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="blue")) as demo:
207
  out_df = gr.Dataframe(wrap=True, show_label=False)
208
  btn.click(predict_opinion, file_in, out_df)
209
 
210
- if __name__ == "__main__":
211
- demo.launch()
 
 
 
1
  import pandas as pd, numpy as np, gradio as gr
2
  from sklearn.model_selection import train_test_split, GridSearchCV
3
  from sklearn.preprocessing import MinMaxScaler, LabelEncoder
4
  from sklearn.metrics import accuracy_score
5
  from concrete.ml.sklearn import XGBClassifier as ConcreteXGBClassifier
6
 
 
7
  SELECTED_FEATS = [
8
  "Cari Oran",
9
  "Dönen Varlıklar / Aktif (%)",
 
115
 
116
 
117
  # ------------------------ MODEL EĞİTİMİ ------------------------
118
+ df = pd.read_csv("refined_data.csv")
119
+ df["Görüs Tipi"] = df["Görüs Tipi"].apply(
120
+ lambda x: "Olumlu" if "olumlu" in str(x).lower() else x)
121
+
122
+ DROP = [
123
+ "Şirket Adı", "Şirketin Kodu", "Periyot", "Yıl",
124
+ "Dönen Varlıklar", "Duran Varlıklar", "Toplam Varlıklar",
125
+ "Kısa Vadeli Yükümlülükler", "Uzun Vadeli Yükümlülükler", "Toplam Yükümlülükler",
126
+ "Toplam Özkaynaklar", "Ana Ortaklığa Ait Özkaynaklar",
127
+ "Kontrol Gücü Olmayan Kaynaklar", "Toplam Kaynaklar"
128
+ ]
129
+ df = df.drop(columns=DROP).dropna()
130
+
131
+ X, y = df.drop(columns="Görüs Tipi"), df["Görüs Tipi"]
132
+ X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
133
+
134
+ scaler = MinMaxScaler().fit(X_tr)
135
+ Xtr_s = scaler.transform(X_tr)
136
+ Xte_s = scaler.transform(X_te)
137
+
138
+ encoder = LabelEncoder()
139
+ ytr_e = encoder.fit_transform(y_tr)
140
+ yte_e = encoder.transform(y_te)
 
 
 
 
 
 
 
 
 
 
 
141
 
142
+ grid = GridSearchCV(
143
+ ConcreteXGBClassifier(n_bits=8, random_state=42),
144
+ {"n_estimators": [20, 30, 50], "max_depth": [3, 4, 5], "learning_rate": [0.1, 0.2]},
145
+ cv=3, scoring="accuracy", verbose=0
146
+ )
147
+ grid.fit(Xtr_s, ytr_e)
148
+ best_params = grid.best_params_
149
 
150
+ full_plain = ConcreteXGBClassifier(n_bits=8, **best_params, random_state=42)
151
+ full_plain.fit(Xtr_s, ytr_e)
 
152
 
153
+ imp_df = pd.DataFrame({"col": X.columns, "imp": full_plain.feature_importances_})
154
+ imp_df["cum"] = imp_df["imp"].cumsum()
155
+ COLS = imp_df.loc[imp_df["cum"] <= 0.95, "col"].tolist()
156
 
157
+ print("\n🔎 Modelde kullanılan kolonlar:")
158
+ for i, col in enumerate(COLS, start=1):
159
+ print(f"{i:>2}. {col}")
160
 
161
+ scaler_sel = MinMaxScaler().fit(X_tr[COLS])
162
+ Xtr_sel = scaler_sel.transform(X_tr[COLS])
163
+ Xte_sel = scaler_sel.transform(X_te[COLS])
164
 
165
+ final_model = ConcreteXGBClassifier(n_bits=8, **best_params, random_state=42)
166
+ final_model.fit(Xtr_sel, ytr_e)
167
+ final_model.compile(Xtr_sel)
168
 
169
  # ------------------------ Tahmin Fonksiyonu ------------------------
170
  def predict_opinion(excel_file: gr.File):
 
198
  out_df = gr.Dataframe(wrap=True, show_label=False)
199
  btn.click(predict_opinion, file_in, out_df)
200
 
201
+ if _name_ == "_main_":
202
+ demo.launch()