Python Eğitimi

Python ANA SAYFA Python Tanıtımı Python Başlarken Python Sözdizimi Python Yorumları Python Değişkenleri Python Veri Türleri Python Numaraları Python Döküm Python Dizeleri Python Boole'leri Python Operatörleri Python Listeleri piton demetleri Python Setleri Python Sözlükleri Python Eğer... Başka Python while Döngüleri Döngüler için Python Python Fonksiyonları piton lambda Python Dizileri Python Sınıfları/Nesneleri Python Kalıtımı Python Yineleyiciler Python Kapsamı Python Modülleri Python Tarihleri Python Matematik Python JSON'u Python Normal İfade Python PIP'si Python Deneyin... Hariç Python Kullanıcı Girişi Python Dize Biçimlendirme

Dosya yönetimi

Python Dosya İşleme Python Okuma Dosyaları Python Dosyaları Yazma/Oluşturma Python Dosyaları Sil

Python Modülleri

NumPy Eğitimi Panda İzlenecek Yol Scipy Eğitimi

Python Matplotlib'i

Matplotlib'e Giriş Matplotlib Başlarken Matplotlib Pyplot Matplotlib Çizimi Matplotlib İşaretçileri Matplotlib Hattı Matplotlib Etiketleri Matplotlib Izgarası Matplotlib Alt Noktaları Matplotlib Dağılımı Matplotlib Çubukları Matplotlib Histogramları Matplotlib Pasta Grafikleri

Makine öğrenme

Başlarken Ortalama Medyan Modu Standart sapma Yüzdelik Veri Dağıtımı Normal Veri Dağılımı Dağılım grafiği Doğrusal Regresyon Polinom Regresyon Çoklu regresyon Ölçek Tren/Test Karar ağacı

Python MySQL

MySQL'e Başlayın MySQL Veritabanı Oluştur MySQL Tablo Oluştur MySQL Ekle MySQL Seçimi MySQL Nerede MySQL Sıralaması MySQL Sil MySQL Bırakma Tablosu MySQL Güncellemesi MySQL Sınırı MySQL'e Katılma

Python MongoDB

MongoDB Başlarken MongoDB Veritabanı Oluştur MongoDB Koleksiyon Oluştur MongoDB Ekle MongoDB Bul MongoDB Sorgusu MongoDB Sıralaması MongoDB Sil MongoDB Damla Koleksiyonu MongoDB Güncellemesi MongoDB Sınırı

Python Referansı

Python'a Genel Bakış Python Yerleşik İşlevleri Python Dizisi Yöntemleri Python Liste Yöntemleri Python Sözlük Yöntemleri Python Tuple Yöntemleri Python Kümesi Yöntemleri Python Dosya Yöntemleri Python Anahtar Kelimeleri Python İstisnaları Python Sözlüğü

Modül Referansı

Rastgele Modül İstek Modülü İstatistik Modülü Matematik Modülü cMath Modülü

Python Nasıl Yapılır?

Liste Kopyalarını Kaldır Bir Dizeyi Ters Çevir İki Sayı Ekle

Python Örnekleri

Python Örnekleri Python Derleyici Python Alıştırmaları Python Testi Python Sertifikası

Makine Öğrenimi - Polinom Regresyon


Polinom Regresyon

Veri noktalarınız açıkça doğrusal bir regresyona uymuyorsa (tüm veri noktalarından geçen düz bir çizgi), polinom regresyon için ideal olabilir.

Polinom regresyon, lineer regresyon gibi, veri noktalarından bir çizgi çizmenin en iyi yolunu bulmak için x ve y değişkenleri arasındaki ilişkiyi kullanır.


O nasıl çalışır?

Python, veri noktaları arasında bir ilişki bulmak ve bir polinom regresyon çizgisi çizmek için yöntemlere sahiptir. Matematik formülü üzerinden gitmek yerine bu yöntemleri nasıl kullanacağınızı göstereceğiz.

Aşağıdaki örnekte, belirli bir gişeden geçerken 18 araba kaydettik.

Aracın hızını ve geçişin gerçekleştiği günün saatini (saati) kaydettik.

X ekseni günün saatlerini ve y ekseni hızı temsil eder:

Örnek

Bir dağılım grafiği çizerek başlayın:

import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

plt.scatter(x, y)
plt.show()

Sonuç:

Örnek

Polinom Regresyon çizgisini içe aktarın numpyve matplotlibardından çizin:

import numpy
import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(1, 22, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Sonuç:

Örnek Açıklama

İhtiyacınız olan modülleri içe aktarın.

NumPy Eğitimimizde NumPy modülü hakkında bilgi edinebilirsiniz .

SciPy modülü hakkında SciPy Eğitimimizde bilgi edinebilirsiniz .

import numpy
import matplotlib.pyplot as plt

x ve y ekseninin değerlerini temsil eden dizileri oluşturun:

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

NumPy, bir polinom modeli yapmamızı sağlayan bir metoda sahiptir:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Ardından satırın nasıl görüneceğini belirtin, 1. pozisyondan başlayıp 22. pozisyonda bitirelim:

myline = numpy.linspace(1, 22, 100)

Orijinal dağılım grafiğini çizin:

plt.scatter(x, y)

Polinom regresyon çizgisini çizin:

plt.plot(myline, mymodel(myline))

Diyagramı görüntüleyin:

plt.show()



R-kare

X ve y ekseni değerleri arasındaki ilişkinin ne kadar iyi olduğunu bilmek önemlidir, eğer ilişki yoksa polinom regresyonu hiçbir şeyi tahmin etmek için kullanılamaz.

İlişki, r-kare adı verilen bir değerle ölçülür.

r-kare değeri 0 ile 1 arasındadır, burada 0 hiçbir ilişki olmadığı ve 1 %100 ilişkili anlamına gelir.

Python ve Sklearn modülü bu değeri sizin için hesaplayacaktır, tek yapmanız gereken onu x ve y dizileriyle beslemek:

Örnek

Verilerim bir polinom regresyonuna ne kadar uyuyor?

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Not: 0.94 sonucu, çok iyi bir ilişkinin olduğunu ve gelecek tahminlerinde polinom regresyonunu kullanabileceğimizi göstermektedir.


Gelecekteki Değerleri Tahmin Edin

Şimdi topladığımız bilgileri gelecekteki değerleri tahmin etmek için kullanabiliriz.

Örnek: Saat 17.00 civarında gişeden geçen bir arabanın hızını tahmin etmeye çalışalım:

Bunu yapmak için, mymodelyukarıdaki örnekteki aynı diziye ihtiyacımız var:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Örnek

Saat 17.00'de geçen bir arabanın hızını tahmin edin:

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

speed = mymodel(17)
print(speed)

Örnek, şemadan da okuyabileceğimiz bir hızın 88.87 olduğunu tahmin ediyordu:


Kötü Uyum?

Polinom regresyonunun gelecekteki değerleri tahmin etmek için en iyi yöntem olmayacağı bir örnek oluşturalım.

Örnek

x ve y ekseni için bu değerler, polinom regresyonu için çok kötü bir uyumla sonuçlanmalıdır:

import numpy
import matplotlib.pyplot as plt

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(2, 95, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Sonuç:

Ve r-kare değeri?

Örnek

Çok düşük bir r-kare değeri almalısınız.

import numpy
from sklearn.metrics import r2_score

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Sonuç: 0,00995 çok kötü bir ilişkiyi gösterir ve bize bu veri setinin polinom regresyonu için uygun olmadığını söyler.