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

Bulk replacing Turkish characters in R


Turkish character sometimes became the menace for the data scientist. To avoid the risks you may want to change it with safe characters. To do that you can use this code:

#turkce karakter donusumu
to.plain <- function(s) {

# 1 character substitutions
old1 <- “çğşıüöÇĞŞİÖÜ”
new1 <- “cgsiuocgsiou”
s1 <- chartr(old1, new1, s)

# 2 character substitutions
old2 <- c(“œ”, “ß”, “æ”, “ø”)
new2 <- c(“oe”, “ss”, “ae”, “oe”)
s2 <- s1
for(i in seq_along(old2)) s2 <- gsub(old2[i], new2[i], s2, fixed = TRUE)

s2
}
df$source=as.vector(sapply(df$source,to.plain))

Meta-decisions


You want to make a decision about an important thing. You getting advises of a lot of people as it should be. However, your mind is wandering. The state of mind falls into a mode of ‘pendulum’. Today you decide to go, tomorrow you decide to remain. In that state of mind, you should review your ‘modus operandi’ for decisions.

Let’s explain the portrait with computer science terminology. Our decision-making tool is kind of functions. It gets some parameters from external universe, process it then throws a result. In the state of indecisiveness, the return is ‘null’. The problem is this function does not work stable. Sometimes due to ‘runtime errors’ or unknown ‘bugs’. For stable functions sometimes due to the wrong ‘feature selection’ or irrelevant input parameters function works properly but not to avail.

For example, you want to select best places to live. Parameters are your career, your family needs, the education quality for your kids. You have selected a city to live. Tomorrow, you remember your health issue and that is required to other alternatives. You return to the other alternative. That is ‘pendulum mode’.

In these situations, the meta-decision may solve your decision-making turmoil. Meta-decision is decisions about your decision making. You should think about “how I decide”, “what are the drawbacks about my decision making”, “how I apply the decision” and “how is the new decision-making process” or meta-decision.

An example:

How do I decide? It is quite bleak. It can be defined as ‘cyclic decision making’. The decision process is making several times with different parameters. My friends have the normative role for my decisions. I value theirs advises.

What are the drawbacks? My decision is biased to keeping status quo. That is overwhelming and I am sure that is not healthy. For advises; sometimes I am feeling kind of pressure on myself to apply the advice without analyzing.

How I apply the decision? Due to status quo bias, often I am not doing anything.

Meta-decision: Up to final decision never make a decision just collect the parameters and ideas to specific paper. Define a special day for decision making. Up to this day collect and review the ‘decision making working paper’. In the day of decision, make your decision and immediately start to apply the decision. If the everything is reversible never hesitate just do it.

Çocuklar için İngilizce Diziler


2017-06-08 12_06_29-Best TV for Kids _ Common Sense Media.png

Dil öğreniminde yanlızca çocuklar için değil yetişkinler için de film izleme önemli bir aktivitedir. Peki çocuklarımızla hangi dizileri izleyeceğiz. Çocuklarım için takip ettiğim Cambridge English For Kids sitesinin yolladığı mailden çocuklar için özel olarak seçilmiş dizilerin olduğunu öğrendim. Linki şurada.

Diziyi çocuğunuzun yaşına uygun olarak seçtikten sonra, ailece izlemeniz öneriliyor. Cambridge çocuklara önce altyazılı olarak dizi izletmeyi, çocuklara sırf izlediklerinden duydukları yeni kavramları not etmeleri için bir not defteri vermeyi ve çocukların bu yeni kavramları aramasına teşvik etmeyi öneriyor. Ancak çocuklardan kesinlikle ‘pause’  tuşunu kullanmamaları isteniyor. Kendi deneyimimden de biliyorum, dil kelimelerden cümlelere değil cümlelerden kelimelere öğrenilir.

Çocuğunuz diziyi sevdiyse, en sevdiği kahramanların resimlerini çıktı alıp odasına asabilir ara sıra da o kahraman hakkında İngilizce konuşmasını isteyebilirsiniz.

Arduino Kullanmaya Giriş


ar2

Arduino yukarıdaki resimde sol tarafta gördüğünüz cihazdır. Bu cihaz bilgisayara bağlanarak içerisine program yüklenebilir ve yüklediğiniz program ile dış dünyaya ses, ışık gibi sinyaller gönderebilirsiniz. Arduini bilgisayara USB ile bağlanıyor.

Sağdaki nesne ise breadboard’dur (İngilizcesi ekmek tahtası) türkçeye devre tahtası olarak çevrilir. Bu nesne elektronik parçaları (diyot, led, direnç) birbirine lehimsiz bağlamak için kullanılır.

Peki bu cihazları nasıl edineceksiniz? Ben 60 TL’ye şuradan aldım.

Değerli hocalarımdan birinin oğluma hediye ettiği bir Arduino kitabı ile benim de Arduino merakım başladı. Zaten kitabın üzerinde 9+ ∞  yazıyordu. Yani çocuktan babasına herkes kullanabilir demek.

Arduino ile ses algılayıcısısından yanıp sönen ledlere (sizin yaptığınınz programa göre), oradan canlı butonlarla etkileşen programlara kadar her şeyi yapabiliyorsunuz.

Arduino çocukların elektronlik devreleri anlamaları, kendileri yapmaları ve eğlenmeleri için müthiş bir araç. Kesinlikle analitik düşünme ve sabır için bire bir.  Oğlum da Arduino ile çok eğleniyor.

Peki programlamayı nasıl öğrenecekler? Malum Arduino’da diyelim ki 10 saniyede bir lambayı yak söndür demek için şu kodları yazarsınız:

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

Bu kodları Çocukların yazması zordur ancak onun için de bir çözüm üretilmiş. Mblock  adlı program yardımı ile çocuklar Scratch mantığında yani sürükle bırak yaparak görsel olarak program geliştiriyorlar. Bunu gerçekten başarıyorlar. Oğlum Agah sıkı bir Scratch kullanıcısı. Scratch hakkındaki yazımı buradan okuyun.

scr.png

Yukarıda Scratch’ın web sayfası görülüyor. Sağ bloktaki görüntü görsel kodlamaya ait renkli bloklar.

Scratch’ın bir benzeri de var o da code.org. Bu site çocuklara sertifika da veriyor. Sertifika verdiğini de oğlumun atladığı seviyelerden sonra bana haber vermesi ile öğrendim.

Şimdi gelelim Arduino ile yaptığımız ilk projeye. Bu bir robot veya uzay aracı değil:) yeni başlayan işi bir program. Mantığı şu; Arduino’ya bağladığımız led lambanın bizim belirlediğimiz aralıkla bizim belirlediğimiz kez yanmasını istiyoruz. Adım adım yaptığımız şuydu:

1- Mblock’ta görsel kodlama ile programı yaz.

Ekran görüntüsü şöyle:

ar1

Gördüğünüz gibi sol blokta mantıksal olarak kolayca anlaşılabilen süreç Mblock tarafından otomatik olarak Arduino koduna dönüştürülüyor.

2- Gerekli bağlantıları yap

ar2

Breadborad ile Arduino arasında yaptığımız bağlantı yukarıdaki gibi. Detaylı çizimi ise şöyle:

ExampleCircuit_sch

Arduino’nun resmi sitesindne aldığımız bu devrede aslında olay birbirine seri bir biçimde bağlanmış 220 ohm’luk bir direnç ve LED’den ibaret. Tabi çıkışı D13’e bağladığımızı unutmayalım. Çünkü kodda bunu Arduino’ya söylüyoruz.

3- Programı Arduino’ya yüklüyoruz

İlk aşamadaki ekran görüntüsüne baktığımızda Bağlan>Seri Port üzerinden COM1 veya COM kaç gelmiş ise onu seçiyoruz. Hangisinin doğru olduğu deneme yanılma.  Daha sonra da sağ blokta yazan “Arduino’ya yükle” butonuna basınca kodlarımız Arduino’nun beynine:) gidiyor.

4-Programı çalıştırmak

Program Arduino’nun beynine yüklendiği anda ekrana yükleme tamamlandı yazısı çıkıyor ve Arduino emirlerimizi uyulayarak ledi istediğimiz aralıkta yakıp söndürüyor.

Videosu:

Çocuğunuza öğretici bir merak kazandırmak istiyorsanız kesinlikle Arduino ile ilgilenin.

Türkiye ve Arap Baharı: Bir CIA istihbaratçısının görüşleri


Amerikan RAND Corporation düşünce kuruluşunun daimi politik danışmanı, ABD Merkezi Haberlama Teşkilatı’nın (CIA) Milli Haberlama Konseyi (İngilizce:National Intelligence Council) eski başkan yardımcısı, yazar, ABD’li devlet görevlisi (Wikipedia) Graham Fuller‘in yazdığı “Türkiye ve Arap Baharı” adlo kitabı okudum. Kitap çok derin analizleri içeriyor. Graham Fuller Türkiye kamuoyunda çokça tartışılmış bir isim.  Ancak görüşlerinin faydalı ve ufuk açıcı olduğunu söyleyebilirim. Komplo teorisi üretmeyi seven zihnim Fuller’in analizlerinin ‘manipülatif’ olduğunu ara sıra söylese de, önermeleri üzerine düşünülmeye değer.  Kitaptan ilginç bulduğum bir kısım:

Arap ‘baharı!’ Tunus’ta kendini yakan bir seyyar satıcı ile başlamıştır.

tunus-devrim-buazizi.jpg

Muhammed Buazizi, 17 Aralık 2010’da kendini yaktığında, Arap ülkeleri için de bir değişimin kıvılcımı ateşlemiş oldu. Buazizi, Tunuslu bir seyyar satıcıydı. Ailesini geçindirmek için bu işi yapmaya mecburdu. Çünkü başka iş yoktu ama polis, arabasına el koydu. Buazizi, geri almak istedi fakat belediye kapısından çevrildi. Ve sonrasında kendini ateşe verdi… (Aljazeera)

Bu olay Arap Bahar’ının başlangıcı olarak kabul edilmektedir. Olay Buazizi’nin videolarının Facebook’a konması ile başlamıştır.

 

 

 

 

SQL Server’da metinden tarihe dönüşüm


SQL Server’la uğraşan tüm sinir stres sahiplerine selam olsun. Kod yazmayı eziyete çeviren SQL Server’da metinden tarihe dönüşüm yaparken yine kırk fırın dökümana bakmak gerekiyor:)


declare @tarih_metinsel varchar(20)
declare @tarih_gercek datetime
set @tarih_metinsel='2017-01-01'
select CONVERT(datetime, @tarih_metinsel, 103)
select @tarih_metinsel

Şimdi bu 103 nedir diyeceksiniz? Artist microsoft kendince metinden tarihe dönüşüm için YYYY-MM-DD gibi insani şablon kısaltmaları kullanmak yerine sayı vermiş. İşte şurada.

 

 

Sosyal Network Analizi ile ilgili kitaplar


Sosyal ağ analizi ile ilgili UCINET uygulamasına alternatif açık kaynaklı bir uygulama ararken Gephi’yi keşfettim. Daha sonra Gephi’ye ait bir Facebook grubunu buldum. Gruptan sosyal network analizi ile ilgili kitap tavsiyesi istediğimde gruptan aşağıdaki kitap listesi tavsiyesini aldım. Kendilerine teşekkürler:

network kitapları

Diğer önerilerin akışı için şu linke bakabilirsiniz.

WordPress.com'da Blog Oluşturun.

Yukarı ↑