Blog

3D Baskı Hizmeti İçin Online Fiyat Hesaplama

Üretim yöntemlerindeki hızlı gelişmeler 3D yazıcıların seri üretimde de kullanımlarının artacağını ve 3D yazıcı çifliklerinin giderek yaygınlaşacağını göstermektedir. Bizde böyle bir sistemi yönetmek ve Online sipariş alabilmek için bir web sitesi geliştirmeğe karar verdik.
Bu projenin amacı 3D print hizmeti veren bir işletme için online sipariş alma ve anında fiyat verme işlerini yürütecek digital alt yapının hazırlanmasıdır.
Proje büyümeğe açık ve başka üretim yöntemlerini de kapsayacak şekilde API’ler geliştirilerek tasarlanmıştır. Kullanıcı arayüzü işlemleri için PHP Laravel MySQL kullanılmış, zaman alan ve response süresinin geciktiği durumları yönetebilmek için (bütük dosya transferleri ve büyük STL dosyalarında fiyat hesaplanması gibi) JQuery ile çözüme ulaşılmıştır. STL dosyasının resminin çekilmesi ve fiyat hesaplaması için 3D objenin dilimlenmesi gibi asıl teknik hesaplamaların yapıldığı kısımlarda API bazlı NodeJs uygulamaları geliştirilmiştir.
Sistem STL dosyasının hacim yada ağırlığının bulunması ile fiyat hesaplaması yapmamaktadır. Mevcut çözümlerin çoğunda bu yöntem kullanılmakta fakat doğru sonuçlar alınamamaktadır. Bizim sistemimizin en önemli özelliği 3D model 3D printer için hazırlanırken kullanılan dilimleme algoritmalarının çekirdek kısımlarını kullanıp gerçekten bu obje basılması durumunda ne uzunlukta filament kullanılacağını ve nekadar süre gerektiğini bulup buradan bir fiyat hesaplamasına gitmesidir. Bunu NodeJS serverı üzerinde CuraEngine kulanarak gerçekleştirdik.
Sistem şu anda FDM 3D printerlar ile hizmet veren işletmeler için hazırlanmış olsa da API bazlı sistem mimarisi sayesinde ileride CNC işleme, lazer kesim ve diğer 3D baskı methotları kullanılarak gerçekleştirilen üretim hizmetleri için de online fiyat hesaplamaları yapabilecektir.
Sistem içerisine, müşterinin, hizmet veren ile iletişim kurabileceği bir ticket sistemi eklenmiştir. Bu sayede müşteri soru sorabilecek yada hatalı ve basımı mümkün olmayan parçaları sisteme gönderdiğinde hizmet veren de bu kanaldan kendisini doğru tasarıma yönlendirebilecektir. Aynı altyapı, sisteme yeni bir model yüklendiğinde yada yeni sipariş geldiğinde eposta ile hizmet vereni bilgilendirmekte, hizmetveren de (admin) gelen işleri yada soruları kendi ekibindeki arkadaşlarına yönlendirebilmektedir.
Tamamen kendi yazılımlarımızla ve Türkçe olarak geliştirdiğimiz sistemi kullanmak isteyenler bizimle iletişime geçebilirler. nerginer@gnexlab.com

Bu Stres Çarkı ile Kodlama Öğrenin

Uzun süreden beri genç nesile kodlamayı eğlenceli bir şekilde öğretmenin yollarını düşünüyorum. Hepimiz, kodlamayı öğrenmenin çok önemli olduğunu biliyoruz, ancak bu iş o kadar da kolay olmuyor. Zaman alan bu süreç gençlerin daha işin başında vazgeçip başarısız olmalarına neden oluyor. Devam etmek için ilginç bir şeye ihtiyacınız var. Defalarca başarızız olsanız bile vaz geçmemeli arka arkaya gelen başarısızlıklardan yılmamanız önemli. Bu nedenle sizi vazgeçmeden denemeye teşvik eden bir motivasyon geri bildirim mekanizmasına ihtiyacınız var.

Tüm bunları düşünürken aniden aklıma stres çarkları geldi. Bu alete sadece genç neslin değil, aynı zamanda yetişkinlerin de ilgisinin büyük olduğunu fark ettim. Bu oyuncak başlangıçta otistik ve dikkat eksikliği olan çocukları hedef alıyormuş ancak satış istatistikleri bize işin böyle olmadığını gösteriyor. Oyuncak mağazaları ve online satışlar talebi karşılamaya yetişemiyorlar. Sanki yılbaşı zamanıymış gibi insanlar çılgınca bu aletlerden satın alıyor. Bu cihazın genç insanların kalbine girdiği kesin bir gerçek.
Bende bu fırsatı değerlendirip en çok sevdiğim iki şeyi Arduino ile Stres Çarkını birleştirmeye karar verdim. Bu tasarım aslında RGB LED’ler, stres çarkı ve Arduino’yu bir araya getirmekten başka birşey değil. Tüm bunları birleştirdim ve ortaya bu çıktı:

Lightino fidget spinner

En popüler olan üç kollu tasarım üzerinden devam ettim. Bir kola pili, bir kola RGB ledleri, diğer kola da Arduino’yu koydum. Ortada diğer tüm stres çarklarında da vazgeçilmez olan kaliteli ve uzun dönme süresini garantileyen iyi bir rulman bulunuyor.

Benim için bu oyuncağın en önemli kısmı USB bağlantısıdır. Yeni bir ışık şovu deseni elde etmek için arduinoyu usb den programlıyorsunuz. Bu işlevselliği onu diğerlerinden ayıran en önemli özelliği. Sıradan bir stres çarkına sahip olmak ve onu çevirmek, birkaç dakika içinde sıkılmanıza neden oluyor. Yeniden programlanabilme yeteneğine sahip olması Lightino’ya bence çok şey katıyor. (Bu arada çihazın adı: Lightino)

Lightino’nun arkasındaki asıl düşünce, öğretmenler ve öğrencilerin bir arada deniyerek öğrenmelerini sağlayan programlama, mekanik ve elektronik içeren, yenilikçi bir öğrenme deneyimi oluşturmak ve bu işe yarayan uygun maliyetli bir araç tasrlamakdı.

 

Umarım bu alet çocuklarınız için iyi bir STEAM (Bilim, Teknoloji, Mühendislik, Sanat ve Matematik) eğitim aracı olacaktır. Gnexlab’da iyi dokumante edilmiş dersler ve kod örnekleri vermeye çalışacağım. Her zaman olduğu gibi, bu aygıtla ilgili tüm donanım ve yazılımlar açık kaynak olacak. Harika gnexlab topluluğun yardımıyla, bu araç genç kuşağın dikkatini çekebilir ve onları kodlamayı öğrenmeye motive edebilir.

Bu cihaza ilk siz sahip olmak isterseniz, aşağıya yorum bıakarak talepte bulunabilirsiniz. Ya da bana bir mail atmanız yeterli olacaktır. nerginer@gnexlab.com

Türkçe Anlayan Yapay Zeka (Şimdi Siri, Alexa Düşünsün)

Bu yazida bazı web servislerini kullanarak nasıl Türkçe komutları anlayan bir yapay zeka sistemi kurabileceğimizi ve akıllı ev sistemimize bunu nasıl entegre edebileceğimizi göstermeye çalışacağım.

 

Birden bire bazı servisleri ve teknolojileri beraber kullanmak fikri beliriveriyor kafamda. Ondan sonrada denemeden rahat edemiyorum. İşte koca bir pazarımı alıp götüren ama sonra hoşuma giden çalışmamı sizlerle paylaşıyorum. En son Mark Zukerberk’in evi için yaptığı çalışmayı görünce benzerini hangi teknolojilerle yapabilirim diye düşündüm. En hoşuma giden kısmı her zaman yanımızda olan cep telefonu ile akıllı evi ile konuşması oldu. Bir önceki yazımı okuduysanız bunun temellerini size anlatmıştım. Telegram Bot bu işte benim konuşmalarımı alıp akıllı ev komutlarını anlayacak olan sisteme yönlendirecekti. Telegram Bot tam bir geliştirici dostu kurcalamanızı tavsiye ederim. Bundan sonraki adım Türkçe komutları, cümleleri alıp bir yapay zeka servisine göndermek ve orada işlemek olacak. Gördüğünüz gibi aslında yoğun geliştirme ve kodlama yerine mevcut sistemleri bir biri ile entegre ediyorum. Sakın burdan kod yazmayın zaten herşey var alın kullanın anlaşılmasın. Aksine siz de başkalarına hizmet verecek güzel yazılımlar geliştirin ve hizmete sunun. Bugun malesef yabancı marka telefon, araba veya bilgisayar kullandığımız gibi yarın da yabancı yazılım servislerini kullanıyor olacağız. O nedenle şimdiden yerli servisler ve API lar yazalım hizmete açalım.

Sistemin ana akışını çizersem daha anlaşılır olacak sanırım. Aşağıdaki resimde sistem ana bileşenleri ve akış yönü görülebilir

gnexlab_telegram_wit

Birbirinden farklı sistemleri bir arada çalıştırırken en zor kısım, bir sistemin ürettiği datayı diğer sistemin anlayacağı data yapısına dönüştürmek oluyor. Burada da birden çok sefer data yapısını değiştiriyor ve hatta ses dosyası formatını bile on the fly mpeg den wav’a çeviriyoruz.  Çevirme işlemi diyince tabiki biraz kod devreye giriyor. Onu da Wit servisinden biraz bahsettikten sonra anlatacağım.

Wit.ai

Wit.ai aslında doğal dil işleme servisi. Facebook tarafından satın alındı. Birçok programlama dilini destekliyor ve bedava. Aslında neredeyse tüm firmalar yapay zeka servislerini bedava yapıyorlar. Milyon dolarlar harcanan bu servisleri neden bedava kullandırıyorlar derseniz? Bence nedeni bizi bu yapay zekaları eğitmekte kullanıyorlar. Yapay zeka algaritmalarının çok büyük ve doğru veri setleri ile eğitlesi gerekiyor. Bu hizmetler şimdilik kullanıcılara bedava kullandırılıp algoritmalar mükemmelleştiriliyor. Bundan 10 sene önce aslında başta IBM ve diğer büyük bilişim firmaları yapay zeka algoritmalarını eğitmeye başladı. 10 yıl sonrada bu algoritmaların çok güçlü olacağını ve başta savunma ve medikal olmak üzere bir çok alanda kullanılacaklarını tahmin etmek zor değil. Biz 10 yıl sonra kendi yapay zeka yazılımlarımızı eğitmeye başlasak onlarınki bizden 20 yıl daha eğitimli olacak. Bazı önemli ve kırılım yaratacak teknolojilerden devlet büyüklerimizi haberdar etmeli ve bu alanlara milli yatırımlar yapılması gerektiğini anlatmalıyız. Wit.ai den başka herşeyden bahsettim galiba 🙂 Siz en iyisi açıp bakın. Türçe ses dosyasını Türkçe yazıya dönüştürmede oldukça iyi Wit.ai. Ses yazıya dönüştürüldükten sonra da sizin temel kurallarını koyduğunuz bir doğal dil işleme sistemi ile komut ve cümleler sistem tarafından yourumlanıyor ve belli program bloklarını çalıştırabiliyor. Yanlız sakın burada akıllı bir yapay zeka var sanmayın. Wit’in size sunduğu sadece dil işleme fonksiyonları bir akıl katacaksanız siz her bir olası komutu düşünüp verilmesi gereken cevabı sisteme tanıtmalısınız. Meraklı arkadaşlar ile belki bir Akıllı Ev için gerekli mümkün olduğunca çok komutu tespit edip Wit.ai üzerinde tanımlarız. Artık Bu servisleri birleştiren dataları çeviren ve asıl benim geliştirdiğim yazılım kısmına bakalım. Bunları yapmak için Node-Red Kullandım.

 Nod-Red

IBM’de çalışan bir kaç yazılımcının ortaya çıkardığı bir geliştirme aracı node-red ve kesinlikle öğrenilmesi gerekiyor bence. Bu uygulamadaki az sayıda kodu ben bu platformda geliştirdim. Aslında Node-Red Server tüm servislerin API lerini çağırdığımız ve gerekli dönüşümleri yapan ana yazılımı içeriyor. Node-Red adından da anlaşılacağı gibi google’ın Nodejs Server tarafı javascrpit motoru üzerine geliştirilmiş. Kullanımı son derece basit ve IoT ve akıllı ev uygulamaları için tamda aradığınız şey. Aşağıdaki resim benim tüm bu işleri yapan yazılımının node-red görüntüsü. Her bir kutucuğun içerisinde yazdığım bazı kod satırları var.

gnexlab_node-red_AI

 

Biraz karışık görünebilir ama kolay değil Türkçe komutları anlayan bir Akıllı Ev Sistemi bu. Daha önceki yazılarımda bahsettiğim MQTT haberleşme protokolü de akıllı ev sistemi ile konuşma tanıma sistemi arasında iletişim kurarak komutların Akıllı Ev sisteminde nasıl bir karşılık bulacağı ile ilgili mesajları yönetmektedir.

Sonoff Wifi Röle

Sistemin bir diğer bileşeni de içerisinde hepimizin sevdiği Esp8266 wifi çipi barındıran Itead firmasının Wifi Rölesi. Bu röle 4-5 Dolar fiyatlara satılıyor. İçinde kendi firmware yazılımı olsada bu çipi iyi bildiğimden devre üzerinde belirli pinlere bağlantılar yaparak içerisine kendi firmware yazılımımı yükledim. Artık kendi ev networküme ve kendi MQTT serverıma bağlanıyor. İlginizi Çektiği ise ileriki bir yazıda bunu nasıl yaptığımı daha ayrıntılı olarak anlatabilirim. Aşağıdaki yorumlar kısmına isteklerinizi lütfen yazın. Sonoff’un yazılımıda değiştiğine göre Ses tanıma sisteminden gelen komut eğer açma isteği ise MQTT nin belirli Topiğine on mesajını yayımlıyoruz. Sonoff da bu mesaja subscribe olduğundan on mesajı gelir gelmez röleyi açıyor. Aynı şekilde kapama da benzer şekilde çalışıyor.

sonoff_03

Sonuç

Gelecek Web servislerini bir problemi çözmek için bir araya getirmek ve eksikleri de kendi yazacağınız servislerle tamamlamak üzerine gelişecek diye düşünüyorum. API ve web tabanlı servislerin nasıl kullanıldığı ve buradaki haberleşme protokollerini ve otorizasyon sistemlerini öğrenmek gerek diye düşünüyorum. Başta amazon olmak üzere bir çok büyük bulut hizmeti sunan firmalar serverless sistemleri tanıtıyorlar. Burada büyük bir gelecek olduğunu düşünüyorum.

Sizde gelişmiş bir Akıllı Ev sistemi kurmak yada bu sistemlere dahil olabilecek cihazlar tasarlamak istiyorsanız benimle iletişim kurabilir ortak projelere dahil olabilirsiniz.

Evlerin bile Akıllı olduğu bir çağda yaşıyoruz. Yolunuza hep akıllı insanların çıkması dileği ile…

Telegram Bot Nasıl Geliştirilir ?

telegram

Yapay zeka ve Derin Öğrenme konularında çok fazla haber ve yıkıcı gelişmeler olduğuna dair rivayetler var. Biraz araştırdığınızda neredeyse tüm büyükler (Google, Microsoft, Facebook ve yıllardır zaten IBM) bu konuya milyon dolarlar doküyorlar. Bunlardan en ilginci Elon Mask’ın Tesla’sı. Kendi kendine giden arabalar için görüntü ve sensorlerden gelen bilgilerin fizyonu konularında çok yoğun olarak yapay zekadan yararlanıyorlar. ABD’de iken Tesla ile bir test sürüşü yapma imkanım olmuştu. Size şöyle söyleyim adamlar arabanın iphone versiyonunu yapmışlar. Araba üzerinde dört yıl LTE ücretsiz internet bağlantısı ile geliyor. O zaman anlayamamıştım ama şimdi bunun nedeninin araba kullanıldıkça kaydedilen görüntü ve verilerin Tesla merkezine transfer edilerek merkezdeki yapay zeka algoritmalarını eğitmek için kullanıldığını anlıyorum. Dikkat ederseniz tüm büyükler yapay zeka yazılımlarını ve servislerini ücretsiz kullandırıyorlar. Bunun nedeni de aynı mümkün olduğunca çok kullanıcı bilgisi ile sistemi eğitebilmek. Yapay Zeka çok fazla veri ile eğitilen sistemler olduğu için firmalar buna muhtaçlar. Gerçi geçenlerde MIT’de internette gezinerek kendini eğitebilen bir yapay zeka yazılımı yapıldığı haberi çıktı.

Bu eğitilmiş zekalar tabiki servis olarak bizlerin hizmetine sunulacak. Şimdilik bedava ilerde daha yeteneklileri para ile en yeteneklileri ise ülkelerin savunma ve güvenlik sistemlerinde kullanılacak. Ülke olarak bizde milli yapay zeka yazılımımızı şimdiden eğitmek zorundayız.

Anlatacak çok şey var ama biraz uygulama yapmaya nedersiniz? Biz Türkler hemen çalışan birşeyler görmek isteriz. Hadi başlayalım.

İlk olarak yapay zeka sistemi ile iletişim kuracağımız bir arayüz gerekli bizim için. Bunun için herzaman yanımızda taşıdığımız akıllı telefondan daha iyi bir araç aklıma gelmiyor. Zaten Apple Siri Microsof Cortana vs yazılımlar telefonlarımızda yerini aldı. Benim anlatacağım sistem biraz daha size ait olacak. Size ait olan bir sistemi geliştirmek ve değiştirmek çok daha kolay oluyor.

Yazılım olarak Telegram denilen bir mesajlaşma yazılımını seçtim. Bu yazılım Whatsapp, Facebook messanger benzeri bir chat programı. Ama bazı güzel yanları var. Hızlı olmasının yanında API arayüzleri sayesinde geliştiriciler için çok güzel imkanlar sunuyor. Ayrıca yazı yazmak yerine ses ile de mesaj gönderebiliyorsunuz. Şuanda sesli Türkçe koutları işleyerek yapay zekalı bir sistemi evde çalıştırıyorum. Nekadarını burda anlatıcam bilmiyorum ama bana çok fazla gelecek kokan bir uygulama oldu gibi geliyor.

Telegram bot sizin bir asistanınız. Ona yazı yada sesle verdiğiniz komutları yerine getiriyor. Tabi hangi komuta nasıl bir tepki vereceğini sisiz programlamanız gerekli. Bunlardan bahsedeceğim. Sizlerde ihtiyaç duyduğunuz yada fikir olarak şöyle bir bot olsa faydalı olurdu dediğiniz konuları aşağıda comment olarak yazın tartışalım.

Telegramı çep telefonunuza kurup gerekli adımları geçiyoruz. Bundan sonra yeni bir bot oluşturmak için tüm botların babası BotFather’ı arayıp (search) chat yapmak için sistemimize ekliyoruz. BotFather’in resmi şu şekilde benzer isimde sahte hesaplar da var onlara kanmayın 🙂

telegram

Bu arkadaşı ekledikten sonra onunla chatleşerek yeni Botumuzu oluşturacağız. Mevcut kullanabileceğimiz komutları görmek için /help yazabiliriz.

sc-1

Yeni Botunuzu oluşturmak için  /newbot yazıp BotFather’a gönderin. Bundan sonra size Botunuza ne isim vereceğinizi (name) daha sonrada sonu Bot ile bitecek olan username’ı seçmenizi isteyecek.

Bu adımları tamamlarsanız Tebrikler ilk Botunuzu oluşturdunuz. Burada en önemlisi size gönderilen API token. Bunu sağlam bir yere kopyalayın bundan sonra lazım olacak. API Token aşağıdakine benzeyen harf ve rakamlar topluluğu

270485614:AAHfiqksKZ8WmR2zSjiQ7_v4TMAKdiHm9T0

Yeni botunuzu arayıp konuşmak için listenize ekleyin. Birkaç mesaj yazın. Ne oldu hiç cevap gelmedi mi? Çünkü botunuzun henüz bir zekası yok 🙁

Bir sonraki yazıda botumuza zeka katıp bazı işleri yapmasını sağlayacağız. Fikir ve önerilerinizi bekliyorum.

Yapay Zeka ve Öğrenen Makinalar

Hızla dünyada en çok konuşulan konulardan biri haline gelen yapay zeka benim de yıllardır ilgimi çeken konuların başında gelmektedir. Daha önceden de bu alanda yapılan yazılımları incelemiş ve önemli bir konu olduğuna kanaat getirmiştim. Ama hep kendi kendine düşünebilen makinalar yapmak için bu düşünce sisteminin dışından probleme bakmak gerektiğini savunmuşumdur. Bunu da insan oğlu nasıl yapabilir ki demişimdir. Bu düşünce sisteminin dışından bir bilgisayar peki hala bunu yapabilir. Yapay zeka konuşmaları mutlaka felsefi bir yöne doğru gitmeye meğillidir ama ben bunu yapmayacağım. 2017 yılında kendimi bu konuda geliştirmek yönünde bir karar aldım ve öğrendiklerimi buradan sizlerle paylaşacağım. Gnexlab’da çoğunlukla laf üretmek yerine çalışan örnekler vermeye çalışıyorum. ML (Machine Learning) konusunda da durum böyle olacak. Bu konuya ilgi duyan bu konuda çalışan sizlerle iletişim kurmak beni mutlu eder. Ama ödev sorularınızı cevap veremiyeceğimi belirtmek isterim. Bu yazıda sadece 6 satır kod ile çalışan bir ML uygulaması yapacağız.

Şimdi hızlıca ML nedir ve neden bu kadar önemli biraz bundan bahsedelim. Aslında ML yapay zekanın bir alt dalı. Bir çok problemi yeniden kodlama yapma gereği olmadan çözmek amacı ile geliştiriliyor.

Yalçın Yenigün burada şu şekilde türkçeleştirmiş

ML : Bilgisayarların dışarıdan programlanmaya ihtiyaç duymadan kendi kendine öğrenme yeteneğine “machine learning” denir.

Aslında ML kod içine gömülmüş kural setleri yerine örneklerden ve tecrubelerden öğrenen bilgisayar yazılımlarına verilen genel bir isim bir kavram.

Bu tanım bile ne kadar önemli olduğunu anlatıyor ama basit olmasına rağmen ML dışında çözümü pek de mümkün olmayan bir örnek üzerinden devam edelim.

Elma ile Portakal arasındaki farkı anlatan bir kod yazmanızı istesem. İlk aklımıza gelen turuncu ve yeşil pikselleri saymak bir çözüm olarak gelebilir.

Inline image 1

Turuncunun fazla yeşilin az olduğu resimleri portakal olarak ayırabilirsiniz. Fakat gerçek dünya bu kadar basit değil malesef. Kod içine yazdığınız sabit kural setleri çok kolay kırılacaktır. Mesela size siyah beyaz bir resim versem.

Inline image 2

Emin olun yukarıda yazdığınız kural setlerini kıracak bir çok resim bulabilirim. Siz de tonlarca kod ekleyerek tüm bu kural setlerini benim bulduğum uygunsuz resimleri de kapsayacak şekilde düzeltmeye çalışırsınız. Peki ya problemi değiştirirsem? Yeni problem için sil baştan tekrar tonlarca yeni kural seti mi yazacaksınız?

O zaman bizim için tüm bu kural setlerini yazacak bir algoritmaya ihtiyacımız var.

Şimdi işte işin zevkli kısmına geliyoruz. Bizim bir sınıflandırıcıya (Classifier ) ihtiyacımız var. Nedir bu sınıflandırıcı? Aslında sınıflandırıcıyı bir fonksiyon olarak düşünmek gerek. Bu fonksiyon dataları input olarak alıyor ve sonuç olarak bir etiket döndürüyor. Örnek olarak sınıflandırıcınız bir e-postayı alıp bunun spam mi yoksa değilmi diye ayrıştırıyor olabilir.

Örnekler içerisindeki belirli patternleri (kalıpları) bulmak için sınıflandırıcı geliştirmeye Supervised Learning deniliyor. (Türkçe terimlerde yardımlarınızı bekliyorum.)

Sınıflandırıcımıza girdi olarak verdiğimiz datalardan birisi eğitim datalarıdır. Mesela yukarıdaki örnek için meyvaların ağırlık ve yüzeyleri tablosu eğitim datamız olsun.

Inline image 3

 

ML de bu ağırlık ve yüzey pürüzlülüğüne features denilmekte. Bu özellikleri ne kadar doğru ve çeşitli verirseniz sınıflandırıcınız o denli doğru çalışacaktır. Bu örnekde Karar ağacı (decision tree) sınıflandırıcısını kullanacağız. Bunun gibi bir çok sınıflandırıcı algoritması geliştirilmiştir. Şimdilik karar ağıcı yada diğer sınıflandırıcı çeşitlerinin iç yapısına girmeden onları bir kurallar kutusu olarak düşünmekte yarar var. Buradaki en önemli konu içeriğini şimdilik bilmesek de tüm sınıflandırıcıların girdi ve çıktıları aynıdır. Data girer tahmin çıkar.

Sınıflandırıcıyı oluştururken örnekler içerisindeki kalıpların kullanılacağından bahsetmiştik.

Inline image 4

Mesela portakal genellikle elmadan daha ağırdır. O zaman ağır olan meyva daha büyük olasılıkla portakaldır diye bir kural seti olabilir. Demin de dediğimiz gibi bu kural setini biz elimizle yazmıyoruz. Verdiğimiz ağırlık datalarına bakarak bu kural setini sınıflandırıcı otomatik olarak oluşturuyor. Bu kural seti gibi yüzlerce binlercesini kendisi oluşturabilir. Mesela verdiğiniz yüzlerce hastalık belirtilerinden, tahlil sonuclarından o hastalığın büyük olasılıkla ne olduğuna bir makina insandan daha doğru karar verebilir. Ya da insansız bir hava aracı işlediği görüntü verilerden hareket kalindeki insan topluluğunun terorist mi yoksa yöre halkı mı olduğunun kararını doğru bir şekilde verebilir.

Konuyu dağıtma eğilimimi bastırıp ilgimi çeken ve bundan sonra derinlemesine inceleyeceğim iki açık kaynak ML kütüphanesinden bahsederek devam edeyim. Bunlardan ilki scikit-learn diğeri de çıkalı bir yıl olmasına rağmen Linux dan daha fazla yıldız alan Google’ın TensorFlow kütüphanesi. Bundan sonra çalışmalarımda bu iki kütüphaneden yararlanacağım.

Yukarıdaki örneği scikit’de kodlarsak aşağıdaki 6 satır kodu elde ediyoruz. (Python kodu)

Inline image 5

 

Burada etiketleri ifade etmesi için sayıları kullanmamız gerekiyor. Zira aslında ML kütüphaneleri dediğimiz kodlar büyük matris işlemlerini çok hızlı yapabildikleri için günümüzde ML bir ivme kazandı. (ML kodlarının çalıştırıldığı donanımlardan ilerde bahsedeceğim)

0  bumpy yani pürüzlü yüzeyi 1 ise smooth yani düzgün yüzeyi
1 portakalı 0 ise elmayı temsil etsin.
Kodu yukarıdaki tablolarla birlikte incelerseniz özellikler tablosundan features dizinini oluşturuyoruz. Labels da bunlara karşılık gelen meyvenin ismini tutuyor.
clf olarak Karar ağacı sınıflandırıcımızı tanımlıyoruz. Bu sınıflandırıcıya features ve labels dizinlerini fit foksiyonu yardımıyla input olarak veriyoruz. Bu sınıflandırıcımızın eğitim işlemi. Daha sonra yine clf objesinin bir fonksiyonu olan predict ile ağırlığı 150 gram ve yüzeyi pürüzlü meyva nedir diye tahmin etmesini istiyoruz. Cevap 1 yani Portakal oluyor.

Tebrikler

Buraya kadar geldiyseniz 6 satırlık ilk ML kodunu anladınız demektir. Asıl güzel kısmı bu kodu hiç değiştirmeden yeni örneklerle eğitip başka problemleri çözmesini isteyebiliriz.

Inline image 6

 

Konu, anlaşılması için ne kadar sadeleştirilmiş olsa da eğer buraya kadar anlatılanlardan hoşlandıysanız ML sizin için de öğrenmeye değer olabilir. Zira Önümüzdeki 10 sene bunu çok konuşuyor olacağız.

Bir sonraki bölümlerde kod geliştirme ortamı kurulumu ve basit örneklerle devam edeceğiz. Takipte kalın.

Kaynaklar :

1- Açık kaynak ML kütüphanesi Scikit-Learn:  http://scikit-learn.org/stable/index.html

2- Açık kaynak ML kütüphanesi TensorFlow: https://www.tensorflow.org/

3- Google Developers:  https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw

4- ML Recepies by Josh Gordon : https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal