commited on
Commit
f73d47d
·
verified ·
1 Parent(s): 0335d17

Upload 4 files

Browse files
Files changed (4) hide show
  1. README.md +59 -0
  2. aciklama.txt +19 -0
  3. app.py +27 -0
  4. model.pkl +3 -0
README.md ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 📘 Proje Adı: Scrabble Oyuncu Derecesi Tahmin Modeli
2
+
3
+ ## 🎯 Proje Amacı:
4
+ Bu proje, Kaggle üzerindeki "Scrabble Player Rating" yarışması kapsamında geliştirilmiştir. Amaç, bir Scrabble oyuncusunun yalnızca tek bir maç performansı kullanılarak oyun öncesi derecesini (rating) tahmin etmektir.
5
+
6
+ ## 📦 Veri Seti:
7
+ Veri seti Woogles.io platformundan alınan yaklaşık 73.000 oyunu içermektedir. Her oyun iki oyuncunun:
8
+ - Skor bilgisi
9
+ - Nickname (bot veya insan)
10
+ - Rating değeri
11
+ - Game ID (eşleşme kimliği)
12
+
13
+ verilerini içermektedir. Ayrıca hamle düzeyinde ek veri olan `turns.csv` dosyası da bulunmaktadır.
14
+
15
+ ## ⚙️ Kullanılan Yöntem:
16
+ - Veri ön işleme (negatif skor temizliği, bot kontrolü)
17
+ - Özellik mühendisliği (skor farkı, kazanan durumu, bot karşılaşması)
18
+ - Geniş veri formatında oyuncu eşleşmeleri oluşturuldu
19
+ - Model olarak `RandomForestRegressor` kullanıldı
20
+ - Performans metriği olarak RMSE: **215.77**
21
+
22
+ ## 💡 Model Girdileri (Streamlit için):
23
+ - Player 1 Skoru
24
+ - Player 2 Skoru
25
+ - Player 1 Kazandı mı?
26
+ - Rakip Bot mu?
27
+
28
+ Bu bilgilerle model, `Player 1`'ın tahmini rating'ini üretir.
29
+
30
+ ## 🧪 Örnek Girdi:
31
+ ```json
32
+ {
33
+ "player1_score": 420,
34
+ "player2_score": 390,
35
+ "player1_is_winner": true,
36
+ "player1_vs_bot": false
37
+ }
38
+
39
+
40
+
41
+ 📁 Çıktılar:
42
+ model.pkl: Eğitilmiş model
43
+
44
+ app.py: Streamlit arayüzü
45
+
46
+ requirements.txt: Gerekli kütüphaneler
47
+
48
+ sample_input.json: Örnek test girdisi
49
+
50
+ README.md: GitHub + Hugging Face dokümantasyonu
51
+
52
+
53
+
54
+ 🚀 Geliştirme Fırsatları:
55
+ turns.csv kullanılarak hamle bazlı özellik mühendisliği yapılabilir
56
+
57
+ Model doğruluğu arttırmak için LightGBM veya XGBoost ile karşılaştırma yapılabilir
58
+
59
+ Oyunculara özel geçmiş bilgileriyle rating tahmini iyileştirilebilir
aciklama.txt ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 📘 Proje: Scrabble Oyuncu Derecesi Tahmin Modeli – BecomePro Görevi
2
+
3
+ ## 📌 Proje Açıklaması (Türkçe)
4
+
5
+ Bu proje, Kaggle üzerindeki "Scrabble Player Rating" yarışması kapsamında geliştirilmiş bir makine öğrenmesi uygulamasıdır. Amaç, bir Scrabble oyuncusunun yalnızca tek bir oyun performansına dayanarak oyun öncesi derecesini (rating) tahmin etmektir. Model, oyuncunun skor bilgisi, rakibinin durumu (bot/insan), kazanan bilgisini ve skor farkını kullanarak rating tahmini yapar.
6
+
7
+ Kullanılan algoritma `RandomForestRegressor` olup, ortalama hata (RMSE) değeri ~215'tir. Veri temizliği, bot kontrolü ve özellik mühendisliği adımları uygulanmıştır. Sonuçta, model `.pkl` olarak kaydedilmiş ve kullanıcı arayüzü `Streamlit` ile geliştirilmiştir.
8
+
9
+ veri analizi, modelleme, uygulama ve dağıtım becerilerini sergilemek amacıyla yapılmıştır.
10
+
11
+ ---
12
+
13
+ ## 📌 Project Description (English)
14
+
15
+ This project is a machine learning application developed for the Kaggle competition “Scrabble Player Rating.” The objective is to predict a Scrabble player's pre-game rating based solely on a single match's performance data. The model uses features such as the player’s score, whether the opponent is a bot, the match outcome, and score difference.
16
+
17
+ The algorithm used is `RandomForestRegressor`, with an average prediction error (RMSE) of approximately 215. The project involves data cleaning, bot flagging, and feature engineering. The final model is saved as `.pkl`, and an interactive prediction interface is built using `Streamlit`.
18
+
19
+ This project was built as part of a BecomePro assignment to demonstrate data science, modeling, and deployment skills in a structured ML workflow.
app.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import streamlit as st
3
+ import joblib
4
+ import numpy as np
5
+
6
+ # Başlık
7
+ st.title("📊 Scrabble Oyuncu Derecesi Tahmin Uygulaması")
8
+
9
+ # Modeli yükle
10
+ model = joblib.load("model.pkl")
11
+
12
+ # Kullanıcıdan giriş verilerini al
13
+ st.header("🎮 Oyun Bilgilerini Girin")
14
+
15
+ player1_score = st.number_input("Player 1 Skoru", min_value=0, value=400)
16
+ player2_score = st.number_input("Player 2 Skoru", min_value=0, value=380)
17
+ player1_is_winner = st.selectbox("Player 1 Kazandı mı?", [True, False])
18
+ player1_vs_bot = st.selectbox("Rakip bot mu?", [True, False])
19
+
20
+ # Özellikleri hazırla
21
+ score_diff = player1_score - player2_score
22
+ features = np.array([[player1_score, player2_score, score_diff, int(player1_is_winner), int(player1_vs_bot)]])
23
+
24
+ # Tahmin
25
+ if st.button("Tahmin Et"):
26
+ prediction = model.predict(features)[0]
27
+ st.success(f"Tahmin Edilen Player 1 Rating: {int(prediction)}")
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:be5e635be4286af5de8a50d2b1992f960d79f6456ad6bed02f3a288f87f0fd45
3
+ size 291496961