- Jupyter Notebook'ta Python kütüphanelerini kullanarak bir makine öğrenimi modeli eğitin
- Eğitimli bir makine öğrenimi modelini Streamlit web uygulamasına dahil edin
Bu dersin etkinlikleri şunlardır:
MAKİNE ÖĞRENİM MODELLERİ İLE ÇALIŞMAK
Jupyter Notebooks, Python ve Streamlit'in bir diğer önemli özelliği, makine öğrenimi modellerini eğitme ve tahminlerde bulunma yeteneğidir.
Yapay Zeka konusunda yeniyseniz, bu müfredattaki AI derslerini inceleyerek temel bilgileri öğrenebilir ve daha sonra buradaki daha ileri düzey kodlama konularına geçebilirsiniz. Teachable Machine gibi kullanıcı dostu bir makine öğrenimi modeli platformunu kullanarak bir model oluşturabilir ve bunu bir Python web uygulamasına entegre edebilirsiniz.
Yapay zeka ve Jupyter Notebooks kullanarak veri setleriyle çalışma konusunda biraz deneyiminiz varsa, bu sizin için iyi bir sonraki adım olacaktır.
Bu derste, Python makine öğrenimi kütüphanelerinden bazılarını ve Python kullanarak oluşturabileceğiniz farklı makine öğrenimi modellerinden bazılarını öğreneceksiniz.
Özetlemek gerekirse, bir makine öğrenimi modeli oluşturmak için 3 ana bölüm vardır.
VERİ KÜMESİ
ÖĞRENME ALGORİTMASIYLA KALIPLARI BULUR
TAHMİN!
Veri kümesi, model için girdiğiniz bilgilerdir. Metin, resim, ses veya pozları içerebilir. 2. Ünite'de Jupyter Notebooks kullanarak metin ve sayısal verilerle çalıştık. Bu derste, elektronik tablo biçiminde metin verileriyle çalışmaya devam edeceğiz.
Desenleri bulmak, esasen veri setini kullanarak makine öğrenimi modelini oluşturmaktır. Python, verilerden bir AI modeli oluşturacak birçok kütüphane içerir. Bu müfredatta, scikit-learn paketindeki birçok işlevi kullanacağız. Sağladığı kütüphanelerin yanı sıra, web sitesi makine öğrenimi ve model oluşturma süreci hakkında birçok mükemmel bilgi içerir. Daha fazla bilgi edinmek için harika bir kaynaktır!
Modelinizi oluşturduktan sonra, model yeni bilgilere dayalı olarak bir sonucu tahmin etmek için kullanılabilir. Python, bunu mümkün kılan kütüphaneler sunmaktadır.
VERİLERİN ÖN İŞLEME
Veri setiniz modeli oluşturmak için algoritmaya gönderilmeden önce, önceden işlenmesiveya "temizlenmelidir", böylece model oluşturma algoritması bu verilerle çalışabilir ve mümkün olan en doğru modeli oluşturabilir. Aslında, makine öğrenimi modeli oluşturma işinin büyük bir kısmı ön işlemede gerçekleşir. Verileri dikkatlice inceleyerek neyin önemli olduğuna, neyin dışarıda bırakılabileceğine ve neyin temizlenmesi gerektiğine karar vermeniz gerekir.
Ön işleme neleri içerir? Metin tabanlı bir veri setinde, ele alınması gereken bazı hususlar şunlardır.
Boş Değerler
Bazen veri kümesi, özellikle anket verileri söz konusu olduğunda, boş veya boş değerler içerir. Bazen boş veriler içeren satırları ortadan kaldırabilirsiniz.
Ancak, örnek sayısı azsa, bunları ortadan kaldırmak istemeyebilirsiniz. Diğer bir seçenek ise boş değeri başka bir değerle değiştirmektir. Bu değer sıfır olabilir veya o alan için diğer tüm değerlerin ortalaması olabilir.
Aykırı değerler
Bazen veriler, diğer verilerden çok farklı olan bir veya iki örnek içerir. Bu, modeli çarpıtabilir. Aykırı değerlerin modelin oluşturulma şeklini etkilemesini istemezsiniz, bu nedenle aykırı değerler genellikle veri kümesinden çıkarılır.
Örneğin, örneklerin %95'inin 10-30 yaş arası kişilerden oluştuğu bir veri kümeniz olabilir, ancak 50 yaşın üzerindeki kişilerin bulunduğu birkaç rastgele örnek de olabilir. Örneklerin büyük çoğunluğu 10-30 yaş grubunda olduğundan, daha yaşlı yaş grubundaki örnekleri kaldırmayı düşünebilirsiniz.
Standardizasyon
Genellikle büyük veri kümelerindeki sayılar, temsil edilen özelliklere bağlı olarak değişiklik gösterir. Örneğin, 0 ile 70 arasında değişen yaş bilgisi olabilir, ancak 0 ile 500.000 arasında değişen maaş bilgisi de olabilir! Ölçekler çok farklı olduğundan, bir özellik modelde daha fazla ağırlıkta olabilir.
Bunu düzeltmek için, verileri tek bir ölçekte olacak şekilde standartlaştırabilirsiniz. scikit-learn, her bir özelliği ortalama 0 ve standart sapma 1 olacak şekilde güncelleyen StandardScaler sağlar.
Dikkate alınması gereken bir diğer husus, her sınıf veya etiket için dengeli bir örnek sayısıdır. Veri kümenizde her sınıfın sayısının yaklaşık olarak aynı olduğundan emin olmalısınız.
Kodlama
AI kelimeleri değil, sayıları sever. Bu nedenle, tüm verilerin sayılara dönüştürülmesi faydalıdır. scikit-learn, Encoder işlevleri sağlar, böylece bir dizi olası metin değerini bir dizi sayıya kolayca dönüştürebilirsiniz.
Bir örnek, hareketsiz, hafif, orta, yüksek gibi örnek değerlerle aktivite seviyeleri olabilir. Bu yanıtlar 0, 1, 2 ve 3 değerlerine kodlanabilir, bu da model oluşturma algoritmasının işlemesi için çok daha kolaydır.
VERİLERİ BÖLME
Verilerinizi ön işleme tabi tuttuktan sonra, bunları bir eğitim kümesi ve bir test kümesi olarak ayırmanız gerekir. Eğitim kümesi, modeli eğitmek ve oluşturmak için kullanılır. Ardından, test kümesini kullanarak modelinizin performansını test edersiniz.
Bunu bölmenin standart yolları vardır (genellikle %75'i eğitim, %25'i test için), ancak istediğiniz şekilde bölebilirsiniz. Yine, işlevler sağlanmıştır, bu nedenle tüm bunlar sizin için otomatikleştirilmiştir.
MODELİN OLUŞTURULMASI
Bir sonraki adım, modeli oluşturmaktır. Alınması gereken önemli bir karar, hangi algoritmayı kullanacağımdır. Seçim yapabileceğiniz birçok farklı denetimli öğrenme algoritması vardır ve hangisini kullanacağınızı bilmek zordur. İyi bir yöntem, birkaç farklı algoritmayı denemek ve hangisinin en iyi doğruluğu sağladığını görmek olacaktır.
İlk adım, bir algoritmaya algoritmasına mı yoksa regresyon algoritmasına ihtiyacınız olduğuna karar vermektir. Bu, neyi tahmin etmeye çalıştığınıza bağlıdır.
Sınıflandırma algoritmaları ayrık hedefleri veya sınıfları tahmin etmek için kullanılır. Örneğin, e-postaları spam veya spam olmayan olarak sınıflandırmak bir sınıflandırma problemi olacaktır.
Regresyon algoritmaları sürekli bir aralıkta yer alan bir şeyi tahmin etmek için kullanılır. Bir örnek, bir kişinin ne kadar maaş alacağını tahmin etmek olabilir. Tahmin, bir sayı aralığıdır ve çıktı, bu aralıkta yer alan herhangi bir değer olabilir.
İşte popüler model oluşturma algoritmalarından sadece birkaçı.
Sınıflandırma
- Karar Ağacı
- Rastgele Orman
- K-En Yakın Komşular
- Naif Bayes
- Lojistik Regresyon
- Destek Vektör Makinesi
Regresyon
- Doğrusal regresyon
- Sırt Regresyonu
- Lasso Regresyonu
- Polinom Regresyonu
- Bayesçi Doğrusal Regresyon
- Destek Vektör Regresyonu
Bazı algoritmaların her iki türe de girdiğini unutmayın. Örneğin, Karar Ağacı Sınıflandırıcı ve Karar Ağacı Regresörü vardır. Destek Vektör Makinesi sınıflandırma için, Destek Vektör Regresyonu ise regresyon için kullanılır.
Peki, hangisini kullanacağınıza nasıl karar vereceksiniz? Diğer veri bilimcilerin farklı durumlarda ne kullandığını araştırarak, modeliniz için neyin uygun olabileceğini görmelisiniz. Ayrıca, verilerinizle farklı algoritmaları denemeli ve hangisinin en iyi doğruluğu sağladığını bulmalısınız. Belirli bir algoritmanın parametrelerini ayarlayarak, daha doğru bir model elde edip etmediğini de görebilirsiniz.
scitkit-learn, tüm bu algoritmalar için işlevler sağlar, bu nedenle modeli oluşturmak oldukça kolaydır.
MODELİN DEĞERLENDİRİLMESİ
Modelinizin mümkün olan en iyi şekilde çalışmasını istiyorsanız, performansını değerlendirmeniz gerekir. Bir modeli değerlendirirken kullanılan iki yaygın değişken, önyargı ve varyanstır.
Önyargı , modelin tahmin ettiği değer ile doğru değer arasındaki farktır.
Varyans , farklı veriler kullanıldığında tahminlerin ne kadar değiştiğidir.
Önyargı ve varyans arasında iyi bir denge sağlamak istersiniz.
Yüksek önyargı -> yetersiz uyum.
Yetersiz uyum , modelin eğitim verilerindeki gürültüyü hesaba katmak için çok basit olması durumunda ortaya çıkar. Bu durum, yeterli veri veya özellik (sütun) olmaması ya da verilerde çok fazla gürültü olması durumunda ortaya çıkabilir. Bir model hem eğitim verilerinde hem de test verilerinde iyi performans göstermiyorsa, bu yetersiz uyumun bir işaretidir.
Yüksek varyans -> aşırı uyum.
Aşırı uyum , bir model bir veri seti üzerinde eğitildiğinde ve çok iyi performans gösterdiğinde, ancak daha sonra yeni veriler sunulduğunda hiç iyi performans göstermediğinde ortaya çıkar. Bu durum, model aşırı karmaşık olduğunda ve eğitim verilerine çok fazla uymaya çalıştığında ortaya çıkabilir. Model, eğitim verileri üzerinde çok iyi tahminlerde bulunabilir, ancak test verileri üzerinde kötü performans gösterebilir.
Bir modelin performansını kontrol etmek için kullanılan tekniklerden biri çapraz doğrulamadır.
Çapraz doğrulama , her seferinde farklı eğitim/test verileri bölümleri kullanarak modelinizi birkaç kez eğitmek anlamına gelir. Veri kümeniz birkaç katveya alt kümeye bölünür. Ardından bir kat doğrulama veya test kümesi olarak ayrılır ve kalan katlar modeli eğitmek için kullanılır. Bu işlem birkaç kez tekrarlanır, böylece her seferinde eğitim ve test kümeleri değişir.
scikit-learn ayrıca bir metrik kütüphanesi sunar, böylece modellerinizin performans puanlarını kolayca elde edebilirsiniz.
- doğruluk puanı = doğru tahminler/toplam tahminler
- kesinlik = doğru pozitifler/(doğru pozitifler + yanlış pozitifler)
- geri çağırma = doğru pozitifler/(doğru pozitifler + yanlış negatifler)
- F1 puanı = (2 x kesinlik x geri çağırma)/(kesinlik + geri çağırma)
- özgüllük = doğru negatif / (doğru pozitifler + yanlış negatifler)
- karışıklık matrisi – doğru pozitif, doğru negatif, yanlış pozitif ve yanlış negatif sayılarını gösterir
Çeşitli algoritmalardan elde edilen metrikleri kontrol ederek en iyi modeli seçebilirsiniz.
TAHMİN!
Memnun olduğunuz bir model elde ettiğinizde, bunu uygulamanızda kullanmak istersiniz.
Jupyter Notebooks gibi bir ortamda Python kullanarak modelinizin ön işleme, oluşturma ve değerlendirme işlemlerini yapmak yaygın bir uygulamadır. Buradan modelinizi bir dosya olarak dışa aktarabilirsiniz.
Ardından, Streamlit uygulamanızda modeli yükleyebilir ve tahminlerde bulunmak için kullanabilirsiniz.
Bu dersin etkinliklerinde, inme riski veri setini kullanarak tüm bu süreci uygulayacaksınız. Verileri ön işleme tabi tutmayı, farklı algoritmalar kullanarak modeller oluşturmayı ve ardından basit bir Streamlit uygulamasında modeli kullanarak bazı girdi özellikleri göz önüne alındığında inme riskini tahmin etmeyi öğreneceksiniz.
AKTİVİTE 1: JUPYTER NOTEBOOK'TA BİR AI MODELİ EĞİTİMİ
AI modeli oluşturmak için İnme Riski Veri Setini keşfedin
- Kaggle 'dan inme tahmini veri setini indirin.
- Jupyter Notebook'ta verilerle çalışarak şunları yapabilirsiniz:
- Verileri inceleyin
- Verileri modele hazırlamak için ön işleme tabi tutun
- Farklı modeller oluşturun
- Uygulamanız için bir model değerlendirin ve seçin
- Modeli dışa aktarın
ZORLUK
Jupyter Notebook'taki modellerden farklı bir model deneyin.
- Scikit-learn web sitesinde diğer sınıflandırma algoritmalarını araştırın ve Kaggle'da diğer model oluşturma örneklerine bakın.
- Bir algoritma seçin ve modeli oluşturmak için kodu not defterinize ekleyin.
- Doğruluğu kontrol etmek için scikit-learn metriklerini kullanın.
Modelinizin performansı nasıl? Defterdeki diğer algoritmalardan daha mı iyi?
AKTİVİTE 2: TAHMİN UYGULAMASI OLUŞTURMA
Modelinizi Streamlit Uygulamasında kullanın
Uygulamanızı nasıl kodladığınıza bağlı olarak, yerel olarak Visual Studio Code ile mi yoksa çevrimiçi olarak Codespaces ile mi uygun videoyu seçin.
ZORLUK
Iris veri kümesi, iris çiçeklerini petal ve sepal boyutlarına göre 3 türe (setosa, versicolor ve virginica) ayıran klasik bir veri kümesidir.
- Veri kümesinin özelliklerini ve hedeflerini öğrenmek için biraz araştırma yapın.
- Veri setini indirebilir ve kendi modelinizi oluşturabilir veya K-en yakın komşular kullanılarak oluşturulan bu modeli (pickle dosyası) kullanabilirsiniz. Bu veri kümesi için ölçeklendiriciye gerek olmadığını unutmayın. Pickle dosyası sadece modeli içerir.
- Modeli içe aktarın ve dört veri kümesi özelliğine dayalı olarak iris türlerini tahmin etmek için bir Streamlit uygulaması oluşturun.
TEKNOLOJİK YENİLİK İLHAM
İşte, Python ve Streamlit kullanarak makine öğrenimi modellerini içeren web uygulamaları geliştiren Technovation katılımcılarının oldukça etkileyici örnekleri.
T.E.D.D.Y – Gençler için Metin Tabanlı Erken Tehlike Dedektörü, ABD'deki TEDDY Ekibi, öğretmenlere ve danışmanlara öğrencilerin zihinsel sağlık sorunlarını erken aşamada tespit etmede yardımcı olur. TEDDY, yapay zeka kullanarak olumsuz duyguları ifade eden veya depresyon hastalarında görülen dil kalıplarını gösteren cümleleri tespit eder. Ardından, öğrenciler destek almak üzere bir danışmana yönlendirilebilir.
YANSIMA
Bir veri kümesini ön işleme tabi tutma, birkaç model oluşturma ve bunları değerlendirip uygulamada kullanılacak modeli seçme sürecinin tamamını tamamladınız. Bu, tek bir derste öğrenilecek çok fazla şey demek!
ANAHTAR TERİMLERİN GÖZDEN GEÇİRİLMESİ
- Ön işleme – bir veri kümesini alıp, içindeki verilerin makine öğrenimi modelini eğitmek için uygun olduğundan emin olmak
- Sınıflandırma algoritması – ayrık değerleri sınıflandıracak veya tahmin edecek bir makine öğrenimi modelini eğitmek için kullanılan algoritma
- Regresyon algoritması – makine öğrenimi modelini, sürekli bir aralıktaki bir değeri tahmin etmek üzere eğitmek için kullanılan algoritma
- Önyargı – modeli basitleştiren yanlış varsayımlar nedeniyle modelin tahmin ettiği değer ile doğru değer arasındaki fark
- Varyans – bir model yeni verilerle karşılaştığında genelleme yapamadığı durumlarda model tahminlerindeki değişkenlik miktarı
- Aşırı uyum – modelin eğitim verilerine çok iyi uyması nedeniyle yeni veriler üzerinde iyi tahmin yapamaması, modeldeki yüksek varyansın neden olduğu durum
- Underfitting – modelin çok fazla basitleştirilmesi ve yüksek önyargı veya varsayımlar nedeniyle eğitim veya test verilerinde iyi performans gösterememesi durumu
EK KAYNAKLAR
Makine Öğrenimi
- Geeks for Geeks Makine Öğrenimi Eğitimi - makine öğrenimi süreci ve terminolojisinin bir kısmına harika bir giriş ve genel bakış sunar.
- Simplilearn’ın Scikit-Learn eğitimi – Jupyter Notebook'ta scikit-learn kullanımı pratiği yapmak için şarap kalitesi veri setini inceler.
- scikit-learn ile Makine Öğrenimi – Data School tarafından hazırlanan eksiksiz bir Youtube oynatma listesi
Streamlit
- Patrick Loeber ile Sıfırdan Makine Öğrenimi Web Uygulaması Oluşturma – bir model oluşturup bunu web uygulamasında kullanmanın baştan sona bir başka örneği.
- Streamlit ile Görüntü Sınıflandırıcı, modeliniz görüntüler üzerinde eğitilmişse
