Scikit ile Makine Öğrenmesi Kodlamak


Makine öğrenmesi çalışmalarında şimdiye kadar hep R kullanmıştım. Scikit ve Tensorflow hakkında kaggle’daki istatistikleri görünce biraz da Python’a dair eğilimle, Scikit kullanmaya karar verdim. Direkt Scikit öğrenmek R’dan sonra karmaşık geldiği için, Numpy ve Pandas dokümantasyonları inceleyip bir kaç deneden sonra “Hands-On Machine Learing” kitabını keşfettim. Kitap kitap değil hazine mübarek. Anlatım güzel olmakla birlikte yazarının derin bilgisi yüzünden resmen bilgi pompalıyor. Bu yüzden biraz zorluyor.

2017-12-01 21_16_54-Hands-On Machine Learning with Scikit-Learn and TensorFlow_ Concepts, Tools, and.png

Ben de hem kendim denemek hem de İngilizce ile arası iyi olmayan veri bilimci adayları için örnekleri ekstra açıklamalı olarak yeniden kurguladım. Şu linkte kodlarını ve yazdığım yorumları açıkça paylaştığım kod deposu (repository) var.

Link şurada.

İlgilenenlerin işine yarayacağını umuyorum.

Yorumlarınızı, katkılarınızı, sorularınızı memnuniyetle beklerim.

Son bir not benim gibi R’cılar için, Scikit ile R Caret arasında basit bir mukayese:

Scikit-in R’dan farkı

Daha önce makine öğrenme algoritmalarını daha çok R ile denemiştim. Python ve Scikit kullanımında en çok dikkat ettiğim özellikler şunlar. İşte tecrübe:)

Scikit’in artıları:

  • Scikit özellikle Imputer ve OneHotEncoder ile çok kullanışlı ve ileri özellikler sunuyor. R’da muhakkak vardır ancak hiç karşılaşmadım.
  • Pipeline ve Pipeline’ları bir araya getiren FeaturedUnion özelliği’de Scikit’de sevdiğim özellikler’den. R’da görmedim.
  • GridSearch özelliğine yani en iyi kombinasyonun da bi zahmet makine tarafından bulunması (Hyperparameter Tuning) özelliğine bayıldım.

R’ın artıları:

  • Jupyter Notebook halen R Studio’nun yanından geçmez.
  • SciKit NumPy üzerinde çalışıyor ancak Pandas data frameleri üzerinde çalışmıyor. Bu bir ayıp. R’da makine öğrenme modelleri benim kullandığım caret kütüphanesi üzerinde data frame’de çalışıyor.

Her ikisinde de mevcut olanlar:

  • K-Folding R’da Caret kütüphesinde de var.

 

 

Reklamlar

Python Peewee


2017-04-08 19_52_35-peewee — peewee 2.9.2 documentation

Python ile birlikte birçok küçük ve orta ölçekli projenizde kullanabileceğiniz Peewee adlı bir veri tabanı var. Peewee ORM(Object Relational Map) imkanı da sunuyor. Yani veri tabanına eklenecek kayıtları bir nesne olarak tanımlayabiliyorsunuz.  Ben Flask ile birlikte bir web projemde kullanmış ve pratikliğinden epey memnun kalmışım.  Peewee Sqlite ile birlikte de çalışabiliyor:

from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()
    birthday = DateField()
    is_relative = BooleanField()

    class Meta:
        database = db # This model uses the "people.db" database.

Örnek bir kod burada:
Kayıt yapmak bu kadar kolay:

>>> from datetime import date
>>> uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15), is_relative=True)
>>> uncle_bob.save() # bob is now stored in the database

Bu da veri çekmek için:

>>> grandma = Person.select().where(Person.name == 'Grandma L.').get()

Peewee dökümantasyonu: buradaburada

Selenium with Python


Selenium is the popular testing package. It has library for Java, C#, nd Python. It is not only for testing  but also very good choice for web scraping task. I have used it during my PhD Thesis for scraping news from Google News.

In fact usage of it with Python slightly easier and readable. For Python 2.7 just install selenium with ‘pip install selenium’. If you work on windows you should use path of pip like below before install command.

“c:\python27\scripts\pip.exe”

Besides, you should download chromedriver.exe from here

Then you can use Selenium. Here is a code which download relevant image from Google Images with Selenium:

from selenium import webdriver
import urllib
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('C:/Python27/Scripts/chromedriver.exe')
word="apple"
url="http://images.google.com/search?q="+word+"&tbm=isch&sout=1"
driver.get(url)
imageXpathSelector='//*[@id="ires"]/table/tbody/tr[1]/td[1]/a/img'
img=driver.find_element_by_xpath(imageXpathSelector)
src=(img.get_attribute('src'))
urllib.urlretrieve(src, word+".jpg")
driver.close()

Windows’ta ‘PİP’ kullanımı


Python’un otomatik ve pratik kütüphane indiricisi pip uygulamasını windows’ta kullanmak için komut satırınına (cmd.exe) pip yazdığınızda windows tanımayacaktır. Bunun için pip.exe dosyasının yol adresini vermeniz gerekir. Bunu şöyle yapabilirsiniz:

“C:\Users\suat.atan\AppData\Local\Programs\Python\Python35\Scripts\pip.exe”

daha sonra istediğiniz pip komutunu (pip install gibi) kullanabilirsiniz.

 

Python’un tüm sürümleri bir arada bir sürümü: Canopy


Python’u Windows’ta kullanırken projelerinizde kullanacağanız ve pip ya da easy_install komutları ile indirebileceğiniz ek kütüphaneleri indirmek Linux’taki kadar kolay olmaz. Ayrıca tek tek indirmek pratik gelmeyebilir. Bu durum için daha önce doktora tezimi yazarken kullandığım ve içinde scipy, numpy, beautifulsoup gibi bir çok kütüphaneyi hazır bulundururan Canopy adlı bir Python sürümü var. Buradan indirebilirsiniz.

Bir sorun olmamakla beraber bu Python sürümünün resmi python sürümü olmadığını da hatırlatayım. Canopy, Enthought adlı bir firmanın özel olarak düzenlediği bilimsel amaçlı bir python sürümüdür.

Python ile Net Bugünkü Değer Hesaplama


Agah A.Ş. tesislerinde kullanmayı düşündüğü bir makine
için dönem başında 11.000 TL yatırım yapmayı
düşünmektedir. İskonto oranı %10 olarak kabul edilmiştir.
Makinenin yıllar itibariyle sağlayacağı nakit girişleri
aşağıda gösterilmektedir.


Y1=2500
Y2=2600
Y3=4000
Y4=6000

Bu durumda projenin Net Bugün değeri ne olur?
Python’da şöyle hesaplarız


import math

YM=11000

IO=0.1

NBD=Y1/(1+IO)+Y2/(math.pow((1+IO),2))+Y3/(math.pow((1+IO),3))+Y4/(math.pow((1+IO),4))-YM

print(NBD)

Sonuç olarak 524 değerini alırız ki bu projemizin net bugünkü değeridir.

Python for your digital errands


A programming language mostly considering as highly holy and celestial. No programmers want to do a trivial task with a programming language. For instance, there is no Java developer which resizes his photos with Java.

However, for Python something is different. Due to its clear looking, you can perform some of your daily tasks with Python.

From time to the time, I am writing Python function for excel instead of writing over-nested ifs. 

I have found an interesting book includes a lot of interesting practical daily recipes with Python. Here is this book:

Cover of book fills the bill. A robot mows the lawn. The robot is python and lawn are daily tasks.