commited on
Commit
fd49f32
·
verified ·
1 Parent(s): 35c70df

Upload 6 files

Browse files
Files changed (7) hide show
  1. .gitattributes +1 -0
  2. README.md +72 -1
  3. app.py +22 -0
  4. consumer_complaints_100k.csv +3 -0
  5. model.pkl +3 -0
  6. model.py +77 -0
  7. requirements.txt +3 -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
+ consumer_complaints_100k.csv filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,3 +1,74 @@
 
 
 
 
 
 
 
 
1
  ---
2
- license: mit
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ README.md
2
+
3
+ # 📝 Consumer Complaint Classification with Machine Learning
4
+
5
+ Bu proje, tüketicilerin yazdığı şikayet metinlerini analiz ederek, hangi ürünle ilgili olduğunu otomatik olarak tahmin etmeyi amaçlayan bir doğal dil işleme (NLP) projesidir.
6
+
7
+ Makine öğrenmesi kullanılarak, tüketici şikayetlerinden `Product` sınıfı tahmin edilmiştir (örneğin: Mortgage, Credit Card, Bank Account).
8
+
9
  ---
10
+
11
+ ## 📌 Proje Hedefi
12
+
13
+ Kullanıcının yazdığı şikayet metnine göre ilgili ürün kategorisini tahmin etmek.
14
+ Bu sayede müşteri hizmetlerinde sınıflandırma süreci otomatikleştirilebilir.
15
+
16
  ---
17
+
18
+ ## 🧠 Kullanılan Yöntemler
19
+
20
+ 1. **Veri Okuma ve Temizleme**
21
+ - İlk 100.000 satır kullanıldı (`consumer_complaints.csv`)
22
+ - Eksik (`NaN`) veriler çıkarıldı
23
+ - `Consumer complaint narrative` ve `Product` sütunları kullanıldı
24
+
25
+ 2. **Doğal Dil İşleme (NLP)**
26
+ - TF-IDF vektörleştirme (en fazla 5000 kelime)
27
+ - İngilizce durak kelimeler çıkarıldı
28
+
29
+ 3. **Model Eğitimi**
30
+ - Model: `Logistic Regression`
31
+ - Eğitim/Test oranı: %80 / %20
32
+ - Performans: `classification_report` ile ölçüldü
33
+
34
+ 4. **Model Kaydı**
35
+ - Model + TF-IDF Vectorizer → `model.pkl` dosyasına kaydedildi
36
+
37
+ 5. **Streamlit Uygulaması**
38
+ - Kullanıcıdan metin alır
39
+ - Model tahmini gösterir
40
+ - Anında çalıştırılabilir arayüz
41
+
42
+ ---
43
+
44
+ ## 🚀 Nasıl Çalıştırılır?
45
+
46
+ ### 1. Gereksinimleri yükle
47
+ ```bash
48
+ pip install -r requirements.txt
49
+
50
+
51
+
52
+ 📦 Kullanılan Dosyalar
53
+ Dosya Açıklama
54
+ consumer_complaints_100k.csv Veri setinin ilk 100.000 satırı
55
+ model.py Model eğitimi ve .pkl kaydı
56
+ model.pkl Eğitilmiş model ve TF-IDF
57
+ app.py Streamlit kullanıcı arayüzü
58
+ requirements.txt Gerekli kütüphaneler listesi
59
+ README.md Proje açıklaması
60
+
61
+
62
+
63
+ 🧪 Örnek Kullanım
64
+
65
+ I was charged extra fees and my credit card was closed without notice.
66
+ Tahmini ürün:
67
+ Credit card or prepaid card
68
+
69
+
70
+ Eğitim Amacı
71
+ Bu proje eğitim amacıyla geliştirilmiştir. Gerçek dünyada kullanılmadan önce daha büyük veri ile model iyileştirme, sınıf dengesizliği çözümü, ileri NLP teknikleri ve hiperparametre optimizasyonu yapılması önerilir
72
+
73
+ 🪪 Lisans
74
+ MIT License
app.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pickle
3
+
4
+ # Model ve TF-IDF yükle
5
+ with open("model.pkl", "rb") as f:
6
+ model, vectorizer = pickle.load(f)
7
+
8
+ st.title("📝 Consumer Complaint Classifier")
9
+ st.subheader("Tahmin Et: Bu şikayet hangi ürünle ilgili?")
10
+
11
+ # Kullanıcıdan şikayet metni al
12
+ complaint_text = st.text_area("Şikayet metnini buraya yazın...")
13
+
14
+ if st.button("Tahmin Et"):
15
+ if complaint_text.strip() == "":
16
+ st.warning("Lütfen bir metin girin.")
17
+ else:
18
+ # TF-IDF ile dönüştür
19
+ input_vec = vectorizer.transform([complaint_text])
20
+ # Tahmin yap
21
+ prediction = model.predict(input_vec)[0]
22
+ st.success(f"📦 Tahmini Ürün: **{prediction}**")
consumer_complaints_100k.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca6993cf249a8ef1f57461ed74669319ffb0f7ce7ad995ec668b6b996ec0ce35
3
+ size 41279771
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6937cc690c11afe5ea7bcb4fc253d98acece7d750897ebceb1d390a0c63381a
3
+ size 866827
model.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+ import pandas as pd
15
+ from sklearn.model_selection import train_test_split
16
+ from sklearn.feature_extraction.text import TfidfVectorizer
17
+ from sklearn.linear_model import LogisticRegression
18
+ from sklearn.metrics import classification_report
19
+ import pickle
20
+
21
+ # 1. Veri yükleme
22
+ df = pd.read_csv("consumer_complaints_100k.csv")
23
+
24
+ # 2. Sütun adlarını düzelt
25
+ df.columns = df.columns.str.strip()
26
+
27
+ # 3. Gerekli sütunları seç (Boş olmayanlar)
28
+ df = df[['Consumer complaint narrative', 'Product']].dropna()
29
+
30
+ # 4. Giriş ve hedef verileri ayır
31
+ X = df['Consumer complaint narrative']
32
+ y = df['Product']
33
+
34
+ # 5. TF-IDF vektörleştirici
35
+ vectorizer = TfidfVectorizer(stop_words='english', max_features=5000)
36
+ X_vec = vectorizer.fit_transform(X)
37
+
38
+ # 6. Eğitim / test bölmesi
39
+ X_train, X_test, y_train, y_test = train_test_split(X_vec, y, test_size=0.2, random_state=42)
40
+
41
+ # 7. Model oluştur ve eğit
42
+ model = LogisticRegression(max_iter=1000)
43
+ model.fit(X_train, y_train)
44
+
45
+ # 8. Performans raporu
46
+ y_pred = model.predict(X_test)
47
+ print("\nClassification Report:\n")
48
+ print(classification_report(y_test, y_pred))
49
+
50
+ # 9. Model ve vectorizer'ı kaydet
51
+ with open("model.pkl", "wb") as f:
52
+ pickle.dump((model, vectorizer), f)
53
+
54
+ print("\n✅ Model başarıyla eğitildi ve 'model.pkl' dosyasına kaydedildi.")
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+ # İlk 100.000 satırı kullanır
68
+
69
+ # Sütun isimlerini düzeltir
70
+
71
+ # Eksik verileri temizler
72
+
73
+ # TF-IDF ile metni sayısallaştırır
74
+
75
+ # Logistic Regression ile model eğitir
76
+
77
+ # Modeli ve TF-IDF vektörizerini .pkl dosyasına kaydeder
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ streamlit
2
+ pandas
3
+ scikit-learn