Python
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# --- ADIM 1: Minecraft Verisi Oluşturma (Simülasyon) ---
# Gerçek senaryoda bu verileri Mineflayer veya Raspberry Juice API ile oyundan çekersiniz.
np.random.seed(42)
n_samples = 1000
# Öznitelikler (Features):
# 1. Oyuncu Yüksekliği (Y koordinati: 0-64 arası maden, 64+ yüzey)
# 2. Envanterdeki Meşale Sayısı (0 - 64)
# 3. Can Değeri (1 - 20)
# 4. Yakındaki Düşür (Mob) Sayısı (0 - 10)
y_coords = np.random.randint(5, 120, size=n_samples)
torches = np.random.randint(0, 65, size=n_samples)
health = np.random.randint(1, 21, size=n_samples)
nearby_mobs = np.random.randint(0, 11, size=n_samples)
# Etiketler (Labels / Yapay Zeka Kararı):
# 0: Maden Kaz (Mine), 1: Ev İnşa Et (Build), 2: Savaş/Kaç (Fight/Run)
actions = []
for i in range(n_samples):
if nearby_mobs[i] > 3 or health[i] < 6:
actions.append(2) # Savaş veya Kaç
elif y_coords[i] < 50 and torches[i] > 5:
actions.append(0) # Maden Kaz
else:
actions.append(1) # Ev İnşa Et
# Veri Çerçevesi (DataFrame) Oluşturma
df = pd.DataFrame({
'y_coord': y_coords,
'torches': torches,
'health': health,
'nearby_mobs': nearby_mobs,
'action': actions
})
print("--- Minecraft Veri Setinden İlk 5 Satır ---")
print(df.head())
print("-" * 40)
# --- ADIM 2: Modeli Eğitme ---
X = df[['y_coord', 'torches', 'health', 'nearby_mobs']]
y = df['action']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Random Forest Sınıflandırıcı Modelini Seçiyoruz
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# --- ADIM 3: Model Başarısını Test Etme ---
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Model Doğruluk Oranı (Accuracy): %{accuracy * 100:.2f}")
# --- ADIM 4: Minecraft'tan Gelen Anlık Veriyle Tahmin Yapma ---
# Senaryo: Oyuncu yerin altında (Y=20), envanterinde 12 meşale var, canı tam (20) ve etrafta düşman yok (0).
yeni_oyuncu_verisi = [[20, 12, 20, 0]]
tahmin = model.predict(yeni_oyuncu_verisi)
action_map = {0: "Maden Kaz (Mine)", 1: "Ev İnşa Et (Build)", 2: "Savaş / Kaç (Fight/Run)"}
print("-" * 40)
print(f"Anlık Minecraft Durumu: Y=20, Meşale=12, Can=20, Mob=0")
print(f"Yapay Zekanın Önerdiği Hamle: **{action_map[tahmin[0]]}**"