Python kursunda programlamanın temel konuları dışında veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konuları için gerekli temel konular anlatılır. Ancak bu kurs belirtilen konular dışında da Python programlama ile ilgili alanları da kapsar.Python kursunda programlamanın temel konuları dışında veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konuları için gerekli temel konular anlatılır. Ancak bu kurs belirtilen konular dışında da Python programlama ile ilgili alanları da kapsar. Başka bir deyişle, Python dili ile geliştirme yapmak isteyen kişilerin bilmesi gereken hemen her şeyi içermektedir.
Python İle Programlama
Temel Konular
Python dili ile betim (script) yazmak için gereken söz dizimi (syntax) öğeleri bilinmelidir. Her dilde olan, ekrana basma (echo) ve ekrandan girdi okuma (read input) işlemleri öğrenilmelidir. Temel konular arasında değişken (variable) kavramı ve veri türleri (data types) iyi anlaşılmalıdır. Özellikle sicim (string) ve sayı (number) türleri en çok bilinmesi gereken veri türleri arasındadır. Python diliyle işlenen verilerin çoğu sicim ve sayı türündedir.
Her yazılım geliştirme dilinde olduğu gibi Python dilinde de akış denetimi (flow control) adı verilen yapılar kullanılır. Örneğin koşul (condition) yapıları için if-else (ise-değilse) ve açkı (switch) yapısı kullanılır. Dilde döngü (loop) yapılarından için (for) ve sürece (while) bilinmelidir. Bu yapılar, verileri satır satır alıp okumak ve işlemekte kullanılır.
Gelişmiş Yapılar
Python dilinde temel yazılım geliştirme özellikleri dışında gelişmiş yapılar da bulunur. Bunlardan işlev (function), sık sık yapılan işlerin bir kez yapılıp sürekli kullanılmasını sağlar. Bir çok işlevden oluşan ve modül (module) adı verilen, ayrı dosyalarda tutulan kod parçaları da yazılabilir. Yazılan kodda bir modülü kullanmak için içe alma (import) işlemi yapılır. Söz konusu araçlar temelin ötesinde gelişmiş uygulamalar yazmak gereklidir ancak bir çok kişi bu biçimde yazdığı için öğrenilmeleri çoğu durumda koşuldur.
Birden çok veriyi tutmak için dizi (array) adı verilen yapılar bulunur. Python dilinde dizilerin kullanımı oldukça kolaydır ve bir çok gelişmiş özellik içerir. Ancak kimi zaman sağladığı çok sayıda kolaylığı öğrenciler karıştırabilmektedirler. Dizi dışında daha gelişmiş veri tutma özelleri barındıran dizelge (list), sözcük (dictionary) ya da kimi dillerde bilinen adıyla eşlem (map), küme (set) gibi biriktiri (collection) yapıları da bulunmaktadır. Birbiriyle ilintili veriler, örneğin kayıtları tutmak için demet (tuple) adı verilen bir yapı bulunur. Bunlar verilerin toplu bir biçimde işlenmesi için gereklidir. Çoğu sorunu çözmek için yukarıdaki veri yapılarından biri veya bir kaçı birlikte kullanılır.
Nesne-Yönelimli İzlendirme (Object-Oriented Programming)
Python dili işlevsel izlendirme (functional programing) adı verilen, kod yazımını bir takım işlev (function) yapılarıyla gerçekleştirmek ve gerektiğinde bunları çağrımak biçiminde yapılan tekniği desteklediği gibi nesne-yönelimli izlendirme (object-oriented programming) adı verilen tekniği de destekler. Buna göre belli bir konuyla ilgili değişken (variable) ve işlev (function) birimleri bir arada sınıf (class) adı verilen karmaşık tür bildirimleri yapılır ve bunlardan nesne (object) ve örnek (instance) adlı karmaşık veri tutan yapılan üretilir.
Uygulama ve Örnekler
Eğitimlerde temel konularda uzun uzun örnekler yapılması yerine, daha ileri konularda bunları yerinde kullarak anlatılması yoluna gidilmektedir. Özellikle daha önce başka bir programlama dilinde çok temel yapıları genel olarak da olsa bilenler için giriş konularında takılmak yerine ileri konular çabuk geçiş sağlanması konuların iyi anlaşılmasını sağlayabilir. Örnekler bir tablonun ve onun satırlarının üzerinde çalışma, verileri sicimden sayıya ya da sayıdan sicime dönüştürme ve sicimler üzerinde kimi değişiklikler yapma biçiminde gerçekleştirilmektedir. Bu işlem de veri bilimi gibi veriler üzerinde işlem yapan konular için öğrenilmesi koşul olan konulardır. Başka bir deyişle, örnekler kuramsal değil gerçek yaşamdaki uygulamalara göre belirlenmektedir.
Veri Dosyaları, İşleme ve Görselleştirme
Dosyalar
Python dilinde sırtlı (dosya - file) işlemleri için bir çok destek bulunur. XML, JSON ve CSV gibi bir çok veri saklama biçimlenmesinde yazılmış dosya Python dilinde kolayca okunabilir veya bunlara yazma yapılabilir. Öte yandan örün (web) ve veritabanı (database) işlemleri için kullanılan sunucuya göre bir betiklik (library) yüklemek gerekebilir. Bu yolla HTML, SQL ve NoSQL gibi konularda destek sağlanmış olur. Python dilinde veriler çoğunlukla dosyalar biçiminde girdi olarak alınır ve sonuçlar da dosya biçiminde çıktı olarak verilir. Bunun en önemli nedeni işlenecek verilerin veritabanı gibi kaynaklardan gelmesi ve bu kaynaklara doğrudan bağlanmak yerine onlardan dışa alma (export) ile edinilmiş dosyalarda çalılmasıdır. Bu biçimde Python geliştiricisi veritabanlarıyla doğrudan uğraşmak durumunda kalmaz. Öte yandan, sonuçların dosya olarak üretilmesi de bunları işlenmek üzere OpenOffice veya Microsoft Office gibi uygulamaların kullanabilmesini sağlar. Bu nedenler bir çok veri işleme süreci dosyadan ana verileri alıp sonuçları dosyalara üretir.
Çizitler (Charts) ve Graphics (Çizgeleme)
Python dili için matplotlib gibi bir çok betiklik (library) çizim yapmaya olanak verir. Desteklenen işlemler histogram ve pasta gibi çizit (chart) yapıları ve analitik geometri gibi konular için çizgeleme (graphics) yapma gibi işlemler sayılabilir. Söz konusu betiklik Python dilindeki dizi (array) ve demet (tuple) benzeri yapıları doğrudan destekler. Örneğin bir demet dizisini parametre olarak verip, hangi sütunlarda hangi işlemler yapılacağı söylenirse ona göre bir çizit oluşturulabilir. Python gibi diller verilerin işlenmesi dışında görselleştirme (visualization) için de kullanıldığı için çizgeleme araçları önemli bir işlev görürler. Dahası, bir çok kişi Python dilini, başka araçlarında eklenmesiyle birlikte R veya MATLAB gibi bir matematik uygulaması gibi kullanır. Bu nedenler görselleştirme bilinmesi gereken önemli bir konu durumundadır.
Örnekler ve Uygulama
Eğitim boyunca gerçekte kullanılan veri türlerinden olşturulmuş dosya türleriyle çalışılmaktadır. Özellikle veri bilimi (data science) için veritabanlarından dışa alma (export) ile edinilmiş dosyaların okunması üzerinde durulur. Verilerin okunduktan sona sayımbilim (statistics) özetlerinin çıkarılması ve çizgeleme (graphics) ile kullanıcıya gösterilmesi biçiminde örnekler yapılmaktadır. Bu örnekler Python ile yapılan; matematik, bilim (fen), teknoloji ve iş dünyasında gerçekten kullanılan yöntemlere bir taban oluşturmaktadır. Buradaki örnekleri anlayarak yapabilenler için sonraki konuları anlamak daha kolay olacaktır.
Yararlı Betiklikler
İşletim Düzeni (Operating System)
Python dili ile işletim düzeni (operating system) ile ilgili bir çok işlev bulunmaktadır. Bunlar arasında kütükleme (logging), süreçler (processes), yivler (threads) gibi konular sayılabilir. Bunların dışında güvenlik (security) ilgili destek ileri düzeydedir. Python dili, ilk başlarda veri bilimi gibi bir alan için kullanılması için değil, işletim düzenlerinde bir çok işlemi kolay yapmak için yazılmıştır. Dolayısıyla düzen destek (system support), yığın görevleri (batch jobs) ya da güvenlik (security) gibi konularda işlem yapanlar için çok geniş destekler bulunmaktadır. Bu yönüyle işletim düzenin bir kabuk (shell) üzerinden kullanmaya göre son derece gelişmiş bir altyapı sağlar.
Ağ (Network)
Python dili TCP/IP düzeyinde hem TCP hem de UDP ile priz programlama (socket programming) gibi düşük düzeyli ağ (network) işlemlerini desteklemektedir. Bunun dışında POP3, SMTP, IMAP, FTP, HTTP gibi çok sayıda iletişim kuralı (protocol) desteklenmektedir. Söz konusunu konular tek başlarına çok yararlı gibi görünmese de gelişmiş bir uygulama bu konulardan birini ya da bir kaçını kesinlikle içerir. Öte yandan buradaki betiklik (library) seçenekleri doğrudan kullanılmak yerine, bunların üzerine geliştirilmiş daha ileri düzeyde betiklikler de yeğlenebilir. Ancak ileri modülleri kullanmak için de temelleri, doğrudan kullanılmasa bile bilmek gereklidir.
Çizelemeli Kullanıcı Arayüzü (Graphical User Interface - GUI)
Python dilinin kendisinde bir kullanıcı çizelemeli kullanıcı arayüzü (graphical user interface - GUI) bulunmaz. Ancak Qt ve Tkinter gibi, C/C++ tabanlı gelişmiş ve işletim düzeninden bağımsız betiklikleri destekler. Bir çok kişi için Python arka-uç (back-end) yakasında kullanılan bir dil olsa da ön-üç (front-end) için de desteği bulunmaktadır. Ancak bu destek çoğunlukla sıradan kullanıcıların kullandığı masaüstü uygulamaları yapmaktan çok, işi verilerle ya da işletim düzeniyle çalışmak olan kişilere görsel bir arayüz sağlayan uygulamalar yapmak için kullanılır.
Örnekler ve Uygulama
Eğitim kapsamında örnek olarak bir sohbet (chat) uygulaması yapılmaktadır. Örnekte çok yivli (multi-threaded) bir sunucu (server) ve birden çok istemci (client) arasında ileti alışverişinde bulunulmaktadır. Qt ya da Tkinter ile görsel bir arayüz yapılarak sunucu ve istemci sınanmaktadır. Buradaki örnek, anlatılan konuların daha iyi anlaşılmasını sağladığı gibi daha gelişmiş ve karmaşık uygulamaların nasıl geliştirilebileceği konusunda da bir taban oluşturması açsından işletim düzeni, ağ ya da görsel arayüz gibi konularla ilgilenmeyen kişilere de önerilmektedir.
DJango Çatısı
DJango Çatısına Giriş
Python dili çoğunlukla işletim düzeni (operation system) üzerinde işleri kolaylaştıracak bir betim (script) dili ya da veri bilimi (data science) veya yapay zeka (artificial intelligence) gibi uzbilim (mathematics) ve bilgisayım bilimi (computing science) gibi konuları içeren alanlarda yaygın olarak kullanılır. Ancak örün (web) ve veritabanı (database) gibi alanlarda; Java, C#.NET ve PHP gibi dillerdekine benzer biçimde de kullanılabilir. Bu amaçla geliştirilen çatı (framework) ürünlerinden en yaygın kullanılanlarından birisi de DJango adını taşır. Bu çatıda olağan örün ve veritabanı konuları dışında ORM ve MVC gibi gelişmiş teknikler de desteklenir.
Örnek bir Örün Veritabanı Uygulaması
Eğitim sırasında örnek olarak bir veritabanı (database) ile çalışan örün uygulaması (web application) yapılamaktadır. ORM ve MVC tekniği ile CRUD adı verilen, tablolarda temel işlemleri içeren bir uygulama yapılamaktadır. Buradaki örnekle Python ile içerik (content), e-ticaret (e-commerce) gibi sitelerin nasıl yapıldığı da öğrenilmiş olur. Bu biçimde Java, C#.NET ve PHP gibi konulara da girmek isteyenler için öğrenme kolaylığı sağlar.
Bu konularda ayrıntılı bilgi, kurs, özel ders, uzaktan eğitim, ödev ve proje destek, kitap ve video için tıklayın :
Python Business Intelligence, Data Science ve Machine Learning
Bu eğitim, veri bilimi (data science) konularını Python diliyle anlatmaktadırBu eğitim, veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konularını Python diliyle anlatmaktadır. Her ne denli dil olarak Python seçildiyse de anlatılanların çoğu öteki diller için de geçerlidir. Dahası, öteki dillerde veri bilimi ve yapay us konularında çalışmak isteyenler için de Python ile başlamak, bu dilin göreli olarak daha kolay olması nedeniyle iyi bir başlangıç noktası olabilir.
Numpy ve Matplotlib ile Sayısal İşlemler ve Görselleştirme
Gerek veri bilimi gerek yapay us, sayılarla çalışmayı gerekli kıldığı için Pyhton dilindeki Numpy kütüphanesi öğrenilmelidir. Bu betiklikte(kütüphanede) olağan uzbilim (matematik) konuları için gereken sayısal işlemler bulunmaktadır. Numpy, yalnızca sayı ilgili değil, sayı dışındaki temel türlerle ilgili işlemleri içermektedir. Verilerle çalışmanın temellerini içerir.
Yapılan işlemleri daha anlaşılır biçimde inceleyebilmek için de matplotlib adı verilen görselleştirme (visualization) kütüphanesi kullanılır. Bu biçimde öğrencinin üzerinde çalıştığı veriyi daha iyi anlaması ve ona hakim olması sağlanır. Bu kütüphane aynı zamanda sonuçlarını sunulması ve yazanak (report) oluşturmak için gereklidir. Veri bilimiyle üretilen sonuçların bir biçimde akademik ya da iş dünyasına sonuç olarak sunulması gerekir.
Eğitimde Requests adı verilen HTTP iletişim kuralı üzerinden örün (web) içeriğini edinmeye yarayan bir betiklikte (kütüphanede) anlatılmaktadır. Bununla örün(web) üzerindeki içerikleri indirip üzerinde işlemler yapılabilmesi sağlanmaktadır. Var olan, hazır olarak sağlanan verilerle çalışmak yerine gerçek ve diri veri toplamanın yolları anlatılmaktadır.
Eğitim boyunca, düzenek öğrenmesi (machine learning) ve sayımbilim (statisitics) gibi konularda işlenecek verilerin dosyalardan okunması, üzerinde işlem yapılması ve görselleştirilmesine ilişkin örnekler yapılmaktadır.
Scipy ve Pandas ile Bilimsel İşlemler ve Veri İşleme
Temel matematik konularının ötesinde bilimsel konularda bir çok işlev içeren Scipy betikliğinin (kütüphanesinin) de bilinmesi gerekir. Burada science (bilim) ile denmek istenen doğal bilimler (natural sciences) olarak anlaşılmalıdır. Çünkü science sözcüğü tek başına kullanıldığında 'fen' anlamına gelmektedir. Scipy kütüphanesi Numpy kütüphanesini kullanır. Özel işlemler, türev (derivative) ve bütünlev (integral), içucaylama (interpolation), hızlı Fourier dönüşümü (fast Fourier transform), uzaysal yapılar ve algoritmalar (spatial structures & algorithms), sayımbilim (statistics) gibi konuları içerir. Bunlar hemen her yerde kullanılan matematik içeren yöntemlerdir.
Bilimsel konuların daha iyi anlaşılması için lisans düzeyinde matematik konuları gerekmektedir. Yer yer yetersiz kalındığı yerlerde yüksek matematik konularında da girilmektedir.
Eğitimde veri kümeleri edinilerek üzerinde türlü bilimsel işlem uygulanmakta ve sonuçlar görsel olarak incelenmektedir. Bu bölümde herhangi bir algoritmaya girmeden, birden çok algoritmada kullanılan temel bilimsel işlevlere yönelik uygulamalar yapılmaktadır.
Örnek Proje
Eğitim tümüyle uygulamalı yapılmaktadır. Her bölümde bir proje geliştirme için gerekli konular uygulamalı olarak örnek üzerinde anlatılmaktadır. Ancak eğitimin sonunda de her katılımcıya, anlatılanları içerdiği gibi kursun ötesinde de konulara girebileceği örnek bir proje verilmekte ve bu konuda öğrenciye destek olunmaktadır.
Bu konularda ayrıntılı bilgi, kurs, özel ders, uzaktan eğitim, ödev ve proje destek, kitap ve video için tıklayın :
Python Business Intelligence, Data Science ve Machine Learning
Bu eğitim, yapay zeka (artificial intelligence) konularını Python diliyle anlatmaktadırBu eğitim, veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konularını Python diliyle anlatmaktadır. Her ne denli dil olarak Python seçildiyse de anlatılanların çoğu öteki diller için de geçerlidir. Dahası, öteki dillerde veri bilimi ve yapay us konularında çalışmak isteyenler için de Python ile başlamak, bu dilin göreli olarak daha kolay olması nedeniyle iyi bir başlangıç noktası olabilir.
Skit-learn ile Düzenek Öğrenmesi (Machine Learning)
Skit-learn betikliği (kütüphanesi) düzenek öğrenmesi (machine learning) gibi konularda bir çok algoritma içermektedir. Bu yönüyle yapay zeka (machine learning) alanının en önemli konularından birisi olan düzenek öğrenmesi ilgili çok sayıda destek bulunmaktadır. Bu betiklikte desteklenenler arasında sınıflandırma (classification), gerileme (regression), salkımalama (clustering), model seçimi (model selection), boyutsallık indirgeme (dimensionality reduction), derin öğrenme (deep learnning) ve yapay sinir ağları (artificial neural network), genetik algorimalar (genetik algorithms) gibi konular sayılabilir.
Her ne denli düzenek öğrenmesi ile ilgili çok sayıda alan olsa da çoğu, bir kaç temel konunun öğrenmesine dayalıdır. Çünkü Python geliştiricisi için yukarıdaki konuların gerçekleştirilmesi değil kullanılması söz konusudurur. Başka bir deyişle veri bilimi gibi alanlardaki algoritmalarının içerde nasıl çalıştıkları değil dışarıdan nasıl değerler aldıkları ve sonuç olarak ne döndürdükleri bilinmelidir. Çoğunlukla yapılan işlem bir sınıfı, bir kaç parametre ile oluşturma ve bir kaç yöntemini çağırmaktan oluştur. Söz konusu algoritmaları kullanacak düzeyde anlamak gereklidir. Öte yandan, kod olarak gösterilmese de algoritmaların nasıl çalıştığı açıklanmaktadır.
Eğitim boyunca düzenek öğrenmesi (machine learning) ile ilgili her konuda en az bir örnek yapılmaktadır. Her birinin nasıl girdiler aldığı ve nasıl çıktılar ürettiği örnek üzerinde açıklanmaktadır.
Makine Öğrenmesi Konuları
Makine öğrenmesi kapsamında aşağıdaki konulara ilişkin geniş bir anlatım yapılmaktadır:
- Yapay Sinir Ağı (Artificial Neural Network)
- En Yakın Komşu (K-Nearest Neighbour)
- İlkesel Bileşen Çözümleme (Principal Component Analysis)
- Destek Yöney Düzenekleri (Suppor Vector Machines)
- Toy Bayes'çi Sınıflayıcı (Naive Bayesian Classifier)
- K-Bayağılar Salkımlama (K-Means Clustering)
- Genetik Algoritmalar (Genetic Algorithms)
Yapay Us (Artificial Intelligence) Konuları
Eğitimlerde düzenek öğrenmesi (machine learning) dışında kalan yapay us (artificial intelligence) konuları da anlatılmaktadır. Örneğin bilgisayar görümü (computer vision), örüntü tanıma (pattern recognition), doğal dil işleme (natural language processing) gibi başlıklar da eğitim kapsamındandır. Söz konusu alanlar, veri bilimi dışında bir çok akademik alanda yaygın olarak işlenen başlıklardan olduğu için eğitim kapsamına alınmıştır.
Örnek Proje
Eğitim tümüyle uygulamalı yapılmaktadır. Her bölümde bir proje geliştirme için gerekli konular uygulamalı olarak örnek üzerinde anlatılmaktadır. Ancak eğitimin sonunda de her katılımcıya, anlatılanları içerdiği gibi kursun ötesinde de konulara girebileceği örnek bir proje verilmekte ve bu konuda öğrenciye destek olunmaktadır.
Bu konularda ayrıntılı bilgi, kurs, özel ders, uzaktan eğitim, ödev ve proje destek, kitap ve video için tıklayın :
Python Business Intelligence, Data Science ve Machine Learning