Archive for the 'scala' category

Spark ML’e Kategori Değişkenlerini Belirtme

Mar 08 2017 Published by under machine learning, scala, software development

Spark ML’de sınıflandırma algoritmalarını kullanırken iki tip değişkeniniz vardır: Sürekli Değişkenler ve Kategori Değişkenleri. Sürekli değişkenler, değerin kendisinin ve değişimlerinin (artma veya azalma) sizin için önemli olduğu değişkenlerdir. Kategori değişkenleri ise sınıfsal değişkenlerdir.  (maksimum x farklı değer alabilirler.)

Algoritmanızı geliştirirken sürekli değişkenler ve kategori değişkenlerini birbirinden ayırmanız gerekmektedir. Bunun için Spark ML’de VectorIndexer sınıfı kullanılır.

İlk olarak kategori değişkenlerinizi bir Vector’de tutarsınız:

Ardından maksimum alacakları değer çeşitliliğine göre VectorIndexer sınıfını kullanarak bu değerlerinizi index’ler ve maksimum değer sayısını Indexer’a parametre olarak verebilirsiniz.

Bu alanlar artık kategori değerleri olarak index’lenmiştir ve Spark Pipeline’ına ekleyebilirsiniz:

Referans:

https://spark.apache.org/docs/latest/ml-features.html#vectorindexer

Comments are off for this post

PredictionIO kullanırken Spark’a Parametre Geçmek

Oct 25 2016 Published by under machine learning, scala

Apache PredictionIO bir çok şeyi kolaylaştıran açık kaynak kodlu bir “Machine Learning” sunucusudur. Alt yapısında SparkML ve Spark kullanır. PredictionIO ile modeli eğitirken veya test ederken Spark’a parametre geçmek için — işaretini ilgili parametrelerin başına aşağıdaki gibi koymak yeterlidir. spark-submit’e verilen değerler parametre olarak geçer:

Örnek:

 

 

Comments are off for this post

SBT Offline Build

Oct 19 2016 Published by under scala, software development

Scala ile kod geliştiriyorsanız kodu derlemek ve bağımlılık yönetimi için SBT kullanmanız gerekiyor. Yeni bir bağımlılığa ihtiyacınız yoksa ve internete bağlanmadan tekrar kodunuzu derlemek istiyorsanız build.sbt dosyanıza aşağıdaki parametreleri eklemeniz yeterli olacaktır.

Comments are off for this post

Scala Test ile Behavior-Driven-Development

Nov 11 2015 Published by under bdd, java, scala, software development

ScalaTest (http://www.scalatest.org) Scala veya Java kodlarını test etmek için kullanılan TDD ve BDD (http://dannorth.net/introducing-bdd/) kütüphanesidir. Bu alandaki alternatiflerine (JBehave & JUnit, Groovy Spock..vs.) göre daha esnektir zira hem Java’daki tüm test kütüphaneleriyle (JUnit, TestNG, Ant, Maven, sbt, ScalaCheck, JMock, EasyMock, Mockito, ScalaMock, Selenium, Eclipse, NetBeans, IntelliJ) entegre çalışabilir hem de istediğiniz isimlendirme standardını kullanabilirsiniz. (Flat Spec, Word Spec..vs.)

ScalaTest’i bir java projesinde kullanabilmek için:

  • IntelliJ IDEA kullanılıyorsa Scala plugin kurulur: http://www.scalatest.org/user_guide/using_scalatest_with_intellij
  • Maven ile testleri çalıştırmak için iki alternatif vardır.
    • Birincisi Maven ScalaTest plugin’ini kurmak:
    • İkincisi ise testlerin üzerine aşağıdaki ifadeyi eklemek. Eğer hem JUnit hem de ScalaTest kullanmak istiyorsak bu yöntem ikisini birlikte çalıştırmaya izin verir.
  • Son olarak Scala ile yazdığımız test kodlarını derleyebilmek için maven scala plugin’i kurmamız gerekiyor. Bunun için aşağıdaki plugin’i projenizdeki pom.xml dosyasına eklemeniz gerekiyor:

Artık ScalaTest yazmaya başlayabiliriz. İlk olarak kullanmak istediğimiz temayı (Spec) belirlememiz gerekiyor. (FlatSpec, WordSpec, FeatureSpec..vs.) İç içe senaryolara daha kullanışlı test yazmak için WordSpec, kullanıcı kabul testlerini (acceptance test) yazmak için ise FeatureSpec tercih edilir.

Ardından eğer Mock yapacaksak bir Mock kütüphanesi seçilir ve pom.xml’e bağımlılık eklenir. (Mockito, ScalaMock, JMock, PowerMock..vs.)

Artık ScalaTest ile test geliştirmeye başlayabiliriz. WordSpec örneği:

FlatSpec örneği:

Detaylı bilgi için:

http://www.scalatest.org

https://github.com/s4nk/scalatest-maven-template

Comments are off for this post