HİSSE FİYATI TAHMİNİ YAPAN MAKİNE ÖĞRENMESİ MODELİ
Giriş
Dataset Tanıtımı
Değişkenlerin Analizi (Data Dictionary)
Modelin eğitimi sırasında kullandığım sütunlar ve bunların finansal anlamları şu şekildedir:
Dolar Kuru (USD/TRY): Döviz bazlı maliyetleri ve ithalat/ihracat dengesini temsil eder. Finansal modellerde genellikle en güçlü belirleyicidir.
Faiz Oranı (%): Sermaye maliyetini ve risksiz kazanç alternatifini gösterir. Faiz arttığında genellikle borsa üzerinde baskı oluştuğu varsayılır.
Ar-Ge Harcaması (Milyon TL): Şirketin teknolojiye ve geleceğe yaptığı yatırımı temsil eder. Uzun vadeli değer artışının temel göstergesidir.
BIST 100 Endeksi: Piyasanın genel yönünü ve yatırımcı iştahını yansıtır. Hisse senedinin genel trende ne kadar uyum sağladığını gösterir.
Enflasyon Oranı (%): Paranın alım gücündeki değişimi ifade eder. Fiyatların nominal artışındaki ana etkendir.
Hisse Fiyati (Hedef): Tahmin etmek istediğimiz "Bağımlı Değişken"dir.
Kütüphaneler
Model
Dataseti modele tanıtmak
Burada dataseti modele tanıttık bunu yaparken pandas kütüphanesini kullandık. ve excel dosyasını program dosyayı daha kolay okuyabilmesi için csv(metin dosyası)'ye çevirdik. Kullandığım pd.read_csv() fonksiyonu, veriyi sütunlara bölmek için sadece virgüllere (,) bakar. Excel'in karmaşık hücre yapısıyla uğraşmak yerine, virgülleri takip ederek veriyi bir tabloya (DataFrame) dönüştürmek çok daha garantidir.
Modeli eğitmek
Makine öğrenmesinde modelin bir "öğretmene" ihtiyacı vardır. Burada y değişkeni bizim sonucumuz (Hisse Fiyatı), X ise bu sonucu etkileyen faktörlerdir.
model.fit(X, y) komutu, modelin bu veriler arasındaki gizli pattern'leri (örüntüleri) keşfettiği andır. Bilgisayar bu satırda; "Dolar şu kadar artınca fiyat bu kadar değişmiş" diyerek matematiksel bir mantık kurar. Yani bu aşama, modelin dersine çalışıp sınavda (tahmin anında) doğru cevabı vermeye hazırlandığı kısımdı.
Tahmini değerin atanması
mean() fonksiyonuyla bir "orta yol" bulduk; kullanıcı boş geçerse model hata vermek yerine grubun ortalamasını kullanarak tahmine devam eder.Kullanıcıdan verilerin alınması
while True ve try-except bloklarını kullanarak kullanıcıdan hatasız veri almayı garantiledik. Bu kısım, statik veriden "canlı etkileşime" geçtiğimiz köprüdür. Tahminin kullanıcıya gösterilmesi
Model istatistiği
Modelin sadece bir sonuç vermesi yetmez, o sonuca nasıl ulaştığını anlamak için "içine" bakmamız gerekir.
b0 (Sabit Terim): Bu, modelin başlangıç noktasıdır. Yani tüm ekonomik veriler (Dolar, Faiz vb.) "sıfır" olsaydı hisse fiyatının nerede olacağını gösterir. Bir nevi modelin temel zeminidir.
b1, b2... (Katsayılar): Bunlar modelin "hassasiyet" ayarlarıdır. Örneğin Dolar kurunun katsayısı (b1), dolar 1 birim arttığında hisse fiyatının ne kadar yükseleceğini veya düşeceğini söyler. Modelin ekonomiye verdiği tepkiyi burada ölçeriz.
R² Skoru: Bu modelin karne notudur. 1'e ne kadar yakınsa, modelimiz geçmiş verilerdeki pattern'leri (örüntüleri) o kadar iyi kavramış demektir. Bizim projemizdeki yüksek skor, modelin dersine ne kadar iyi çalıştığını ispatlar.
Verinin görselleştirilmesi
Bu kod bloğunda, modelimizin matematiksel başarısını herkesin anlayabileceği bir resme dönüştürüyoruz. İlk olarak plt.scatter ve plt.plot ile geçmişteki gerçek verileri mavi noktalar olarak haritaya yerleştirip, modelin öğrendiği en ideal yolu temsil eden Kırmızı Regresyon Doğrusu'nu çiziyoruz.
Hemen ardından gelen for döngüsü ise işin en şeffaf kısmını yapıyor: Her bir gerçek veri noktasından kırmızı tahmin çizgimize dikey gri çizgiler çekerek, modelimizin ne kadar yanıldığını yani "hata payımızı" görselleştiriyor. Finalde eklediğimiz başlıklar ve ızgara (grid) yapısıyla birlikte, hem geçmiş pattern'leri hem de modelimizin bu pattern'lere ne kadar sadık kaldığını tek bir grafikte ispatlamış oluyoruz.
Yorumlar
Yorum Gönder