commited on
Commit
1073dee
·
verified ·
1 Parent(s): ea32a64

Upload 4 files

Browse files
Files changed (4) hide show
  1. README.md +36 -20
  2. app.py +49 -0
  3. project_description.txt +61 -0
  4. requirements.txt +5 -3
README.md CHANGED
@@ -1,20 +1,36 @@
1
- ---
2
- title: Heat Flux Ml Regression
3
- emoji: 🚀
4
- colorFrom: red
5
- colorTo: red
6
- sdk: docker
7
- app_port: 8501
8
- tags:
9
- - streamlit
10
- pinned: false
11
- short_description: Streamlit template space
12
- license: mit
13
- ---
14
-
15
- # Welcome to Streamlit!
16
-
17
- Edit `/src/streamlit_app.py` to customize this app to your heart's desire. :heart:
18
-
19
- If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community
20
- forums](https://discuss.streamlit.io).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🔥 Heat Flux ML Regression – CHF Tahmin Uygulaması
2
+
3
+ Bu proje, deneysel mühendislik verilerini kullanarak **kritik ısı akısını (CHF)** tahmin eden bir makine öğrenmesi modelini içermektedir. Uygulama **Streamlit** ile oluşturulmuş ve kullanıcı dostu bir arayüz sunmaktadır.
4
+
5
+ ## 📦 Kullanılan Veri Seti
6
+ - Kaggle Playground Series S3E15
7
+ - [Veri Seti Bağlantısı](https://www.kaggle.com/competitions/playground-series-s3e15/data)
8
+
9
+ ## 🎯 Hedef
10
+ Verilen deneysel koşullar (basınç, kütle akısı, boru geometrisi vb.) altında oluşan `chf_exp [MW/m2]` değerini tahmin etmek.
11
+
12
+ ## 🧠 Kullanılan Model
13
+ - Random Forest Regressor
14
+ - RMSE: ~1.73, R²: ~0.27
15
+
16
+ ## ⚙️ Gerekli Dosyalar
17
+ - `rf_model.pkl`: Eğitilmiş model
18
+ - `model_columns.pkl`: One-hot encoded sütun listesi
19
+ - `app.py`: Streamlit arayüzü
20
+
21
+ Uygulama Ekranı
22
+ Kullanıcıdan deneysel koşullar alınır ve tahmini CHF değeri hesaplanır.
23
+
24
+ Geliştirilebilir Noktalar
25
+ LightGBM, XGBoost gibi daha güçlü modeller denenebilir.
26
+
27
+ Hyperparameter tuning yapılabilir.
28
+
29
+ Feature engineering (etkileşimli sütunlar) geliştirilebilir.
30
+ ⚠️ Bu proje eğitim amaçlıdır.
31
+
32
+ ## 🚀 Uygulamayı Çalıştırmak
33
+ ```bash
34
+ pip install -r requirements.txt
35
+ streamlit run app.py
36
+
app.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import joblib
5
+
6
+ # 🎯 Başlık
7
+ st.title("💥 CHF (Kritik Isı Akısı) Tahmini")
8
+ st.write("Bu uygulama, deneysel koşullara göre kritik ısı akısını (chf_exp) tahmin eder.")
9
+
10
+ # 🎯 Giriş Değerleri
11
+ author = st.selectbox("Yazar", ["Thompson", "Beus", "Other"])
12
+ geometry = st.selectbox("Geometri", ["tube", "annulus", "Other"])
13
+ pressure = st.number_input("Basınç [MPa]", min_value=0.0, max_value=30.0, value=10.0)
14
+ mass_flux = st.number_input("Kütle Akısı [kg/m2-s]", min_value=0.0, max_value=10000.0, value=2000.0)
15
+ x_e_out = st.number_input("Çıkış Buhar Kalitesi (x_e_out)", value=0.1)
16
+ D_e = st.number_input("Dış Çap [mm] (D_e)", value=10.0)
17
+ D_h = st.number_input("Hidrolik Çap [mm] (D_h)", value=10.0)
18
+ length = st.number_input("Boru Uzunluğu [mm]", value=1000.0)
19
+
20
+ # 🎯 Veriyi DataFrame'e çevir
21
+ input_data = pd.DataFrame({
22
+ "author": [author],
23
+ "geometry": [geometry],
24
+ "pressure [MPa]": [pressure],
25
+ "mass_flux [kg/m2-s]": [mass_flux],
26
+ "x_e_out [-]": [x_e_out],
27
+ "D_e [mm]": [D_e],
28
+ "D_h [mm]": [D_h],
29
+ "length [mm]": [length]
30
+ })
31
+
32
+ # ⚙️ One-hot encode
33
+ input_data = pd.get_dummies(input_data)
34
+
35
+ # Eğitim setinde olup testte olmayan sütunları ekle
36
+ model_columns = joblib.load("model_columns.pkl") # Kaydetmemiz gerekiyor
37
+ for col in model_columns:
38
+ if col not in input_data.columns:
39
+ input_data[col] = 0
40
+
41
+ input_data = input_data[model_columns]
42
+
43
+ # 🎯 Modeli yükle
44
+ model = joblib.load("rf_model.pkl")
45
+
46
+ # 🧠 Tahmin et
47
+ if st.button("Tahmin Et"):
48
+ prediction = model.predict(input_data)[0]
49
+ st.success(f"Tahmin Edilen CHF Değeri: {prediction:.2f} MW/m2")
project_description.txt ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Proje Adı:
2
+ Tahmini Kritik Isı Akısı (CHF) – Makine Öğrenimi ile Regresyon Modeli
3
+
4
+ # Proje Türü:
5
+ Regresyon – Sayısal Değer Tahmini
6
+
7
+ # Veri Seti:
8
+ Kaggle - Playground Series S3E15
9
+ URL: https://www.kaggle.com/competitions/playground-series-s3e15/data
10
+
11
+ # Veri Özeti:
12
+ Veri seti, nükleer mühendislik alanındaki bir çalışmadan alınan deneysel gözlemleri içerir. Her satır bir deneysel koşulu (yazar, boru çapı, basınç, buhar kalitesi, vb.) temsil eder. Hedef değişken `chf_exp [MW/m2]` yani kritik ısı akısıdır. Bu değer, sistemin çökmesine neden olabilecek sınırdaki ısı yükünü belirtir.
13
+
14
+ # Kullanılan Kütüphaneler:
15
+ - pandas
16
+ - numpy
17
+ - scikit-learn
18
+ - seaborn, matplotlib
19
+ - streamlit
20
+ - joblib
21
+
22
+ # Aşamalar:
23
+
24
+ 1. 📥 Veri Keşfi (EDA):
25
+ - Eksik veriler analiz edildi.
26
+ - Korelasyon matrisi çıkarıldı.
27
+ - `mass_flux`, `x_e_out`, `pressure`, `length` gibi özelliklerin hedef değişkenle korelasyonu yüksek bulundu.
28
+
29
+ 2. 🧹 Veri Ön İşleme:
30
+ - Sayısal sütunlardaki eksik veriler ortalama (mean) ile dolduruldu.
31
+ - Kategorik sütunlar (author, geometry) mod ile dolduruldu.
32
+ - `id` sütunu modelden çıkarıldı.
33
+ - One-hot encoding uygulandı.
34
+
35
+ 3. 🧠 Modelleme:
36
+ - `RandomForestRegressor` ile temel bir regresyon modeli kuruldu.
37
+ - Eğitim ve test ayrımı %80-%20 olarak yapıldı.
38
+ - RMSE: 1.73 – R²: 0.27 → Model zayıf da olsa anlamlı ilişkiler kurabildi.
39
+
40
+ 4. 📈 Test Tahmin ve Submission:
41
+ - Test verisi doldurularak modele verildi.
42
+ - `sample_submission.csv` formatında tahmin sonuçları oluşturuldu.
43
+
44
+ 5. 🌐 Streamlit Arayüzü:
45
+ - Kullanıcının manuel olarak giriş yapabileceği bir arayüz geliştirildi.
46
+ - Girdi olarak basınç, kütle akısı, boru uzunluğu gibi değerler alınıp CHF tahmini döndürüldü.
47
+ - Model `.pkl` dosyasından yüklendi, `model_columns.pkl` ile one-hot encoding uyumlandırıldı.
48
+
49
+ # Geliştirilebilir Alanlar:
50
+ - LightGBM veya XGBoost gibi daha güçlü algoritmalarla model geliştirilebilir.
51
+ - Feature engineering yapılabilir (örneğin: çap oranı, enerji yoğunluğu gibi yeni değişkenler).
52
+ - RMSE’yi düşürmek için hiperparametre optimizasyonu denenebilir.
53
+
54
+ # Çıktılar:
55
+ - submission.csv (tahmin sonuçları)
56
+ - rf_model.pkl (eğitilmiş model)
57
+ - model_columns.pkl (kullanılan özellik listesi)
58
+ - app.py (Streamlit uygulaması)
59
+
60
+ # Proje Amacı:
61
+ Bu proje, regresyon problemlerinde veri ön işleme, eksik veri doldurma, model eğitimi ve Streamlit arayüzü kurma gibi tam uçtan uca bir makine öğrenmesi sürecini içermektedir. Özellikle mühendislik uygulamaları için modelleme pratiği kazanmak isteyenler için uygundur.
requirements.txt CHANGED
@@ -1,3 +1,5 @@
1
- altair
2
- pandas
3
- streamlit
 
 
 
1
+ streamlit
2
+ pandas
3
+ numpy
4
+ scikit-learn
5
+ joblib