16 KiB
Python ve Scikit-learn ile Regresyon Modellerine Başlangıç
Sketchnote: Tomomi Imura
Ders Öncesi Test
Bu ders R dilinde de mevcut!
Giriş
Bu dört derste, regresyon modelleri oluşturmayı öğreneceksiniz. Bunların ne işe yaradığını birazdan tartışacağız. Ancak başlamadan önce, sürece başlamak için doğru araçlara sahip olduğunuzdan emin olun!
Bu derste şunları öğreneceksiniz:
- Bilgisayarınızı yerel makine öğrenimi görevleri için yapılandırmayı.
- Jupyter defterleriyle çalışmayı.
- Scikit-learn'ü kullanmayı ve kurulumunu.
- Uygulamalı bir egzersizle doğrusal regresyonu keşfetmeyi.
Kurulumlar ve Yapılandırmalar
🎥 Yukarıdaki görsele tıklayarak bilgisayarınızı ML için yapılandırma sürecini anlatan kısa bir videoyu izleyebilirsiniz.
-
Python'u Kurun. Bilgisayarınızda Python yüklü olduğundan emin olun. Python, birçok veri bilimi ve makine öğrenimi görevi için kullanılacaktır. Çoğu bilgisayar sisteminde zaten bir Python kurulumu bulunur. Bazı kullanıcılar için kurulumu kolaylaştıran Python Kodlama Paketleri de mevcuttur.
Ancak, Python'un bazı kullanımları bir yazılım sürümünü gerektirirken, diğerleri farklı bir sürüm gerektirir. Bu nedenle, bir sanallaştırılmış ortam içinde çalışmak faydalı olabilir.
-
Visual Studio Code'u Kurun. Bilgisayarınızda Visual Studio Code'un yüklü olduğundan emin olun. Visual Studio Code'u kurma talimatlarını izleyerek temel kurulumu gerçekleştirin. Bu kursta Python'u Visual Studio Code'da kullanacağınız için, Python geliştirme için Visual Studio Code'u yapılandırma konusunda bilgi edinmek isteyebilirsiniz.
Python ile rahat çalışmak için bu öğrenme modülleri koleksiyonunu inceleyin.
🎥 Yukarıdaki görsele tıklayarak Visual Studio Code'da Python kullanımıyla ilgili bir video izleyebilirsiniz.
-
Scikit-learn'ü Kurun, bu talimatları izleyerek. Python 3 kullanmanız gerektiğinden, bir sanallaştırılmış ortam kullanmanız önerilir. Eğer bu kütüphaneyi bir M1 Mac'te kuruyorsanız, yukarıdaki bağlantıda özel talimatlar bulunmaktadır.
-
Jupyter Notebook'u Kurun. Jupyter paketini kurmanız gerekecek.
Makine Öğrenimi Geliştirme Ortamınız
Python kodunuzu geliştirmek ve makine öğrenimi modelleri oluşturmak için defterler kullanacaksınız. Bu tür dosyalar veri bilimciler için yaygın bir araçtır ve .ipynb
uzantısıyla tanınabilirler.
Defterler, geliştiricinin hem kod yazmasına hem de kodun etrafında notlar ve belgeler oluşturmasına olanak tanıyan etkileşimli bir ortamdır. Bu, deneysel veya araştırma odaklı projeler için oldukça faydalıdır.
🎥 Yukarıdaki görsele tıklayarak bu egzersizi anlatan kısa bir video izleyebilirsiniz.
Egzersiz - Bir Defterle Çalışma
Bu klasörde notebook.ipynb dosyasını bulacaksınız.
-
notebook.ipynb dosyasını Visual Studio Code'da açın.
Bir Jupyter sunucusu Python 3+ ile başlatılacaktır. Defterde
çalıştırılabilir
kod parçaları bulacaksınız. Bir kod bloğunu çalıştırmak için, oynat düğmesine benzeyen simgeyi seçebilirsiniz. -
md
simgesini seçin ve biraz markdown ekleyin, ardından şu metni yazın: # Defterinize Hoş Geldiniz.Şimdi biraz Python kodu ekleyin.
-
Kod bloğuna print('hello notebook') yazın.
-
Kodu çalıştırmak için oku seçin.
Yazdırılan ifadeyi görmelisiniz:
hello notebook
Kodunuzu yorumlarla birleştirerek defteri kendi kendine belgeleyebilirsiniz.
✅ Bir web geliştiricisinin çalışma ortamı ile bir veri bilimcinin çalışma ortamı arasındaki farkları bir dakika düşünün.
Scikit-learn ile Çalışmaya Başlama
Artık Python yerel ortamınızda kurulu olduğuna ve Jupyter defterleriyle rahat olduğunuza göre, Scikit-learn ile de aynı rahatlığa ulaşalım (bunu sci
olarak, science
kelimesindeki gibi telaffuz edin). Scikit-learn, ML görevlerini gerçekleştirmenize yardımcı olacak kapsamlı bir API sağlar.
Web sitelerine göre (kaynak), "Scikit-learn, denetimli ve denetimsiz öğrenmeyi destekleyen açık kaynaklı bir makine öğrenimi kütüphanesidir. Ayrıca model uyumu, veri ön işleme, model seçimi ve değerlendirme gibi çeşitli araçlar sunar."
Bu kursta, Scikit-learn ve diğer araçları kullanarak 'geleneksel makine öğrenimi' görevlerini gerçekleştirecek modeller oluşturacaksınız. Sinir ağları ve derin öğrenmeyi özellikle dahil etmedik, çünkü bunlar yakında çıkacak olan 'Başlangıç için Yapay Zeka' müfredatımızda daha iyi ele alınacaktır.
Scikit-learn, modeller oluşturmayı ve bunları değerlendirmeyi kolaylaştırır. Öncelikli olarak sayısal verilerle çalışır ve öğrenme araçları olarak kullanılabilecek birkaç hazır veri seti içerir. Ayrıca, öğrencilerin denemesi için önceden oluşturulmuş modeller de içerir. Şimdi, önceden paketlenmiş verileri yükleme ve yerleşik bir tahminci kullanarak ilk ML modelimizi oluşturma sürecini keşfedelim.
Egzersiz - İlk Scikit-learn Defteriniz
Bu eğitim, Scikit-learn'ün web sitesindeki doğrusal regresyon örneğinden ilham alınarak hazırlanmıştır.
🎥 Yukarıdaki görsele tıklayarak bu egzersizi anlatan kısa bir video izleyebilirsiniz.
Bu derse ait notebook.ipynb dosyasında, tüm hücreleri 'çöp kutusu' simgesine basarak temizleyin.
Bu bölümde, öğrenme amaçlı Scikit-learn'e dahil edilmiş diyabetle ilgili küçük bir veri setiyle çalışacaksınız. Diyabet hastaları için bir tedaviyi test etmek istediğinizi hayal edin. Makine öğrenimi modelleri, değişkenlerin kombinasyonlarına bağlı olarak hangi hastaların tedaviye daha iyi yanıt vereceğini belirlemenize yardımcı olabilir. Görselleştirildiğinde, çok temel bir regresyon modeli bile teorik klinik denemelerinizi organize etmenize yardımcı olacak değişkenler hakkında bilgi gösterebilir.
✅ Birçok regresyon yöntemi vardır ve hangisini seçeceğiniz, aradığınız cevaba bağlıdır. Örneğin, belirli bir yaşta bir kişinin muhtemel boyunu tahmin etmek istiyorsanız, sayısal bir değer aradığınız için doğrusal regresyon kullanırsınız. Eğer bir mutfağın vegan olup olmadığını belirlemek istiyorsanız, bir kategori ataması arıyorsunuz demektir ve lojistik regresyon kullanırsınız. Lojistik regresyonu daha sonra öğreneceksiniz. Verilerden sorabileceğiniz bazı soruları ve bu yöntemlerden hangisinin daha uygun olacağını düşünün.
Hadi bu göreve başlayalım.
Kütüphaneleri İçe Aktarma
Bu görev için bazı kütüphaneleri içe aktaracağız:
- matplotlib. Grafik oluşturma aracı ve bir çizgi grafiği oluşturmak için kullanacağız.
- numpy. numpy, Python'da sayısal verilerle çalışmak için kullanışlı bir kütüphanedir.
- sklearn. Bu, Scikit-learn kütüphanesidir.
Görevlerinize yardımcı olması için bazı kütüphaneleri içe aktarın.
-
Aşağıdaki kodu yazarak içe aktarmaları ekleyin:
import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model, model_selection
Yukarıda
matplotlib
,numpy
vesklearn
'dendatasets
,linear_model
vemodel_selection
içe aktarılıyor.model_selection
, verileri eğitim ve test setlerine ayırmak için kullanılır.
Diyabet Veri Seti
Yerleşik diyabet veri seti, diyabetle ilgili 442 veri örneği içerir ve 10 özellik değişkeni içerir. Bunlardan bazıları şunlardır:
- age: yaş (yıl olarak)
- bmi: vücut kitle indeksi
- bp: ortalama kan basıncı
- s1 tc: T-Hücreleri (bir tür beyaz kan hücresi)
✅ Bu veri seti, diyabetle ilgili araştırmalarda önemli bir özellik değişkeni olarak 'cinsiyet' kavramını içerir. Birçok tıbbi veri seti, bu tür ikili sınıflandırmaları içerir. Bu tür sınıflandırmaların, bir nüfusun belirli bölümlerini tedavilerden nasıl dışlayabileceğini biraz düşünün.
Şimdi, X ve y verilerini yükleyin.
🎓 Unutmayın, bu denetimli bir öğrenmedir ve adlandırılmış bir 'y' hedefi gereklidir.
Yeni bir kod hücresinde, load_diabetes()
fonksiyonunu çağırarak diyabet veri setini yükleyin. return_X_y=True
girdisi, X
'in bir veri matrisi ve y
'nin regresyon hedefi olacağını belirtir.
-
Veri matrisinin şeklini ve ilk elemanını göstermek için bazı print komutları ekleyin:
X, y = datasets.load_diabetes(return_X_y=True) print(X.shape) print(X[0])
Aldığınız yanıt bir tuple'dır. Tuple'ın ilk iki değerini sırasıyla
X
vey
'ye atıyorsunuz. Daha fazla bilgi için tuple'lar hakkında bilgi edinin.Bu verilerin, 10 elemanlı diziler halinde şekillendirilmiş 442 öğeye sahip olduğunu görebilirsiniz:
(442, 10) [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 -0.04340085 -0.00259226 0.01990842 -0.01764613]
✅ Veriler ile regresyon hedefi arasındaki ilişkiyi biraz düşünün. Doğrusal regresyon, özellik X ile hedef değişken y arasındaki ilişkileri tahmin eder. Diyabet veri seti için hedefi belgelerde bulabilir misiniz? Bu veri seti neyi gösteriyor?
-
Daha sonra, bu veri setinin bir kısmını seçerek çizim yapın. Veri setinin 3. sütununu seçmek için
:
operatörünü kullanarak tüm satırları seçin ve ardından 3. sütunu (2. indeks) seçin. Verileri, çizim için gerekli olan 2D bir diziye dönüştürmek içinreshape(n_rows, n_columns)
kullanabilirsiniz. Parametrelerden biri -1 ise, ilgili boyut otomatik olarak hesaplanır.X = X[:, 2] X = X.reshape((-1,1))
✅ İstediğiniz zaman, verilerin şeklini kontrol etmek için yazdırabilirsiniz.
-
Artık çizim için hazır olan verilere sahipsiniz. Şimdi, bu veri setindeki sayılar arasında mantıklı bir ayrım yapıp yapamayacağını görmek için bir makine kullanabilirsiniz. Bunu yapmak için, hem verileri (X) hem de hedefi (y) test ve eğitim setlerine ayırmanız gerekir. Scikit-learn, bunu yapmak için basit bir yol sunar; test verilerinizi belirli bir noktada bölebilirsiniz.
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
-
Şimdi modelinizi eğitmeye hazırsınız! Doğrusal regresyon modelini yükleyin ve
model.fit()
kullanarak X ve y eğitim setlerinizle eğitin:model = linear_model.LinearRegression() model.fit(X_train, y_train)
✅
model.fit()
TensorFlow gibi birçok ML kütüphanesinde göreceğiniz bir fonksiyondur. -
Daha sonra, test verilerini kullanarak bir tahmin oluşturun. Bu, veri grupları arasındaki çizgiyi çizmek için kullanılacaktır.
y_pred = model.predict(X_test)
-
Şimdi verileri bir grafikte gösterme zamanı. Matplotlib bu görev için çok kullanışlı bir araçtır. Tüm X ve y test verilerinin bir dağılım grafiğini oluşturun ve modelin veri grupları arasındaki en uygun yere bir çizgi çizmek için tahmini kullanın.
plt.scatter(X_test, y_test, color='black') plt.plot(X_test, y_pred, color='blue', linewidth=3) plt.xlabel('Scaled BMIs') plt.ylabel('Disease Progression') plt.title('A Graph Plot Showing Diabetes Progression Against BMI') plt.show()
✅ Burada neler olduğunu biraz düşünün. Bir düz çizgi, birçok küçük veri noktasının arasından geçiyor, ancak tam olarak ne yapıyor? Bu çizgiyi, yeni ve daha önce görülmemiş bir veri noktasının, grafiğin y ekseniyle olan ilişkisini tahmin etmek için nasıl kullanabileceğinizi görebiliyor musunuz? Bu modelin pratik kullanımını kelimelere dökmeye çalışın.
Tebrikler, ilk doğrusal regresyon modelinizi oluşturdunuz, bununla bir tahmin yaptınız ve bunu bir grafikte gösterdiniz!
🚀Meydan Okuma
Bu veri kümesinden farklı bir değişkeni görselleştirin. İpucu: Şu satırı düzenleyin: X = X[:,2]
. Bu veri kümesinin hedefi göz önüne alındığında, diyabetin bir hastalık olarak ilerleyişi hakkında neler keşfedebilirsiniz?
Ders sonrası sınav
Gözden Geçirme ve Kendi Kendine Çalışma
Bu derste, basit doğrusal regresyon ile çalıştınız, tek değişkenli veya çok değişkenli doğrusal regresyon ile değil. Bu yöntemler arasındaki farklar hakkında biraz okuyun veya bu videoya göz atın.
Regresyon kavramı hakkında daha fazla bilgi edinin ve bu teknikle hangi tür soruların yanıtlanabileceğini düşünün. Anlayışınızı derinleştirmek için bu eğitimi alın.
Ödev
Feragatname:
Bu belge, Co-op Translator adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlama veya yanlış yorumlamalardan sorumlu değiliz.