Kategori Arşivi: ‘Python’

Python’da Sınıfların Dünyası: Kapsamlı Bir Bakış

Python, nesne yönelimli bir programlama dilidir ve sınıflar bu dilin temel yapı taşlarından biridir. Nesne yönelimli programlama (OOP), verileri ve işlevleri bir araya getirerek daha organize, modüler ve yeniden kullanılabilir bir kod yazımı sağlar. Python’daki sınıflar, bu paradigmaya uygun olarak objelerin oluşturulmasına ve yönetilmesine olanak tanır.

Sınıf Nedir?

Sınıflar, benzer niteliklere sahip nesneleri temsil etmek için kullanılan bir kalıptır. Bir sınıf, veri öğelerini (nitelikler/özellikler) ve bu veriler üzerinde çalışan işlevleri (metodlar) içeren bir yapıdır.

Yukarıdaki örnekte, Araba adında bir sınıf tanımladık. __init__ metodu bir sınıf örneği oluşturulduğunda otomatik olarak çağrılır ve marka, model ve yil niteliklerini atanır. Ayrıca, bilgi metodu, araba nesnesinin bilgilerini döndürmek için kullanılabilir.

Sınıfın Kullanımı

Sınıfları kullanarak nesneler oluşturabilir ve bunları programınızdaki farklı yerlerde kullanabilirsiniz.

Yukarıdaki örnekte, Araba sınıfından iki farklı araba örneği oluşturduk ve her birinin bilgilerini çağırdık.

Kalıtım (Inheritance)

Python’da bir sınıfın başka bir sınıftan miras alabilmesi mümkündür. Bu özellik, kodun tekrar kullanılabilirliğini artırır.

ElektrikliAraba, Araba sınıfından miras alarak batarya niteliğini ekler ve tam_bilgi metodunu tanımlar.


ElektrikliAraba sınıfı, Araba sınıfının özelliklerini ve metodlarını kullanırken kendi özel niteliklerini ve metodlarını da içerir.

Özel Metodlar (Dunder Methods)

Python’da çeşitli özel metodlar (çift alt çizgi ile başlayan ve biten metodlar) bulunur. Bu metodlar, özel davranışlar eklemek için kullanılır.

__str__ metodu bir nesne metni (string) olarak temsil edilmesini sağlarken, __len__ metodu nesnenin uzunluğunu belirtir.

Pass Nedir  ?

pass, Python’da bir ifade veya bloğun hiçbir şey yapmamasını sağlayan bir ifade olarak kullanılır. Genellikle bir yerhalinde bir şey yapılması gerektiği, ancak programın çalışması için şu an için bir şey yapılmasının gerekmediği durumlarda kullanılır.

Örneğin, bir fonksiyon, sınıf veya döngü tanımlarken içeriği daha sonra doldurulacaksa ve geçici olarak bir şey yapılmasına gerek yoksa pass kullanılabilir. Bu durumda Python, programın bozulmadan çalışmasını sağlar.

pass aynı zamanda bir sınıf veya fonksiyon tanımlarken de kullanılabilir:

pass kullanımı, sözdizimi açısından gereklilik olsa da işlevsel bir şey yapılmayacağı zamanlarda kullanılır. Bu durumlar, kod geliştirilirken veya yapı henüz tamamlanmadığında oldukça yaygın olabilir.

Sonuç

Python’da sınıflar, nesne yönelimli programlamanın temel taşlarından biridir. Sınıflar, kodunuzu düzenli hale getirmenize, kod tekrarını azaltmanıza ve daha modüler bir yapı oluşturmanıza yardımcı olabilir. Bu yapı, programınızı daha anlaşılır, bakımı kolay ve genişletmeye uygun hale getirir. İyi tasarlanmış sınıflar, Python programlamada güçlü bir araçtır ve kodunuzu daha etkili hale getirmenize olanak tanır.

Kategori Python
24.12.2023
38 Okunma

FastAPI Uygulamasını Heroku’ya Deploy Etmek

FastAPI’ye Giriş

FastAPI, tüm endpointler noktaları için otomatik OpenAPI (Swagger) ve ReDoc belge oluşturma özelliklerine sahip Python tabanlı bir Yüksek Performanslı Web API Çerçevesidir. REST API’lerinin veya Mikro Hizmetlerin hızlı bir şekilde geliştirilmesi için son derece uygundur.

FastAPI, Starlette (Starlette, yüksek performanslı asenkron hizmetler oluşturmak için ideal olan hafif bir ASGI çerçevesi/araç setidir) ve Pydantic (Python türü açıklamaları kullanan bir çalışma zamanı veri doğrulama ve ayar yönetimi) ile tam uyumludur. Starlette’in gücünden yararlanan FastAPI, WebSockets ve GraphQL için tam destek alır.

Ön Gereksinimler

Devam etmeden önce, bu yazıyla ilgileniyorsanız, aşağıdaki listedekilere sahip olmanız/karşılamanız önerilir.

  • Ücretsiz bir GitHub hesabı
  • Ücretsiz bir Heroku hesabı
  • Visual Studio Code IDE (Veya Python programlamayı destekleyen tercih ettiğiniz herhangi bir Programlama IDE’si)
  • Python 3.6 veya en son sürümü yüklü bir bilgisayar

Bu öğreticide Visual Studio Code (VS Code) kullandığınız varsayılır ve bu nedenle adımlarda bu öğreticinin gözden geçirilmesi sırasında VS Code hakkında bilgi verilir.

Ek olarak, bu FastAPI yazısı, programlamaya yeni başlayanları da hedeflemektedir. Bu nedenle, programcı olmayanların da bu öğreticiyi uygulamalarına yardımcı olan adımları mümkün olduğunca ayrıntılı olarak açıklamaya çalışıyorum.

Basit Bir FastAPI Uygulaması Oluşturun

Tek bir endpoint ile çok basit bir FastAPI uygulaması oluşturacağız ve ardından FastAPI uygulamasını Heroku platformuna deploy edeceğiz.

Bu makalenin tam kaynak kodu GitHub’da barındırılmaktadır. Endpointimiz JSON (JavaScript Object Notation) biçiminde bir yanıt döndürecektir.Komut istemini açın ve yeni bir uygulama oluşturmak istediğiniz konuma gidin. fastapi-demo adında bir dizin oluşturun ve aşağıdaki komutları çalıştırarak geçerli dizini bu dizinin üzerine ayarlayın.

Şimdi komut isteminden VS Code’u yazarak başlatın kod . ve enter tuşuna basın. Ya da klasörü vs codeu açtıktan sonra vs code içerisine ekleyebilirsiniz.

code .

PC’de yüklü olan Python Sürümünü kontrol edin

Terminalde aşağıdaki komutu çalıştırarak PC’nizde yüklü olan Python sürümünü kontrol edin.

Python sürüm 3.6 veya sonraki bir sürümünün yüklü olduğundan emin olun. Bilgisayarımda Python 3.8.0 yüklü.

Sanal Ortam Oluşturma

Uygulamaya geçmeden önce,  projemiz üzerinde çalışmak için bir Python Sanal Ortamı oluşturacağız.

Python Sanal Ortamı Windows İşletim Sistemi oluşturma komutu

Windows işletim sisteminden, aşağıdaki komutu yazarak env veya istediğiniz herhangi bir ad adlı bir Sanal Ortam oluşturun

Python Sanal Ortamı Unix tabanlı işletim sistemi oluşturma komutu

Unix tabanlı işletim sisteminden,  aşağıdaki komutu yazarak komut terminalinden env adında bir Sanal Ortam oluşturunuz

Sanal Ortamı Etkinleştirin

Sanal ortamı etkinleştirmek için işletim sisteminize bağlı olarak aşağıdaki komutu yazın.

Windows işletim sistemi için Python Sanal Ortamını etkinleştirme komutu

Unix tabanlı işletim sistemi için Python Sanal Ortamını etkinleştirme komutu

Sanal ortamın başarılı bir şekilde etkinleştirilmesinden sonra, oluşturulan ortamın adının komut satırı terminaline önek olarak ekleneceğini göreceksiniz.

Pip’i Güncelle

pip, Python’da bir modül yükleyicisidir. Basitçe söylemek gerekirse, bizim durumumuzda pip, uygulamamızda kullanabilmemiz için FastAPI modülünü kurmamıza yardımcı olacaktır. pip kendi içinde Python kurulumu ile varsayılan olarak gelen bir modüldür. Pip için sık sık yükseltmeler vardır. Bu nedenle, projemiz için her zaman en son bağımlılıkları alması için pip’i yükseltmek en iyi uygulamadır. pip’i yükseltmek için aşağıdaki komutu çalıştırın.

FastAPI modülünü kurun

FastAPI kullanarak bir Restful API oluşturmak için yalnızca FastAPI ve uygulamaya özel bağımlılıkları yüklemek için aşağıdaki komutu çalıştırın.

Yaklaşım 1: FastAPI İsteğe Bağlı Kurulum

Bu yaklaşımda FastAPI’yi ve ardından Uvicorn’u ayrı ayrı kuruyoruz.

Bu durumda, aşağıdaki komutla uvicorn’u ayrı olarak kurmanız gerekir. Uvicorn, FastAPI uygulamanızı çalıştırmak için altyapı sağlayan bir ASGI (Asenkron Sunucu Ağ Geçidi Arayüzü) sunucusudur.

Bu, FastAPI’nin uygulama geliştirme çerçevesinin çalıştırdığı sunucudan tamamen ayrıldığı anlamına gelir. Bu, FastAPI’nin WSGI (Web Sunucusu Ağ Geçidi Arayüzü) sunucusunda da çalışmasını kolaylaştırır. FastAPI’nin güzelliği budur.

Yaklaşım 2: FastAPI Tam Kurulum

FastAPI’yi Uvicorn ile birlikte kurmak istiyorsanız aşağıdaki komutu çalıştırınız.

Tam kurulumla ilgili zorluklar, bir Windows 10 PC’deyseniz ve Microsoft Visual C++ 14.0’ı yüklemediyseniz, pip’in FastAPI’yi yükleyememesidir. Bu nedenle, başarılı bir kuruluma sahip olmanız için çok büyük bir yazılım olan Microsoft Visual C++ 14.0’ı indirmeniz gerekir. Bu yazılımın yüklü olması gerekli değildir. Bu nedenle, FastAPI’nin İsteğe bağlı kurulumunun Yaklaşım 1’i ile gitmeniz önerilir.

Gunicorn Kurulumu

Heroku’daki uygulamamızı sunmak için Gunicorn kullanıyoruz. Gunicorn’u yüklemek için aşağıdaki komutu çalıştırın.

Tüm proje bağımlılıklarını bir dosyaya kaydetme

Şimdiye kadar, tüm bağımlılıkları kurabiliyoruz. Ancak, gerekli bağımlılıkların yüklenmesini otomatikleştirmek de önemlidir. Bunun nedeni, bu depo diğer geliştiriciler tarafından farklı bir bilgisayarda kullanılıyorsa veya çeşitli başka ortamlara dağıtırsak, kendi başlarına yüklediklerinde modüllerin uygun olmayan sürümleriyle ilgili sorunlarla karşılaşmamaları gerektiğidir. Bu yüzden proje ile ilgili bağımlılıkları donduracağız ve projenin kök dizininden cmd terminalinde aşağıdaki komutu çalıştırarak bir dosyada saklayacağız.

Yukarıdaki komut tüm modüllerin sürümlerini yakalayacak ve bunları projenin kök dizinindeki requirements adlı bir metin dosyasına yazacaktır. Dosyanın adı sizin seçiminizdir, ancak requirements.txt en yaygın olarak Python topluluğu tarafından kullanılır.requirements.txt dosyasında belirtilen bağımlılıkları kurmak için tek yapmanız gereken aşağıdaki komutu çalıştırmaktır.

Yukarıdaki komut, requirements.txt dosyasını satır satır okuyacak ve dosyada belirtilen belirli sürümlere sahip tüm paketleri yükleyecektir.

FastAPI’de Basit Bir Uç Nokta Oluşturun

Basit bir JSON döndüren bir GET endpoint’i oluşturacağız. Bunun için  fastapi-demo projemizin kök dizininde main.py isminde bir dosya oluşturun.

FastAPI modülünü içe aktarın ve başlatın

main.py aşağıdaki satırı ekleyin, böylece fastapi modülü tarafından sunulan FastAPI adlı sınıf yardımıyla endpoint’imizi oluşturmaya başlayabiliriz.

 

Şimdi aşağıdaki gibi basit bir JSON nesnesi döndürmek için bir endpoint oluşturacağız.

 

GET Uç Noktasını Uygulama

Main.py dosyası aşağıdaki gibi olacaktır.

Yukarıdaki kodda def anahtar kelimesi ile hello isminde  bir metot tanımladık. Bu yöntemin yaptığı tek şey,  Python’da sözlük türünde bir nesne döndürmektir.

#1 çizgisi, tüm sihrin gerçekleştiği yerdir. @app.get(“/”) hello yöntemimizin dekoratörüdür  ve bu yöntemi GET HTTP yöntemi isteklerini kabul eden bir uç noktaya dönüştürür. Bizim  durumumuzda uygulamaya atanan FastAPI örneği  , sözlük türünün dönüş değerini otomatik olarak  JSON biçimi.

FastAPI uygulamasını yerel PC’de çalıştırın

Oluşturduğumuz Python ortamının aktif olduğu komut istemine aşağıdaki komutu yazıp enter tuşuna basın.

  • Yukarıdaki komut ile aşağıdaki altyapı ayarları ile Uvicorn ASGI sunucusuna çağrı çağırıyoruz.
  • host 127.0.0.1, uvicorn’u uygulamamızı PC’nin localhost’unda çalıştıracak şekilde yapılandırdığımız anlamına gelir. host parametresi için diğer olası değerler 0.0.0  veya localhost’tur.  FastAPI’yi üretim ortamlarına dağıtırken 0.0.0.0 önerilir.
  • 5000 numaralı port, uygulamamızın çalışmasını istediğimiz porttur. Bu bağlantı noktasında zaten çalışan başka bir uygulamanız veya hizmetiniz varsa, yukarıdaki komut yürütülemez. Böyle bir durumda, uygulamanın kullanması için ücretsiz olarak kullanılabilir olduğu tespit edilen seçtiğiniz başka bir dört basamaklı sayıyla değiştirmeyi deneyin.
  • yeniden yükle Bu bayrağın yalnızca geliştirme amacıyla ayarlanması önerilir. Bu bayrağın etkinleştirilmesi, geliştirme sırasında kodunuzda yaptığınız değişikliklerle uvicorn sunucusunu otomatik olarak yeniden başlatır. Herhangi bir çalışma zamanı hatası olması durumunda, uvicorn sunucusunun yeniden başlatılamamasına neden olan hata izinden bu değişiklikleri hızlı bir şekilde tanımlayacağınız açıktır.
  • reload bayrağı, modern JavaScript kitaplıklarıyla birlikte gelen sıcak kod yeniden yükleme özelliği ile karıştırılmamalıdır. React ve Vue tarafından sağlanan uvicorn’un yeniden yüklemesi ile sıcak kod yeniden yüklemesi arasındaki temel fark, uvicorn’un yeniden yüklemesinin sunucuyu yeniden başlatması ve sıcak kod yeniden yüklemesinin hem sunucuyu yeniden başlatması hem de kullanıcı arayüzünü yeniden yüklemesidir.
  • main:app Bu, aşağıda ayrıntılı olarak açıklandığı gibi bir model izler.
    • main, FastAPI’nin başlatıldığı modüldür. Bizim durumumuzda, sahip olduğumuz tek şey kök düzeyinde main.py. FastAPI değişkenini diğer dizinlerin altında bir yerde başlatıyorsanız, uvicorn’un yapılandırmayı doğru bir şekilde tanımlayabilmesi için bir __init__.py dosyası eklemeniz ve bu modülü kullanıma sunmanız gerekir. Bizim durumumuzda ana modül olur.
    • app, FastAPI örneğiyle atanan değişkenin adıdır. Bu adları değiştirmekte özgürsünüz, ancak module-name:fastapi-initialization-variable desenini izleyen aynı sözdizimini yansıtıyorsunuz.

Seçtiğiniz bir tarayıcıda aşağıdaki uç noktaya giderek uygulamaya erişin ve uygulamayı görün.

FastAPI kullanarak bir Web API’si uygularken, isteği Postman veya Postwoman gibi herhangi bir API geliştirme aracı aracılığıyla bu uç noktaya göndermeniz önerilir. Postman, API geliştirme ve test etme için bir yazılımdır. Bir API’ye gönderilen istekleri özelleştirmenize olanak tanır. İstekte GET, PUT, POST, DELETE gibi özel HTTP Fiilleri gönderme ve yetkilendirme veya içerik anlaşması gibi özel başlıklar ekleme gibi özellikler. Ancak basit uç noktamız için tarayıcı aracılığıyla bir GET isteği göndermekte sorun yok.

Tarayıcıda, Merhaba Tutlinks.com mesajını içeren JSON yanıtını göreceksiniz. Başarılı, örnek yanıtla basit bir Web API’si oluşturma konusunda uzmanlaştınız.  Bunu, ücretsiz hesaplarla sınırlı dinozorlar sunan Heroku gibi üretim ortamlarına nasıl dağıtacağınızı anlamanız her zaman önerilir. Bu yetenek, çalışmalarınızı arkadaşlarınıza, iş arkadaşlarınıza göstermenize veya teknik becerilerinizle övünmek için çalışmalarınızı LinkedIn gibi profesyonel ağ sitelerinde paylaşmanıza yardımcı olacaktır.

Heroku için Dağıtım Yapılandırması Procfile Oluşturma

Procfile, Heroku’ya özgü bir dosyadır ve Heroku’da gerçekleşen etkin bir dağıtım sırasında dağıtım yapılandırmaları tarafından okunur. Heroku otomatik olarak Procfile’ın varlığını arar ve içinde bulunan komutları yürütür.

FastAPI uygulamasını Heroku’ya Dağıtma Komutu

Herhangi bir uzantı olmadan Procfile adlı bir dosya oluşturun  . FastAPI uygulamanızı Procfile’daki Heroku’da çalıştırmak için aşağıdaki komutu yerleştirin.

  • web: yanındaki komutla bir web uygulamasını başlatmak için Heroku dağıtım işlemini tanımlamaya yardımcı olacak Procfile komut kuralına özgüdür.
  • gunicorn, uygulamamızı aşağıdaki yapılandırmayla çalışacak şekilde yapılandırdığımız WSGI sunucusudur.
  • -w 4 uygulamamızın gunicorn üzerinde 4 worker process ile çalışmasına ihtiyacımız olduğunu belirtir.
  • -k uvicorn.workers.UvicornWorker, gunicorn’a uygulamayı workers.UvicornWorker worker worker sınıfını kullanarak çalıştırmasını söyler.
  • main:app, FastAPI() uygulamamızın başlatıldığı ana modülümüzdür.

Ana bilgisayarı ve bağlantı noktasını da belirtebilirsiniz. Ancak Heroku bunları otomatik olarak çözecek ve bu demo için ekstra bir yapılandırmaya gerek yok.

Deponuzu GitHub’a gönderme

GitHub, yazılımla ilgili kod dosyalarınızı barındırmak için açık bir platformdur. Kodunuzu herkese açık olacak şekilde yapılandırabilir veya ihtiyacınıza göre özel hale getirebilirsiniz. GitHub’da yeniyseniz, bunun için gidin ve ücretsiz kaydolun. Mevcut projenizi GitHub’a eklemek için bu ayrıntılı öğreticiyi izleyin.

Heroku’da FastAPI Dağıtımını Yapılandırma

Henüz sahip değilseniz ücretsiz bir Heroku hesabı için kaydolun. Heroku, geliştiricilerin uygulamaları tamamen bulutta oluşturmasına, çalıştırmasına ve çalıştırmasına olanak tanıyan bir hizmet olarak platformdur (PaaS). Doğrulanmış bir e-posta hesabıyla kaydolduktan sonra, bir uygulama oluşturmaya devam edin.

Heroku’da uygulama oluşturma ve yapılandırma

Heroku’da Uygulama Oluştur

  • Kayıtlı e-posta ile doğrulanmış Heroku hesabınıza giriş yapın.
  • Kontrol panelinde Yeni uygulama oluştur düğmesine tıklayın. Zaten uygulamalarınız varsa, Yeni’ye tıklayın ve Yeni uygulama oluştur’u seçin.
  • Kullanılabilir bir Uygulama adı verin . Uygulama adının, kendisine kayıtlı tüm kullanıcılardaki diğer tüm Heroku uygulamalarında benzersiz olması gerektiğinden emin olmalısınız. Aksi takdirde Heroku, uygulamayı oluşturmanıza izin vermez.
  • Bir bölge seçin veya Amerika Birleşik Devletleri olarak seçilen varsayılan bölgeye bırakın
  • Dağıtım işlem hattı yapılandırmak istemiyorsanız İşlem hattına ekle seçeneğini yoksayın.
  • Uygulama oluştur düğmesine tıklayın.
  • Ardından Vscode üzerinden aşağıdaki adımları takip ediniz.

Install the Heroku CLI

Download and install the Heroku CLI.

If you haven’t already, log in to your Heroku account and follow the prompts to create a new SSH public key.

Clone the repository

Use Git to clone fastapi-demo1’s source code to your local machine.

Deploy your changes

Make some changes to the code you just cloned and deploy them to Heroku using Git.

GitHub’a bağlanma

  • Dağıtım yöntemi altında GitHub seçeneğini belirleyin ve GitHub’a bağlanın.
  • İlk kez kullanıcıların, deponun gönderildiği hesapta oturum açarak GitHub hesabını bağlaması gerekir. Mevcut kullanıcılar, bir depoda arama yapma seçeneğini otomatik olarak görecektir.
  • Bağlandıktan sonra, bağlanmak için bir depo arayın. GitHub’da yeni bir depo oluştururken verdiğiniz ada göre depoyu arayın.
  • Arama sonuçlarında FastAPI uygulamamızın bulunduğu depoyu bulun ve bağlanın.

GitHub’dan Heroku’da Otomatik Dağıtımı Yapılandırma

Depoya başarıyla bağlandıktan sonra Otomatik Dağıtımları Yapılandır seçeneğini görürsünüz. Ana dağıtıma dağıtılacak bir dal seçin  seçeneğini bırakın ve Otomatik Dağıtımları Etkinleştir’e tıklayın. Bu ayar, yeni kod değişikliklerini ana dala her gönderdiğinizde en son değişiklikleri derleyen ve yayımlayan dağıtımı otomatik olarak tetikler. El ile dağıtma bölümünden, ana olarak dağıtılacak dalın adını girin ve Dalı Dağıt’a tıklayın.

Dağıtım işleminin tamamlanmasını bekleyin. İşiniz bittiğinde, Uygulamanız başarıyla dağıtıldı ifadesini görmeniz gerekir.Heroku’ya dağıtılan ilk Python tabanlı FastAPI uygulamanızı görmek için Görüntüle  düğmesine
tıklayın.????

Video öğretici

FastAPI’nin temellerine aşina olmanız durumunda, FastAPI uygulamasını Heroku’ya nasıl dağıtacağınızı anlamak isteyebilirsiniz. Aşağıdaki eğitim videosu, bunu sadece 6 dakika içinde yapmanız için size rehberlik edecektir.

Source : https://tutlinks.com/create-and-deploy-fastapi-app-to-heroku/#introduction-to-fastapi

Kategori Python
12.12.2023
60 Okunma

LOF (Local Outlier Factor)

LOF (Local Outlier Factor), yerel aykırı değer faktörü anlamına gelir. LOF algoritması, veri kümesindeki her bir veri noktasının yerel yoğunluk profiline dayanarak aykırı değerleri tespit etmek için kullanılan bir aykırı değer tespit algoritmasıdır.

LOF algoritması, bir veri noktasının çevresel komşuluk yapısını değerlendirir ve bu noktanın yerel yoğunluk seviyesini hesaplar. Bir veri noktasının yerel yoğunluğu, çevresindeki diğer noktalara olan yakınlığına göre belirlenir. Eğer bir veri noktası çevresindeki diğer noktalara göre beklenenden uzak bir şekilde izole ise, bu nokta bir aykırı değer olarak etiketlenir.

LOF algoritmasının temel prensibi şu adımlarla çalışır:

  • Her veri noktası için, belirli bir komşuluk yarıçapı içindeki diğer noktaların sayısı belirlenir. Bu komşuluk yarıçapı, kullanıcı tarafından belirlenir veya otomatik olarak belirlenir.
  • Her bir veri noktasının LOF değeri hesaplanır. LOF değeri, bir veri noktasının çevresel komşularının yoğunluğu ile kendi yoğunluğu arasındaki oranı ifade eder. Daha yüksek LOF değerleri, o veri noktasının aykırı olduğunu gösterir.
  • LOF değerleri incelenir ve kullanıcının belirlediği bir eşik değere göre aykırı değerler tespit edilir.

LOF algoritması, veri madenciliği ve aykırı değer tespiti gibi alanlarda yaygın olarak kullanılan bir algoritmadır. Aykırı değerlerin tespiti ve analizi, dolaylı olarak hile tespiti, dolandırıcılık analizi, ağ güvenliği, sağlık analizi ve daha pek çok uygulama alanında kullanılabilir.

 

“Diamonds” veri setinde LOF algoritması ile aykırı değerleri tespit edelim. “diamonds” veri seti, seaborn kütüphanesinde yer alan örnek bir veri setidir ve içinde elmasların özelliklerini içeren bilgiler bulunmaktadır.

Öncelikle, “diamonds” veri setini yükleyip inceleyelim ve LOF algoritması ile aykırı değerleri tespit edelim.

Bu kod örneğinde, “carat” (kütle) ve “price” (fiyat) sütunlarını kullanarak LOF algoritması ile aykırı değerleri tespit ediyoruz ve scatter plot ile görselleştiriyoruz. Aykırı değerler, kırmızı renkle işaretlenmiştir. Aykırı değerlerin tespiti için kullanılan LOF parametrelerini (örneğin, n_neighbors ve contamination) değiştirerek sonuçları gözlemleyebilirsiniz.

Kategori Python
18.10.2023
68 Okunma

Aykırı Gözlem Örnekler

Tabii, işte aykırı gözlemlere örnekler:

  1. Örneğin:
    • Bir sınıftaki öğrencilerin boyutları ölçüldü ve çoğunlukla 150-180 cm arasında olduğu tespit edildi. Ancak, bir öğrencinin boyu 220 cm çıkıyorsa bu bir aykırı değer olabilir.
  2. Örneğin:
    • Bir e-ticaret sitesindeki ürün fiyatları incelenirken, genellikle belirli bir aralıkta olan fiyatların dışında, çok yüksek bir fiyatla satılan bir ürün.
  3. Örneğin:
    • Bir restoranın günlük müşteri sayısına ilişkin veriler incelenirken, diğer günlerle karşılaştırıldığında beklenmeyen şekilde düşük ya da yüksek müşteri sayısına sahip bir gün.
  4. Örneğin:
    • Bir şehirdeki ortalama gelir düzeyi üzerine yapılan bir araştırmada, diğer kişilerin gelirleriyle karşılaştırıldığında belirgin şekilde yüksek bir gelire sahip kişi.
  5. Örneğin:
    • Bir sağlık merkezinde yapılan kilo ölçümlerinde, diğer hastaların ağırlığına kıyasla belirgin şekilde farklı ağırlıkta olan bir hasta.
  6. Örneğin:
    • Bir şirketin maaş verilerinde, çalışanların çoğunun ortalama maaş düzeyinde olduğu gözlenirken, bazı çalışanların çok yüksek ya da çok düşük maaşa sahip olması.
  7. Örneğin:
    • Bir sigorta şirketinin sigorta poliçeleri için ödenen primlerde, diğer poliçelere kıyasla çok yüksek prim ödenen bir poliçe.
  8. Örneğin:
    • Bir online alışveriş platformunda yapılan alışverişlerde, alışveriş tutarlarındaki genel eğilime uygun olmayan çok yüksek bir alışveriş miktarı.
  9. Örneğin:
    • Bir otelde müşterilerin oda fiyatlarına ilişkin veriler incelenirken, belirgin şekilde diğerlerinden farklı bir fiyatla kiralanan bir oda.
  10. Örneğin:
  • Bir akademik sınavda, diğer öğrencilerin notlarına göre belirgin şekilde yüksek ya da düşük bir not alan bir öğrenci.
Kategori Python
15.10.2023
57 Okunma

Veri Önişleme Basamakları

Elbette! İşte her bir madde için günlük yaşamdan veya genel geçer örneklerle açıklamalar:

  1. Veri Temizleme:
    • Örnek: Bir anket sonucunda katılımcılar bazı soruları atlayabilir veya yanlış cevaplar verebilir. Bu durumda, veri temizleme işlemi ile eksik veya hatalı cevaplar düzeltilir ya da çıkarılır. Örneğin, yaş bilgisi için yanlış girilmiş 150 yaş gibi anormallikleri temizlemek.
  2. Veri Standardizasyonu ve Normalizasyonu:
    • Örnek: Bir veri setindeki gelir bilgileri genellikle farklı ölçeklerde olabilir. Dolayısıyla, bu gelir bilgilerini 0-1 aralığına normalize ederek, farklı büyüklükteki gelirleri aynı ölçekte karşılaştırabiliriz.
  3. Ayrık ve Sürekli Değişkenlerin Dönüşümü:
    • Örnek: Bir e-ticaret platformunda, bir kullanıcının satın alma geçmişi (sürekli) ve alışveriş kategorileri (ayrık) farklı türlerde verilerdir. Bu verilerin uygun şekilde dönüştürülmesi analizlerde önemlidir.
  4. Boyut Azaltma:
    • Örnek: Bir görüntü işleme projesinde, yüksek çözünürlüklü görüntülerdeki gereksiz bilgilerin (örneğin, gürültü) çıkarılması için boyut azaltma kullanılabilir. Bu, hem işlem süresini azaltır hem de önemli bilgilerin çıkarılmasına yardımcı olur.
  5. Outlier (Aykırı Değer) Tespiti ve Eleme:
    • Örnek: Bir hava durumu veri setinde, sıcaklık ölçümlerinde anormal derecede yüksek veya düşük değerler olabilir. Bu anormallikler, doğru analizler için tespit edilip eleme işlemine tabi tutulmalıdır.
  6. Veri Düzgünleştirme:
    • Örnek: Bir müşteri veri tabanında müşterilerin adres bilgileri tutuluyor. Veri düzgünleştirme, adreslerin tutarlı biçimde yazılmasını sağlar. Örneğin, “str.” yerine “sokak” şeklinde birleştirme.
  7. Hassasiyet (Privacy) Kontrolü:
    • Örnek: Bir sağlık kuruluşunda hastaların kişisel sağlık verilerinin paylaşılması durumunda, bu verilerin gizliliğini sağlamak ve kişisel bilgileri anonim hale getirmek için veri düzenleme yapılır.
  8. Veri Görselleştirme:
    • Örnek: Bir finansal analizde, hisse senedi fiyatları zaman içinde değişiyor. Bu verilerin doğru anlaşılması ve analizi için bu hisse senedi fiyatlarının zaman serileri grafiği çizilebilir. Bu grafik, verilerin trendlerini ve değişikliklerini görsel olarak açıklayabilir.
Kategori Python
15.10.2023
53 Okunma

Binom Dağılımı Nedir. ?

Binom dağılımı, olasılık teorisi ve istatistikte yaygın olarak kullanılan bir olasılık dağılımıdır. Binom dağılımı, belirli bir deneyde başarı veya başarısızlık gibi iki sonuçlu (başarı-başarısızlık, evet-hayır, 1-0) bir olayın belirli sayıda tekrarlanmasıyla ilgilidir.

Bu dağılım, aşağıdaki koşulların sağlandığı durumlar için uygundur:

  1. Her deneme iki sonuçlu (başarı-başarısızlık) ve bağımsızdır.
  2. Her denemede başarı olasılığı (p) sabittir.
  3. Her denemede başarısızlık olasılığı (q = 1 – p) sabittir.

Binom dağılımının olasılık kütlesini hesaplamak için kullanılan formül şu şekildedir: �(�=�)=(��)×��×(1−�)�−� Burada:

  • �(�=�), tam olarak başarıya sahip olma olasılığını temsil eder.
  • , toplam deneme sayısını temsil eder.
  • , başarıların sayısını temsil eder.
  • , her bir denemede başarı olasılığını temsil eder.
  • �=1−�, her bir denemede başarısızlık olasılığını temsil eder.
  • (��) (n faktöriyel bölü k faktöriyel çarpı n – k faktöriyel) kombinasyon sayısını temsil eder.

Binom dağılımı, örneğin belirli bir sayıda madeni para atışının tura gelme sayısını tahmin etme veya belirli bir sayıda doğru cevap alma olasılığını tahmin etme gibi birçok uygulamada kullanılır.

 

Diyelim ki bir madeni paranın tura gelme olasılığı ve bu paranın 10 kez atılacağını düşünelim. Bu durumda, tura gelme sayısının binom dağılımı ile modelleneceğini söyleyebiliriz.

Parametreler:

  • (toplam deneme sayısı): 10 (çünkü madeni para 10 kez atılıyor)
  • (her denemede tura gelme olasılığı): 0.5 (örneğin, adil bir madeni para)
  • (başarı, yani tura gelme sayısı): 0, 1, 2, …, 10

Bu durumda, tura gelme sayısı için olasılıkları hesaplayalım.

Bu kod parçası, 0’dan 10’a kadar olan tura gelme sayıları için binom dağılımı olasılıklarını hesaplar ve bu olasılıkları bir çubuk grafiği ile görselleştirir. Bu durumda, tura gelme olasılığı �=0.5 (adil bir madeni para) ve deneme sayısı �=10 olarak alınmıştır. Çıktıda, her değeri için ilgili olasılıklar görüntülenir.

Kategori Python
12.10.2023
59 Okunma

Büyük Sayılar Yasası Nedir. ?

Büyük Sayılar Yasası (Law of Large Numbers), istatistikte ve olasılık teorisinde önemli bir prensiptir. Bu yasa, büyük bir sayıda bağımsız ve aynı dağılıma sahip rassal değişkenlerin ortalamasının, beklenen değerine (popülasyon ortalaması) yaklaşma eğiliminde olduğunu ifade eder.

Büyük Sayılar Yasası, birçok rassal deneme (örnekleme) yapıldığında, bu denemelerin ortalamasının, deneme sayısı arttıkça beklenen değere (popülasyon ortalaması) yaklaşacağını belirtir. Yani, daha fazla deneme yapıldıkça, elde edilen ortalama değer, gerçek beklenen değere daha yakın olacaktır.

Matematiksel olarak, 1,2,…, şeklinde ifade edilen bağımsız ve aynı dağılıma sahip rassal değişkenlerin ortalaması ˉ ise, Büyük Sayılar Yasası şöyle ifade edilir: lim⁡→∞(∣1+2+…]∣<)=1 Burada:

  • ] rassal değişkenin beklenen değerini (popülasyon ortalaması) temsil eder,
  • küçük bir pozitif sayıdır, ve
  • örnekleme sayısını ifade eder.

Bu formül, büyüdükçe örnekleme ortalamanın beklenen değere yakınsayacağını ifade eder.

Büyük Sayılar Yasası, pratikte istatistiksel sonuçların güvenilirliğini sağlamak ve popülasyon hakkında çıkarımlar yapmak için önemli bir prensiptir. Bu yasa, çok sayıda gözlem yapıldığında ortalamanın beklenen değere yaklaşacağını belirterek güvenilir sonuçlar elde edilmesini sağlar.

Kategori Python
12.10.2023
60 Okunma

Rassal Değişken Nedir. ?

Rassal değişken (veya rasgele değişken), belirli bir deneyin sonucunu temsil eden ve belirli bir olasılık dağılımına sahip olan matematiksel bir değişkendir. Bu değişkenler, bir olayın farklı sonuçlarına sayısal değerler atar ve bu değerlerin her biri belirli bir olasılıkla ilişkilendirilir.

Örneğin, bir zar atma deneyini düşünelim. Zar atışının sonucu 1’den 6’ya kadar olan sayılardan biri olabilir. Bu durumda, bu sayılar rassal değişkenin olası değerleridir. Her bir sayıya atanmış olan olasılık, standart bir zar için her biri 1/6 olacaktır.

Rassal değişkenler iki ana türe ayrılabilir:

Sürekli Rassal Değişkenler: Bu türde, değişkenin alabileceği değerler bir aralık içindedir. Örneğin, kişilerin yaşları gibi.

Kesikli Rassal Değişkenler: Bu türde, değişken belirli değerleri alır ve aralık değildir. Örneğin, bir zar atma sonucu gibi.

Rassal değişkenler, olasılık teorisi ve istatistikte önemli bir rol oynar. Çeşitli deneylerin ve olayların analizinde kullanılırlar ve bu analizler, gelecekteki olayların tahmin edilmesi veya belirli sonuçların olasılığının hesaplanması için kullanılır.

Kategori Python
12.10.2023
66 Okunma

Güven Aralığı Hesaplama

Örneğin, elimizde bir örneklemin ortalama değeri ve standart sapması bulunmaktadır. Bu örnekleme ait 30 veri noktası olduğunu ve %95 güven düzeyi istediğimizi varsayalım. Aşağıdaki adımlarla bu verilerle güven aralığını hesaplayacağız:

  1. Örneklemin Bilgileri:
    • Örneklemin ortalama değeri (): 65.2
    • Örneklemin standart sapması ): 10.4
    • Örneklemin büyüklüğü (): 30
    • Güven seviyesi (%95) için Z-Skoru (): Z-Skoru, %95 güven düzeyi için standart normal dağılım tablosundan alınacak değerdir.
  2. Z-Skorunu Bulma:
    • %95 güven düzeyi için Z-Skorunu bulmak için standart normal dağılım tablosundan bakabiliriz. Bu durumda, ≈1.96 (yaklaşık değer).
  3. Standart Hata Hesaplama:
    • Standart hata () hesaplamak için şu formülü kullanabiliriz: = Bu durumda, ≈10.430≈1.897.
  4. Güven Aralığı Hesaplama:
    • Güven aralığı (CI) hesaplamak için şu formülü kullanabiliriz: CI=Örneklemin Ortalaması±(Z * SE) Güven aralığı, 65.2±(1.96×1.897) olacaktır.

Sonuç olarak, örneklemin ortalama değeri 65.2 ve %95 güven düzeyinde bu örnekleme ait popülasyonun ortalama değerinin tahmini aralığı 62.5 ile 67.9 arasındadır.Ω≈ç√

Bu şekilde, örnekle veriler üzerinden güven aralığını hesaplayabilir ve belirli bir güven düzeyinde parametrenin tahmini değerini ifade eden bir aralık elde edebiliriz.

Kategori Python
12.10.2023
60 Okunma

CategoricalDtype Kullanmanın Olumlu Etkileri

CategoricalDtype kullanmanın olumlu etkilerine odaklanmak için cut sütununun kategorik bir veri tipine dönüştürülmemesi durumunda nelerin eksik olabileceğine ve zorlaşabileceğine bakalım:

  • Sıralama ve Kategori Bilgisi Eksikliği: Eğer cut sütunu kategorik veri tipine dönüştürülmezse, bu sütundaki değerlerin bir sıralama veya öncelik düzeni olmaz. Bu durum, veriyi analiz ederken belirli bir sıralama içinde kategorileri değerlendirmenizi zorlaştırabilir. Örneğin, “Fair” kesim kalitesinin “Ideal” kesim kalitesine göre daha düşük olduğunu belirtmek istediğinizde, bu sıralamanın olmaması anlam karmaşıklığına yol açabilir.
  • Görselleştirme Zorlukları: Veriyi görselleştirirken kategorik değerlerin sıralanabilir olması önemlidir. Eğer kategorik değerler sıralı bir şekilde tanımlanmamışsa, grafiklerde veya grafiklerde bu sıralama yansıtılamaz. Örneğin, bir çubuk grafikle kesim kalitesini sıralı bir şekilde göstermek istediğinizde, sırasız kategorilerle bu görselleştirme daha karmaşık hale gelir.
  • Analiz ve Karşılaştırma Güçlükleri: Kategorik değerlerin sıralanmasının olmaması, veriyi analiz ederken kesim kalitesi gibi kategorileri karşılaştırmayı ve yorumlamayı zorlaştırabilir. Örneğin, en düşük kaliteli kesim ile en yüksek kaliteli kesimi yan yana getirerek karşılaştırmak istediğinizde, sırasız kategorilerle bu karşılaştırma daha karmaşık hale gelir.
  • İstatistiksel Analiz Eksikliği: Kategorik verilerin sıralamasının olmaması, bazı istatistiksel analizleri zorlaştırabilir veya anlamını değiştirebilir. Örneğin, medyan (ortanca) değeri sıralı bir kategori setinde anlamlı bir istatistiksel anlam taşıyabilirken, sırasız bir kategori setinde bu anlamı kaybedebilir.

Sonuç olarak, CategoricalDtype kullanmadan kategorik verilerin sıralamasının eksik olması, veriyi analiz etmek, görselleştirmek ve yorumlamak açısından zorluklara neden olabilir. Kategorik verileri sıralı bir şekilde temsil etmek, veriyi daha anlamlı ve anlaşılır hale getirebilir.

Kategori Pandas, Python
16.08.2023
58 Okunma