GuessAI is an advanced Machine Learning project that can predict 375 different objects using the Decision Tree algorithm - the fundamental mechanism behind modern AI systems. The system asks optimized questions based on information gain and entropy calculations to guess what you're thinking.
This project demonstrates the core principles of machine learning classification through an interactive guessing game, showcasing how AI systems make intelligent decisions through structured data analysis.
- 🎯 375 Objects Database - Comprehensive collection covering electronics, household items, vehicles, sports equipment, and more
- 🧮 Decision Tree Algorithm - Custom implementation from scratch using Information Gain and Entropy
- 🎲 Smart Question Selection Engine - Dual approach with both traditional ML and scoring-based systems
- 📊 Information Gain Optimization - Questions are selected to maximize information gain at each step
- 🔍 Verification System - Additional confirmation questions ensure prediction accuracy
- ⚡ 56 Strategic Questions - Carefully designed question set covering physical, functional, and contextual properties
-
Decision Tree Classification
- Custom implementation without external ML libraries (scikit-learn alternative)
- Binary tree structure with nodes representing questions and leaves representing predictions
- Max depth control (56 levels) to prevent overfitting
-
Information Gain & Entropy
- Shannon entropy calculation for measuring uncertainty
- Information gain maximization for optimal question selection
- Parent-child entropy comparison for splitting decisions
-
Scoring-Based Prediction Engine (
brain.py)- Point-based system with rewards and penalties
- Dynamic score multipliers for critical questions (6x, 4x, 2x)
- Real-time candidate pool analysis
- Split quality evaluation (50/50 optimal distribution)
Decision Tree Engine (main.py)
- Node class: Tree structure with feature, threshold, and value attributes
- _grow_tree(): Recursive tree building with depth and sample constraints
- _best_split(): Finds optimal feature and threshold using information gain
- _entropy(): Shannon entropy calculation using logarithmic probabilities
- _information_gain(): Measures reduction in uncertainty after splitSmart Prediction Engine (brain.py)
- Score-based candidate evaluation
- Weighted question importance (Electronic=6x, Material=4x, Category=2x)
- Split quality analysis for balanced tree growth
- Dynamic top-N candidate pool selection
- Early stopping when leader emerges (25+ point gap)The dataset contains 375 objects with 56 binary features:
Feature Categories:
- 🔧 Physical Properties (10): Electric, Size, Material composition
- 🏠 Usage Location (10): Kitchen, Bathroom, Office, Outdoor
- ⚙️ Functionality (10): Edible, Sound-producing, Screen-based
- 🔬 Deep Classification (20): Valuable, Fragile, Wearable, Vehicle-specific
- 📝 Additional Attributes (6): Fixed location, Portability, Body-specific
Example Objects:
- Electronics: Laptop, Phone, TV, Camera
- Household: Refrigerator, Washing Machine, Furniture
- Transportation: Car, Bicycle, Train, Airplane
- Medical: Stethoscope, Wheelchair, Thermometer
- Sports: Dumbbell, Yoga Mat, Sports Equipment
# Clone the repository
git clone https://github.com/augrclk/GuessAI.git
cd GuessAI
# Install dependencies
pip install -r requirements.txt
# Run the game
python main.py- Think of an object from everyday life
- Answer questions with Yes (e), No (h), or Don't Know (b)
- The system uses Decision Tree to navigate through possibilities
- Verification questions confirm the final prediction
- System achieves 90%+ accuracy within 20-30 questions
1. Initialize all 375 candidates with score = 0
2. Select question with highest Information Gain
└─ Calculate entropy before and after split
└─ Choose feature that maximizes IG
3. Update scores based on user answer
└─ Match: Add points (5-30 based on importance)
└─ Mismatch: Subtract points (10-60)
4. Repeat until:
└─ Leader emerges (25+ point gap) OR
└─ Maximum questions reached (56)
5. Ask 3 verification questions for confirmation
6. Final prediction with confidence score
- Accuracy: ~90% on standard objects
- Average Questions: 18-25 per game
- Maximum Depth: 56 questions
- Database Size: 375 objects
- Feature Space: 56 binary attributes
This project demonstrates several fundamental ML concepts:
- Supervised Learning: Training data with labeled examples
- Classification: Categorizing objects into discrete classes
- Feature Engineering: Designing meaningful binary questions
- Entropy Reduction: Systematically decreasing uncertainty
- Tree-Based Models: Foundation for Random Forests and Gradient Boosting
- Information Theory: Applying Shannon's entropy to decision making
🧠 AKILLI TAHMİN 🧠
Aklından bir nesne tut.
Soru 1: Elektrikle/Pille mi çalışır? (e/h): e
Soru 2: Cebine sığacak kadar küçük mü? (e/h): e
Soru 3: Ekranı var mı? (e/h): e
...
🏆 TAHMİNİM: TELEFON
(Puan: 87.5)
Contributions are welcome! Feel free to:
- Add new objects to the database
- Improve question quality
- Optimize the decision tree algorithm
- Enhance the scoring system
This project is open source and available under the MIT License.
Special thanks to EnesAhmet10000 for valuable contributions to this project! 🎉
GuessAI, modern yapay zeka sistemlerinin temelini oluşturan Karar Ağacı (Decision Tree) algoritmasını kullanarak 375 farklı nesneyi tahmin edebilen gelişmiş bir Machine Learning projesidir. Sistem, bilgi kazancı (information gain) ve entropi hesaplamalarına dayalı optimize edilmiş sorular sorarak aklınızdan geçeni tahmin eder.
Bu proje, interaktif bir tahmin oyunu aracılığıyla makine öğrenmesi sınıflandırmasının temel prensipler gösterir ve yapay zeka sistemlerinin yapılandırılmış veri analizi ile nasıl akıllı kararlar aldığını sergiler.
- 🎯 375 Nesne Veritabanı - Elektronik, ev eşyaları, araçlar, spor ekipmanları ve daha fazlasını kapsayan kapsamlı koleksiyon
- 🧮 Karar Ağacı Algoritması - Bilgi Kazancı ve Entropi kullanarak sıfırdan özel uygulama
- 🎲 Akıllı Soru Seçim Motoru - Hem geleneksel ML hem de puanlama tabanlı sistemler ile çift yaklaşım
- 📊 Bilgi Kazancı Optimizasyonu - Her adımda bilgi kazancını maksimize eden soru seçimi
- 🔍 Doğrulama Sistemi - Ek onay soruları ile tahmin doğruluğu garantisi
- ⚡ 56 Stratejik Soru - Fiziksel, fonksiyonel ve bağlamsal özellikleri kapsayan özenle tasarlanmış soru seti
-
Karar Ağacı Sınıflandırması
- Harici ML kütüphaneleri olmadan özel uygulama (scikit-learn alternatifi)
- Soruları temsil eden düğümler ve tahminleri temsil eden yapraklardan oluşan ikili ağaç yapısı
- Aşırı öğrenmeyi önlemek için maksimum derinlik kontrolü (56 seviye)
-
Bilgi Kazancı ve Entropi
- Belirsizliği ölçmek için Shannon entropi hesaplaması
- Optimal soru seçimi için bilgi kazancı maksimizasyonu
- Bölme kararları için ebeveyn-çocuk entropi karşılaştırması
-
Puanlama Tabanlı Tahmin Motoru (
brain.py)- Ödül ve ceza içeren puan bazlı sistem
- Kritik sorular için dinamik puan çarpanları (6x, 4x, 2x)
- Gerçek zamanlı aday havuzu analizi
- Bölme kalitesi değerlendirmesi (50/50 optimal dağılım)
Karar Ağacı Motoru (main.py)
- Node sınıfı: Özellik, eşik ve değer nitelikleriyle ağaç yapısı
- _grow_tree(): Derinlik ve örnek kısıtlamaları ile özyinelemeli ağaç oluşturma
- _best_split(): Bilgi kazancını kullanarak optimal özellik ve eşiği bulma
- _entropy(): Logaritmik olasılıklar kullanarak Shannon entropi hesaplama
- _information_gain(): Bölmeden sonra belirsizlikteki azalmayı ölçmeAkıllı Tahmin Motoru (brain.py)
- Puan tabanlı aday değerlendirmesi
- Ağırlıklı soru önemi (Elektronik=6x, Malzeme=4x, Kategori=2x)
- Dengeli ağaç büyümesi için bölme kalitesi analizi
- Dinamik en iyi-N aday havuzu seçimi
- Lider belirdiğinde erken durdurma (25+ puan farkı)Veri seti 56 ikili özelliğe sahip 375 nesne içerir:
Özellik Kategorileri:
- 🔧 Fiziksel Özellikler (10): Elektrik, Boyut, Malzeme bileşimi
- 🏠 Kullanım Yeri (10): Mutfak, Banyo, Ofis, Dış mekan
- ⚙️ İşlevsellik (10): Yenilebilir, Ses çıkaran, Ekran tabanlı
- 🔬 Derinlemesine Sınıflandırma (20): Değerli, Kırılgan, Giyilebilir, Araç-özgü
- 📝 Ek Nitelikler (6): Sabit konum, Taşınabilirlik, Vücuda özgü
Örnek Nesneler:
- Elektronik: Laptop, Telefon, TV, Kamera
- Ev Eşyaları: Buzdolabı, Çamaşır Makinesi, Mobilya
- Ulaşım: Araba, Bisiklet, Tren, Uçak
- Medikal: Steteskop, Tekerlekli Sandalye, Ateş Ölçer
- Spor: Dambıl, Yoga Matı, Spor Ekipmanları
# Depoyu klonlayın
git clone https://github.com/augrclk/GuessAI.git
cd GuessAI
# Bağımlılıkları yükleyin
pip install -r requirements.txt
# Oyunu başlatın
python main.py- Günlük hayattan bir nesne düşünün
- Soruları cevaplayın: Evet (e), Hayır (h) veya Bilmiyorum (b)
- Sistem olasılıklar arasında gezinmek için Karar Ağacı kullanır
- Doğrulama soruları son tahmini onaylar
- Sistem 20-30 soru içinde %90+ doğruluk sağlar
1. Tüm 375 adayı puan = 0 ile başlat
2. En yüksek Bilgi Kazancına sahip soruyu seç
└─ Bölmeden önce ve sonra entropiyi hesapla
└─ BK'yi maksimize eden özelliği seç
3. Kullanıcı cevabına göre puanları güncelle
└─ Eşleşme: Puan ekle (önem derecesine göre 5-30)
└─ Uyuşmazlık: Puan çıkar (10-60)
4. Şu ana kadar tekrarla:
└─ Lider belirir (25+ puan farkı) VEYA
└─ Maksimum soru sayısına ulaşılır (56)
5. Onay için 3 doğrulama sorusu sor
6. Güven puanı ile final tahmini
- Doğruluk: Standart nesnelerde ~%90
- Ortalama Soru Sayısı: Oyun başına 18-25
- Maksimum Derinlik: 56 soru
- Veritabanı Boyutu: 375 nesne
- Özellik Uzayı: 56 ikili nitelik
Bu proje birkaç temel ML kavramını gösterir:
- Denetimli Öğrenme: Etiketli örneklerle eğitim verisi
- Sınıflandırma: Nesneleri ayrık sınıflara kategorize etme
- Özellik Mühendisliği: Anlamlı ikili sorular tasarlama
- Entropi Azaltma: Belirsizliği sistematik olarak azaltma
- Ağaç Tabanlı Modeller: Random Forest ve Gradient Boosting'in temeli
- Bilgi Teorisi: Karar vermede Shannon entropisi uygulama
🧠 AKILLI TAHMİN 🧠
Aklından bir nesne tut.
Soru 1: Elektrikle/Pille mi çalışır? (e/h): e
Soru 2: Cebine sığacak kadar küçük mü? (e/h): e
Soru 3: Ekranı var mı? (e/h): e
...
🏆 TAHMİNİM: TELEFON
(Puan: 87.5)
Katkılar memnuniyetle karşılanır! Şunları yapabilirsiniz:
- Veritabanına yeni nesneler ekleyin
- Soru kalitesini iyileştirin
- Karar ağacı algoritmasını optimize edin
- Puanlama sistemini geliştirin
Bu proje açık kaynaklıdır ve MIT Lisansı altında mevcuttur.
Bu projeye değerli katkılarından dolayı EnesAhmet10000'e özel teşekkürler! 🎉
💡 Developed by augrclk
Demonstrating the power of Decision Trees - the foundation of modern AI 🚀