commited on
Commit
0dedb41
·
verified ·
1 Parent(s): 77491a9

Upload 5 files

Browse files
Files changed (5) hide show
  1. README.md +106 -1
  2. app.py +42 -0
  3. model.pkl +3 -0
  4. model.py +28 -0
  5. requirements.txt +4 -0
README.md CHANGED
@@ -1,3 +1,108 @@
 
 
 
 
 
1
  ---
2
- license: mit
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 📱 Mobile Price Classification with Machine Learning
2
+
3
+ Bu proje, bir cep telefonunun donanımsal özelliklerine göre hangi fiyat aralığında olduğunu tahmin eden bir makine öğrenmesi modelidir.
4
+ Streamlit arayüzü ile kullanıcı, telefonun teknik özelliklerini girerek tahmini fiyat aralığını öğrenebilir.
5
+
6
  ---
7
+
8
+ ## 🔍 Problem Tanımı
9
+
10
+ Cep telefonları farklı donanım seviyelerinde sunulur. Bu proje, çeşitli teknik özelliklere bakarak bir telefonun fiyat segmentini (0: en düşük, 3: en yüksek) sınıflandırmayı amaçlar.
11
+
12
  ---
13
+
14
+ ## 📦 Kullanılan Veri Seti
15
+
16
+ - Dataset: [`mobile_prices.csv`](./mobile_prices.csv)
17
+ - Sütun Sayısı: 21 (20 giriş + 1 hedef)
18
+ - Hedef (target): `price_range`
19
+
20
+ ---
21
+
22
+ ## 🛠 Kullanılan Özellikler
23
+
24
+ - `battery_power`, `ram`, `px_height`, `px_width`, `fc`, `pc`
25
+ - `bluetooth`, `dual_sim`, `four_g`, `three_g`, `wifi`
26
+ - `n_cores`, `int_memory`, `mobile_wt`
27
+ - `sc_h`, `sc_w`, `talk_time`, `clock_speed`, `touch_screen`
28
+
29
+ ---
30
+
31
+ ## 🔧 Kullanılan Kütüphaneler
32
+
33
+ - `pandas`
34
+ - `numpy`
35
+ - `scikit-learn`
36
+ - `streamlit`
37
+ - `pickle`
38
+
39
+ ---
40
+
41
+ ## 🤖 Model Bilgisi
42
+
43
+ - Algoritma: `RandomForestClassifier`
44
+ - Doğruluk: %X (eğitim sırasında çıktı)
45
+ - Model dosyası: [`model.pkl`](./model.pkl)
46
+
47
+ ---
48
+
49
+ ## 🚀 Nasıl Çalıştırılır?
50
+
51
+ ### 1. Gerekli paketleri yükle:
52
+ ```bash
53
+ pip install -r requirements.txt
54
+
55
+
56
+
57
+ Streamlit uygulamasını başlat
58
+ Demo (Opsiyonel)
59
+ Model Hugging Face'e yüklendiyse burada paylaşılabilir:
60
+
61
+ 🔗 https://huggingface.co/yazodi
62
+
63
+
64
+ 📦 Mobile Price Classification
65
+ ┣ 📜 mobile_prices.csv
66
+ ┣ 📜 model.pkl
67
+ ┣ 📜 model.py
68
+ ┣ 📜 app.py
69
+ ┣ 📜 requirements.txt
70
+ ┗ 📜 README.md
71
+
72
+
73
+
74
+ kendiniz olşturun
75
+ Örnek Girdi (sample_input.json)
76
+
77
+ {
78
+ "battery_power": 1200,
79
+ "blue": 1,
80
+ "clock_speed": 1.6,
81
+ "dual_sim": 1,
82
+ "fc": 5,
83
+ "four_g": 1,
84
+ "int_memory": 32,
85
+ "mobile_wt": 150,
86
+ "n_cores": 4,
87
+ "pc": 13,
88
+ "px_height": 800,
89
+ "px_width": 1200,
90
+ "ram": 2048,
91
+ "sc_h": 14,
92
+ "sc_w": 7,
93
+ "talk_time": 10,
94
+ "three_g": 1,
95
+ "touch_screen": 1,
96
+ "wifi": 1
97
+ }
98
+
99
+
100
+
101
+ 📌 Notlar
102
+ Eğitim amaçlı hazırlanmıştır.
103
+
104
+ Gerçek ticari modellerde daha fazla veri ve hiperparametre optimizasyonu gerekebilir.
105
+
106
+
107
+ 🪪 Lisans
108
+ MIT License
app.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pickle
3
+ import numpy as np
4
+
5
+ # Modeli yükle
6
+ with open("model.pkl", "rb") as f:
7
+ model = pickle.load(f)
8
+
9
+ st.title("📱 Mobile Price Range Prediction")
10
+ st.write("Telefon özelliklerine göre fiyat aralığını tahmin edin. (0: En düşük, 3: En yüksek)")
11
+
12
+ # 20 özelliği kullanıcıdan alalım:
13
+ battery_power = st.slider("🔋 Battery Power (mAh)", 500, 2000, 1000)
14
+ blue = st.selectbox("📶 Bluetooth Var mı?", [0, 1])
15
+ clock_speed = st.slider("⏱ Clock Speed (GHz)", 0.5, 3.0, 1.5)
16
+ dual_sim = st.selectbox("📱 Çift SIM Var mı?", [0, 1])
17
+ fc = st.slider("🤳 Ön Kamera (MP)", 0, 20, 5)
18
+ four_g = st.selectbox("📡 4G Desteği", [0, 1])
19
+ int_memory = st.slider("💾 Dahili Hafıza (GB)", 2, 64, 16)
20
+ mobile_wt = st.slider("⚖️ Ağırlık (gram)", 80, 250, 150)
21
+ n_cores = st.slider("🧠 İşlemci Çekirdek Sayısı", 1, 8, 4)
22
+ pc = st.slider("📸 Arka Kamera (MP)", 0, 20, 13)
23
+ px_height = st.slider("🔳 Piksel Yüksekliği", 0, 1960, 500)
24
+ px_width = st.slider("🔲 Piksel Genişliği", 0, 2000, 800)
25
+ ram = st.slider("🧠 RAM (MB)", 256, 4000, 1024)
26
+ sc_h = st.slider("📱 Ekran Yüksekliği (cm)", 5, 20, 12)
27
+ sc_w = st.slider("📱 Ekran Genişliği (cm)", 0, 18, 7)
28
+ talk_time = st.slider("📞 Konuşma Süresi (saat)", 2, 20, 10)
29
+ three_g = st.selectbox("📡 3G Var mı?", [0, 1])
30
+ touch_screen = st.selectbox("🖱 Dokunmatik Ekran Var mı?", [0, 1])
31
+ wifi = st.selectbox("📶 Wi-Fi Desteği", [0, 1])
32
+
33
+ # Girdi vektörü (20 özellik)
34
+ input_data = np.array([[battery_power, blue, clock_speed, dual_sim, fc,
35
+ four_g, int_memory, mobile_wt, n_cores, pc,
36
+ px_height, px_width, ram, sc_h, sc_w,
37
+ talk_time, three_g, touch_screen, wifi]])
38
+
39
+ # Tahmin
40
+ if st.button("Tahmin Et"):
41
+ prediction = model.predict(input_data)[0]
42
+ st.success(f"📊 Tahmini Fiyat Aralığı: {prediction} (0: düşük, 3: yüksek)")
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fc0cb197b61749f0f9a77688f17a1d2ad1ee2fdfbb61d3e477a549436d0961d8
3
+ size 5630937
model.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # model.py
2
+ import pandas as pd
3
+ from sklearn.model_selection import train_test_split
4
+ from sklearn.ensemble import RandomForestClassifier
5
+ from sklearn.metrics import accuracy_score
6
+ import pickle
7
+
8
+ # Veriyi oku
9
+ df = pd.read_csv("mobile_prices.csv")
10
+
11
+ # Özellikleri ve hedefi ayır
12
+ X = df.drop("price_range", axis=1)
13
+ y = df["price_range"]
14
+
15
+ # Eğitim-test bölmesi
16
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
17
+
18
+ # Modeli eğit
19
+ model = RandomForestClassifier()
20
+ model.fit(X_train, y_train)
21
+
22
+ # Doğruluk
23
+ y_pred = model.predict(X_test)
24
+ print("Accuracy:", accuracy_score(y_test, y_pred))
25
+
26
+ # Modeli kaydet
27
+ with open("model.pkl", "wb") as f:
28
+ pickle.dump(model, f)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ streamlit
2
+ scikit-learn
3
+ pandas
4
+ numpy