Veri bilimi problemleri üzerinde çalışırken, bir projedeki kodunuzu başkalarıyla birlikte çalışmak ve paylaşmak için etkileşimli bir ortam kurmak isteyebilirsiniz. Bunu bir not defteriyle kolayca kurabilirsiniz.
Diğer durumlarda ise, veri bilimi probleminizin analizine yönelik iş akışını ve elde ettiğiniz sonuçları aktarmak istersiniz. Şeffaf ve yeniden üretilebilir bir rapor için bir not defteri de işinize yarayabilir.
Aynen öyle; not defterleri, düz metni grafikler, hesaplamalar vb. zengin metin öğeleriyle birleştirmek istediğiniz durumlar için idealdir.
Bu eğitimde şu konular ele alınacaktır:
R ve Jupyter Notebook
Düşündüğünüzün aksine, Jupyter sizi yalnızca Python ile çalışmakla sınırlandırmaz: not defteri uygulaması dil bağımsızdır; bu da diğer dillerle de çalışabileceğiniz anlamına gelir.
Jupyter ile R kullanmaya başlamak için iki genel yol vardır: bir çekirdek kullanmak ya da veri bilimine başlamak için gerekli temel araçlara sahip bir R ortamı kurmak.
R Çekirdeği ile Jupyter'da R Çalıştırma
Yukarıda açıklandığı gibi, R'ı çalıştırmanın ilk yolu bir çekirdek kullanmaktır. Jupyter'da mevcut tüm çekirdeklerin tam listesini görmek isterseniz buraya gidin.
R ile çalışmak için IRKernel'i yükleyip etkinleştirmeniz gerekir; böylece not defteri ortamında R ile çalışmaya başlayabilirsiniz.
Önce bazı paketleri yüklemeniz gerekecek. Bunu RStudio konsolunda değil, normal bir R terminalinde yaptığınızdan emin olun; aksi halde şu tür bir hata alırsınız:
Error inIRkernel::installspec():
Jupyter or IPython 3.0 has to be installed but could neither run “jupyter” nor “ipython”, “ipython2” or “ipython3”.(Note that “ipython2” is just IPython for Python 2, but still may be IPython 3.0)Altyapı:
Bu "essentials" paketleri arasında dplyr, shiny, ggplot2, tidyr, caret ve nnet bulunur. Essentials'ı mevcut ortamınıza kurmak istemezseniz, yalnızca R essentials için yeni bir ortam oluşturmak üzere şu komutu kullanabilirsiniz:
conda create -n my-r-env -c r r-essentialsAltyapı:
Şimdi R ile çalışmaya başlamak için not defteri uygulamasını açın.
Veri bilimi projenizi genişletmek için ek paketler kurmak istediğinizde ne yapmanız gerektiğini merak ediyor olabilirsiniz. Sonuçta, bu paketler başlangıç için yeterli olabilir ama başka araçlara ihtiyaç duyabilirsiniz.
Bunun için ya örneğin şu komutu çalıştırarak bir Conda R paketi oluşturabilirsiniz:
Ya da paketi R içinden install.packages() veya devtools::install_github (GitHub'dan paket yüklemek için) ile kurabilirsiniz. Yalnızca yeni paketi Jupyter'ın kullandığı doğru R kitaplığına eklediğinizden emin olmanız gerekir:
Bundan sonra R ile çalışmaya başlayabilir veya veri analizinizde %R sihirli komutuyla Python'dan R'a kolayca geçiş yapabilirsiniz.
Küçük bir örnekle R sihrinin nasıl çalıştığını gösterelim:
# Hide warnings if there are any
import warnings
warnings.filterwarnings('ignore')
# Load in the r magic
%load_ext rpy2.ipython
# We need ggplot2
%Rrequire(ggplot2)
# Load in the pandas library
import pandas as pd
# Make a pandas DataFrame
df = pd.DataFrame({'Alphabet':['a','b','c','d','e','f','g','h','i'],'A':[4,3,5,2,1,7,7,5,9],'B':[0,4,3,6,7,10,11,9,13],'C':[1,2,3,1,2,3,1,2,3]})
# Take the name of input variable df and assign it to an R variable of the same name
%%R-i df
# Plot the DataFrame df
ggplot(data=df)+geom_point(aes(x=A, y=B, color=C))Altyapı:
Jupyter hakkında daha fazla ayrıntı, bir not defteri nasıl kurulur, uygulama nereden indirilir, not defteri uygulaması nasıl çalıştırılır (Docker, pip install veya Anaconda dağıtımı ile) gibi diğer bilgiler için Kapsamlı Rehberimize göz atın.
R Notebook
Yakın zamana kadar, Jupyter R kullanıcıları için, Apache Zeppelin veya Beaker gibi not defterlerinin yanında popüler bir çözüm gibi görünüyordu.
Ayrıca, R topluluğunda R Markdown, Knitr veya Sweave gibi veri analizi sonuçlarını raporlamaya yönelik diğer alternatifler de son derece popülerdi.
Ancak, RStudio'nun yakın zamanda yayımladığı R veya R Markdown Notebook ile bu değişebilir.
Gördüğünüz gibi: R Markdown Notebook'un bağlamı karmaşıktır ve bu not defterinin oluşturulmasına ve geliştirilmesine neyin yön verdiğini anlamak için R'da yeniden üretilebilir araştırmanın tarihine bakmaya değerdir. Sonunda, bu not defterinin diğerlerinden farklı olduğunu da fark edeceksiniz.
R ve Yeniden Üretilebilir Araştırmanın Tarihi
Konuşmasında J.J Allaire, R'da yeniden üretilebilir araştırmaya yönelik çabaların, metin ile kodu ve girdiyi birleştirme konusundaki Emacs çabalarının, Pandoc, Markdown ve knitr projelerinin ve hesaplamalı not defterlerinin yıllardır paralel olarak gelişip birbirlerini etkilediğini teyit eder. Tüm bu etkenlerin nihayetinde R için not defterlerinin ortaya çıkmasına ve gelişmesine yol açtığını belirtir.
Öncelikle, hesaplamalı not defterlerinin ciddi bir geçmişi vardır: 80'lerin sonlarında Mathematica'nın ön yüzü yayımlandığından bu yana birçok gelişme yaşandı. 2001'de Fernando Pérez IPython'u geliştirmeye başladı, ancak ekip yalnızca 2011'de IPython'un 0.12 sürümünü çıkardı. SageMath projesi 2004'te başladı. Sonrasında birçok not defteri ortaya çıktı. Veri bilimi topluluğu için en dikkat çekicileri Beaker (2013), Jupyter (2014) ve Apache Zeppelin (2015) oldu.
Ardından, RStudio'nun not defteri uygulamasının oluşumunu etkileyen işaretleme dilleri ve metin düzenleyicileri de vardır; yani Emacs, Markdown ve Pandoc. Org-mode 2003'te yayımlandı. Emacs adlı özgür yazılım metin düzenleyicisinde not alma, planlama ve yazarlık için bir düzenleme ve organizasyon modudur. Altı yıl sonra, R kullanıcılarına destek sağlamak için Emacs org-R geldi. Öte yandan Markdown, düz metninizi HTML veya diğer formatlara dönüştürülebilecek şekilde biçimlendirmenize olanak tanıyan bir işaretleme dili olarak 2004'te yayımlandı. Birkaç yıl daha ileri sardığımızda, Pandoc yayımlandı. Bu, bir yazma aracıdır ve yayıncılık iş akışları için bir temel görevi görür.
Son olarak, araştırmanın yeniden üretilebilir ve şeffaf olmasını sağlamak için R topluluğunun çabaları da R için bir not defterinin yükselişine katkıda bulundu. 2002'de, LaTeX belgeleri içine R kodu gömerek PDF dosyaları üretmeye olanak tanıyan Sweave tanıtıldı. Bu PDF dosyaları öyküleme ve analizi, grafikleri, kodu ve hesaplama sonuçlarını birleştiriyordu. On yıl sonra, Sweave'deki uzun süredir devam eden sorunları çözmek ve diğer ek paketlerde bulunan özellikleri tek bir pakette birleştirmek için knitr geliştirildi. Bu, R'da dinamik rapor üretimi için şeffaf bir motordur. Knitr, herhangi bir giriş diline ve herhangi bir çıktı işaretleme diline izin verir.
Yine 2012'de, R kod bloklarını gömebilen ve yeniden üretilebilir web tabanlı raporlar oluşturmak için knitr ile birlikte kullanılabilen bir Markdown çeşidi olarak R Markdown oluşturuldu. En büyük avantajı, hâlâ geçerli olduğu üzere, artık öğrenmesi ve kullanması bir öğrenme eğrisi gerektiren LaTeX'i kullanmanın zorunlu olmamasıdır. R Markdown söz dizimi, normal Markdown sözdizimine oldukça benzer, ancak örneğin LaTeX denklemlerini ekleyebilmeniz gibi bazı ince ayarlar içerir.
R Markdown ile Hesaplamalı Not Defterlerinin Karşılaştırması
R Markdown, R topluluğunda veri analizlerini raporlamak için muhtemelen en popüler seçeneklerden biridir. Hiç şaşırtıcı değildir ki R Markdown Notebook'un hâlâ temel bir bileşenidir.
R Markdown ile not defterlerinin paylaştığı bazı şeyler vardır: yeniden üretilebilir bir iş akışı sunmaları, kodu, çıktıyı ve metni tek bir belgede birlikte örmeleri, etkileşimli bileşenleri desteklemeleri ve birden fazla formata çıktı verebilmeleri gibi. Ancak vurguları farklıdır: R Markdown yeniden üretilebilir toplu çalıştırmaya, düz metin temsiline, sürüm kontrolüne, üretim çıktısına odaklanır ve R betikleri için kullandığınız aynı düzenleyici ve araçları sunar.
Öte yandan, geleneksel hesaplamalı not defterleri kodla satır içi çıktıya, oturumlar arasında çıktının önbelleğe alınmasına, kodun ve çıktının tek bir dosyada paylaşılmasına odaklanır. Not defterleri, etkileşimli yürütme modeline vurgu yapar. Düz metin temsili kullanmazlar; JSON gibi yapılandırılmış veri temsilleri kullanırlar.
Bunların tümü, RStudio'nun not defteri uygulamasının amacını açıklar: R Markdown'ın tüm avantajlarını hesaplamalı not defterlerinin sunduğu iyi yönlerle birleştirir.
Bu nedenle R Markdown, R Markdown Notebook'un temel bir bileşenidir: RStudio not defterini "girdi hemen altında görünen çıktıyla, bağımsız ve etkileşimli olarak çalıştırılabilen parçacıklara sahip bir R Markdown belgesi" olarak tanımlar.
R Notebook'larla Nasıl Çalışılır
Daha önce Jupyter veya başka bir hesaplamalı not defteriyle çalıştıysanız, iş akışının çok benzer olduğunu göreceksiniz. Varsayılan olarak artık kod hücreleriyle çalışmıyor olmanız farklı gelebilir: bunun yerine, kod bloklarınızı R Markdown ile belirttiğiniz bir tür metin düzenleyiciyle çalışırsınız.
R Markdown Notebook Nasıl Kurulur ve Kullanılır
Not defterini kullanmanın ilk gereksinimi, bilgisayarınızda RStudio'nun en yeni sürümünün kurulu olmasıdır. Not defterleri RStudio'nun yeni bir özelliği olduğundan yalnızca RStudio'nun 1.0 veya üzeri sürümlerinde mevcuttur. Bu yüzden doğru sürümün kurulu olup olmadığını kontrol etmek önemlidir.
RStudio 1.0 veya daha yeni bir sürüme sahip değilseniz, en son sürümü buradan indirebilirsiniz.
Ardından yeni bir not defteri oluşturmak için File sekmesine gidin, New File'ı seçin ve yeni bir R Markdown Notebook oluşturma seçeneğini göreceksiniz. RStudio sizden bazı paketleri güncellemenizi isterse, teklifi kabul edin ve sonunda yeni bir dosya görünecektir.
İpucu: Belgenizin üst kısmına bakarak bir not defteriyle çalışıp çalışmadığınızı iki kez kontrol edin. Çıktı html_notebook olmalıdır.
Belgede görünen varsayılan metnin R Markdown formatında olduğunu göreceksiniz. R Markdown size oldukça tanıdık gelmelidir; ancak henüz çok yetkin değilseniz, R Markdown ile Raporlama kursumuza göz atabilir veya RStudio'nun sunduğu materyali inceleyebilirsiniz.
Not: Dişli simgesini kullanarak not defterinin çalışma alanını her zaman ayarlayabilirsiniz: kodunuzun çıktısını genişletme, daraltma ve kaldırma, önizleme seçeneklerini değiştirme ve çıktı seçeneklerini değiştirme imkânınız vardır.
Bu son seçenek; sözdizimi vurgulamayı değiştirmek, başka bir tema uygulamak, çıktınızda görünen şekillerin varsayılan genişlik ve yüksekliğini ayarlamak vb. istediğinizde işinize yarayabilir.
Buradan sonra, kod blokları ve metin eklemeye başlayabilirsiniz!
Kod bloklarını iki yolla ekleyebilirsiniz: klavye kısayolu Ctrl + Alt + I veya Cmd + Option + I ya da araç çubuğunda bulacağınız ekle düğmesiyle.
Bu R Markdown not defterleriyle çalışmanın güzel yanı, büyük kod bloklarını veya birden fazla kod bloğunu aynı anda yürütürken solda beliren küçük yeşil çubuk sayesinde kod yürütmenizi takip edebilmenizdir. Ayrıca altta bir ilerleme çubuğu olduğunu da unutmayın.
Yeşil ilerleme çubuğunun aşağıdaki gifte belirdiğini görebilirsiniz:
Kod yürütmeden bahsetmişken: R kod bloklarınızı çalıştırmanın birden fazla yolu vardır.
Bir kod bloğunu çalıştırabilir veya bir sonraki bloğu çalıştırabilir, aşağıdaki ve yukarıdaki tüm kod bloklarını çalıştırabilir; ayrıca R'ı yeniden başlatıp tüm blokları çalıştırmayı veya yeniden başlatıp çıktıyı temizlemeyi seçebilirsiniz.
Not: Not defterinin kodunu çalıştırdığınızda, çıktının konsolunuzda da görüneceğini göreceksiniz! Bu, genellikle Jupyter gibi diğer hesaplamalı not defterleriyle çalışanlar için oldukça büyük bir fark olabilir.
Not defterinin kod blokları yürütülürken herhangi bir hata olursa, yürütme durur ve hatayı üreten kod parçasının yanında kırmızı bir çubuk belirir.
Yürütmenin durmasını, parça seçeneklerine errors = TRUE ekleyerek bastırabilirsiniz; şöyle:
Not: Hata yine görünecektir, ancak not defterinin kod yürütmesi durdurulmayacaktır!
R Markdown Notebook'un Sihri Nasıl Kullanılır
Tıpkı Jupyter'da olduğu gibi, R Markdown not defterlerinizle de etkileşimli çalışabilirsiniz. Jupyter'dan biraz farklı çalışır; gerçek sihirli komutlar yoktur; diğer dillerle çalışmak için not defterine ayrı Bash, Stan, Python, SQL veya Rcpp blokları eklemeniz gerekir.
Bu seçenekler size sınırlı görünebilir, ancak araç çubuğundaki ekle düğmesiyle bu tür kod bloklarını çok kolay ekleyebilmeniz bunu telafi eder.
Ayrıca bu kod bloklarıyla çalışmak da kolaydır: J.J Allaire tarafından yayımlanan bu belgede SQL bloklarına bir örnek görebilirsiniz. Bash komutları için, komutu yazmanız yeterlidir. Jupyter ile çalışırken yaptığınız gibi Bash'te çalıştığınızı belirtmek için ek karakterlere, örneğin ‘!’ işaretine gerek yoktur.
R Markdown Not Defterlerinizi Nasıl Dışa Aktarırsınız
Not defterinin son sürümünü oluşturmadan önce yaptıklarınızı önizlemek isteyebilirsiniz. Bunu yapmanızı sağlayan kullanışlı bir özellik var: araç çubuğunda bulacaksınız.
"Önizleme" düğmesine tıklayın; belgenizin geçici sürümü sağ tarafta, "Viewer" sekmesinde açılacaktır.
Not defterinin üstteki ilk bölümüne bazı satırlar ekleyerek çıktı seçeneklerinizi şöyle ayarlayabilirsiniz:
---title:"Notebook with KNN Example"output:pdf_document:highlight: tango
toc: yes
html_notebook:toc: yes
---Altyapı:
Bu dağıtımları nereden edinebileceğinizi görmek için örmeyi (knit) deneyebilirsiniz; konsol çıktısı gerekli paketleri nereden indirebileceğinize dair siteleri verecektir.
Bunun, bir not defterini dışa aktarmak için sahip olduğunuz birçok seçenekten yalnızca biri olduğunu unutmayın: GitHub belgeleri, Word belgeleri, beamer sunumları vb. oluşturma olanağı da vardır. Bunlar, normal R Markdown dosyalarıyla zaten sahip olduğunuz çıktı seçenekleridir. Daha fazla bilgiyi burada bulabilirsiniz.
R Notebook ile Çalışmak İçin İpuçları ve Püf Noktaları
Kodunuzu belgeleme ve tutarlı bir adlandırma şeması, kod gruplama ve ad uzunluğu uygulama gibi aklınızda tutmanız gereken genel kodlama uygulamalarının yanı sıra, bir not defterini başkalarının kullanması ve okuması için harika hale getirmek üzere aşağıdaki ipuçlarını da kullanabilirsiniz:
Hesaplamalı not defterlerinde olduğu gibi, büyük kod bloklarını veya birden fazla çıktı üreten kod bloklarını birden çok parçaya bölmek faydalı olabilir. Böylece genel kullanıcı deneyimini iyileştirir ve bir not defterinin şeffaflığını artırırsınız.
Çalışmanızı hızlandırmak için klavye kısayollarını kullanın. Çoğunu, gerçekleştirmek istediğiniz komutların yanında araç çubuğunda bulacaksınız.
Raporunuzun dilbilgisinin doğru olduğundan emin olmak için araç çubuğundaki yazım denetimini kullanın.
Bir not defteri yoğun biçimde kod içeriyorsa, kodunuzu gizleme seçeneğinden yararlanın. Bunu kod parça seçenekleriyle veya not defterinin HTML dosyasında yapabilirsiniz!
R Notebook ve Jupyter Notebook Karşılaştırması
Yukarıda Jupyter ve R Markdown not defterleri arasındaki farkları okuduklarınıza ek olarak, birkaç nokta daha vardır.
Jupyter'ı R Markdown Notebook ile karşılaştıralım!
İlginizi çekebilecek dört unsur vardır: not defteri paylaşımı, kod yürütme, sürüm kontrolü ve proje yönetimi.
Not Defteri Paylaşımı
Bir R Markdown not defterinin kaynak kodu bir .Rmd dosyasıdır. Ancak bir not defterini kaydettiğinizde, yanında bir .nb.html dosyası oluşturulur. Bu HTML dosyası, R Markdown kaynak kodunun ve üretilen çıktının bir kopyasını içeren ilişkili bir dosyadır.
Bu, dosyayı görmek için özel bir görüntüleyiciye ihtiyaç duymayacağınız anlamına gelir; oysa Jupyter uygulamasıyla yapılan not defterlerini, yani basit JSON belgelerini veya yapılandırılmış format çıktıları olan diğer hesaplamalı not defterlerini görüntülemek için buna ihtiyaç duyabilirsiniz. R Markdown not defterinizi herhangi bir web sunucusunda, GitHub'da veya e-posta eki olarak yayımlayabilirsiniz.
R Markdown not defterlerini işlemek ve ayrıştırmak için API'ler de vardır: bu, diğer ön yüz araçlarına R Markdown için not defteri yazım modları oluşturma yeteneği verir. Ya da bu API'ler farklı not defteri formatlarına dönüştürme araçları oluşturmak için kullanılabilir.
Jupyter uygulamasında oluşturduğunuz not defterlerini paylaşmak için, not defterlerini slayt gösterileri, bloglar, panolar vb. olarak dışa aktarabilirsiniz. Daha fazla bilgiyi bu eğitimde bulabilirsiniz. Ancak varsayılan seçenekler olarak Python betikleri, HTML dosyaları, Markdown dosyaları, PDF dosyaları veya reStructured Text dosyaları üretme olanağı da vardır.
Kod Yürütme
R Markdown Notebooks, bir kod bloğunu çalıştırma veya bir sonraki bloğu çalıştırma, aşağıdaki ve yukarıdaki tüm kod bloklarını çalıştırma seçeneklerine sahiptir; Buna ek olarak R'ı yeniden başlatıp tüm blokları çalıştırmayı veya yeniden başlatıp çıktıyı temizlemeyi de seçebilirsiniz.
Bu seçenekler, R ile çalışırken ilginçtir; çünkü R Markdown Notebook, tüm R kod parçalarının aynı ortamı paylaşmasına izin verir. Ancak, R dışı kod parçalarıyla çalışıyorsanız bu büyük bir dezavantaj olabilir; zira bunlar ortamları paylaşmaz.
Genel olarak, bu kod yürütme seçenekleri, Jupyter'ın sunduğu kod yürütme seçenekleriyle mücadele eden kullanıcılar için hatırı sayılır düzeyde esneklik ekler; bunlar çok farklı olmasa da: Jupyter uygulamasında tek bir hücreyi çalıştırma, hücreleri çalıştırma ve tüm hücreleri çalıştırma seçeneğiniz vardır. Ayrıca, geçerli veya tüm çıktıları temizlemeyi de seçebilirsiniz. Kod ortamı, kod hücreleri arasında ortaktır.
Sürüm Kontrolü
Jupyter'ın not defterlerinin sürüm kontrolünü karıştırdığı veya bu not defterleriyle git kullanmanın zor olduğuna dair iddialar vardır. Bu soruna çözümler; not defterini bir betik olarak dışa aktarmak, commit ederken değişmemesi gereken meta verilerin kısımlarını düzeltmek için bir filtre kurmak veya çalışma sayacını ve çıktıyı ayıklamaktır.
R Markdown not defterleri bu sorunu biraz daha kolay yönetilebilir hâle getiriyor gibi görünür; çünkü kodunuzun çıktısını kaydeden ilişkili HTML dosyaları vardır ve not defteri dosyaları esasen düz metin dosyalarıdır; bu sayede sürüm kontrolü çok daha kolay olur. Yalnızca .Rmd dosyanızı GitHub'a veya diğer sürümleme sisteminize koymayı seçebilir ya da .nb.html dosyasını da ekleyebilirsiniz.
Proje Yönetimi
R Markdown Notebook, RStudio geliştirme setine yerel olduğundan, not defterleri R projelerinizle sorunsuz bir şekilde bütünleşir. Ayrıca bu not defterleri Python, C ve SQL dahil diğer dilleri de destekler.
Öte yandan, Jupyter projesi herhangi bir geliştirme setine yerel değildir: bu anlamda, bu not defterini projelerinizle sorunsuz bir şekilde entegre etmek için biraz çaba gerekecektir. Ancak bu not defteri daha fazla dili destekler ve Scala, Apache Toree, Julia veya başka bir dil kullanmak istiyorsanız sizin için daha uygun bir eşlikçi olacaktır.
Jupyter veya R Markdown Not Defterlerine Alternatifler
Meslektaşlarınızla, akranlarınızla ve arkadaşlarınızla kodunuzu paylaşmanızı kolaylaştıran, etkileşimli veri bilimi ortamları olarak kullanabileceğiniz not defterlerinin dışında, değerlendirilebilecek başka alternatifler de vardır.
Çünkü bazen ihtiyacınız olan bir not defteri değil; örneğin bir pano, etkileşimli bir öğrenme platformu veya bir kitaptır.
İkinci bölümde Sweave ve Knitr gibi seçeneklerden zaten bahsedildi. Dışarıda bulunan diğer bazı seçenekler şunlardır:
Bu blog yazısı R Markdown'ı belli ölçüde ele almış olsa da, bununla çok daha fazlasını yapabileceğinizi bilmelisiniz. Örneğin, flexdashboard ile panolar oluşturabilirsiniz.
Ya da Bookdown kullanarak R Markdown ile HTML, PDF, ePub ve Kindle kitaplarını hızlıca yayımlayabilirsiniz.
Shiny, panolar oluşturmak için kullanabileceğiniz bir araçtır. Shiny ile başlamak için bu sayfaya gidin.
Eğitsel bir bağlamda, DataCamp Light blogunuzda veya web sitenizde etkileşimli eğitimler oluşturmak için de kullanışlı olabilir. DataCamp Light'ın çalışmasını görmek için örneğin bu eğitime gidin.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Veri bilimi problemleri üzerinde çalışırken, bir projedeki kodunuzu başkalarıyla birlikte çalışmak ve paylaşmak için etkileşimli bir ortam kurmak isteyebilirsiniz. Bunu bir not defteriyle kolayca kurabilirsiniz.
Diğer durumlarda ise, veri bilimi probleminizin analizine yönelik iş akışını ve elde ettiğiniz sonuçları aktarmak istersiniz. Şeffaf ve yeniden üretilebilir bir rapor için bir not defteri de işinize yarayabilir.
Aynen öyle; not defterleri, düz metni grafikler, hesaplamalar vb. zengin metin öğeleriyle birleştirmek istediğiniz durumlar için idealdir.
Bu eğitimde şu konular ele alınacaktır:
R ve Jupyter Notebook
Düşündüğünüzün aksine, Jupyter sizi yalnızca Python ile çalışmakla sınırlandırmaz: not defteri uygulaması dil bağımsızdır; bu da diğer dillerle de çalışabileceğiniz anlamına gelir.
Jupyter ile R kullanmaya başlamak için iki genel yol vardır: bir çekirdek kullanmak ya da veri bilimine başlamak için gerekli temel araçlara sahip bir R ortamı kurmak.
R Çekirdeği ile Jupyter'da R Çalıştırma
Yukarıda açıklandığı gibi, R'ı çalıştırmanın ilk yolu bir çekirdek kullanmaktır. Jupyter'da mevcut tüm çekirdeklerin tam listesini görmek isterseniz buraya gidin.
R ile çalışmak için IRKernel'i yükleyip etkinleştirmeniz gerekir; böylece not defteri ortamında R ile çalışmaya başlayabilirsiniz.
Önce bazı paketleri yüklemeniz gerekecek. Bunu RStudio konsolunda değil, normal bir R terminalinde yaptığınızdan emin olun; aksi halde şu tür bir hata alırsınız:
Bu komut, gerekli paketleri yüklemek için bir CRAN aynası seçmek üzere bir numara girmenizi isteyecektir. Bir numara girin ve kurulum devam etsin.
Ardından, R çekirdeğini Jupyter'a görünür hale getirmeniz gerekir:
Şimdi
jupyter notebookile not defteri uygulamasını açın. Yeni bir not defteri oluşturduğunuzda çekirdekler listesinde R'ı göreceksiniz.Jupyter'da R Essentials Ortamı Kullanma
R ile hızlıca çalışmanın ikinci seçeneği, mevcut ortamınıza R essentials paketlerini kurmaktır:
Bu "essentials" paketleri arasında dplyr, shiny, ggplot2, tidyr, caret ve nnet bulunur. Essentials'ı mevcut ortamınıza kurmak istemezseniz, yalnızca R essentials için yeni bir ortam oluşturmak üzere şu komutu kullanabilirsiniz:
Şimdi R ile çalışmaya başlamak için not defteri uygulamasını açın.
Veri bilimi projenizi genişletmek için ek paketler kurmak istediğinizde ne yapmanız gerektiğini merak ediyor olabilirsiniz. Sonuçta, bu paketler başlangıç için yeterli olabilir ama başka araçlara ihtiyaç duyabilirsiniz.
Bunun için ya örneğin şu komutu çalıştırarak bir Conda R paketi oluşturabilirsiniz:
Ya da paketi R içinden
install.packages()veyadevtools::install_github(GitHub'dan paket yüklemek için) ile kurabilirsiniz. Yalnızca yeni paketi Jupyter'ın kullandığı doğru R kitaplığına eklediğinizden emin olmanız gerekir:Çekirdekler veya Docker ortamında R çalıştırma hakkında daha fazla bilgi istiyorsanız, bu sayfaya göz atın.
Jupyter'a Biraz R Sihri Ekleme
Not defterleriyle çalışmanın büyük bir avantajı size etkileşimli bir ortam sunmalarıdır. Bu etkileşimlilik esas olarak "sihirli komutlardan" gelir.
Bu komutlar, Python'dan komut satırı talimatlarına geçmenize veya R, Julia, Scala gibi başka bir dilde kod yazmanıza olanak tanır…
Python'dan R'a geçmek için önce aşağıdaki paketi indirmeniz gerekir:
Bundan sonra R ile çalışmaya başlayabilir veya veri analizinizde
%Rsihirli komutuyla Python'dan R'a kolayca geçiş yapabilirsiniz.Küçük bir örnekle R sihrinin nasıl çalıştığını gösterelim:
Jupyter hakkında daha fazla ayrıntı, bir not defteri nasıl kurulur, uygulama nereden indirilir, not defteri uygulaması nasıl çalıştırılır (Docker, pip install veya Anaconda dağıtımı ile) gibi diğer bilgiler için Kapsamlı Rehberimize göz atın.
R Notebook
Yakın zamana kadar, Jupyter R kullanıcıları için, Apache Zeppelin veya Beaker gibi not defterlerinin yanında popüler bir çözüm gibi görünüyordu.
Ayrıca, R topluluğunda R Markdown, Knitr veya Sweave gibi veri analizi sonuçlarını raporlamaya yönelik diğer alternatifler de son derece popülerdi.
Ancak, RStudio'nun yakın zamanda yayımladığı R veya R Markdown Notebook ile bu değişebilir.
Gördüğünüz gibi: R Markdown Notebook'un bağlamı karmaşıktır ve bu not defterinin oluşturulmasına ve geliştirilmesine neyin yön verdiğini anlamak için R'da yeniden üretilebilir araştırmanın tarihine bakmaya değerdir. Sonunda, bu not defterinin diğerlerinden farklı olduğunu da fark edeceksiniz.
R ve Yeniden Üretilebilir Araştırmanın Tarihi
Konuşmasında J.J Allaire, R'da yeniden üretilebilir araştırmaya yönelik çabaların, metin ile kodu ve girdiyi birleştirme konusundaki Emacs çabalarının, Pandoc, Markdown ve knitr projelerinin ve hesaplamalı not defterlerinin yıllardır paralel olarak gelişip birbirlerini etkilediğini teyit eder. Tüm bu etkenlerin nihayetinde R için not defterlerinin ortaya çıkmasına ve gelişmesine yol açtığını belirtir.
Öncelikle, hesaplamalı not defterlerinin ciddi bir geçmişi vardır: 80'lerin sonlarında Mathematica'nın ön yüzü yayımlandığından bu yana birçok gelişme yaşandı. 2001'de Fernando Pérez IPython'u geliştirmeye başladı, ancak ekip yalnızca 2011'de IPython'un 0.12 sürümünü çıkardı. SageMath projesi 2004'te başladı. Sonrasında birçok not defteri ortaya çıktı. Veri bilimi topluluğu için en dikkat çekicileri Beaker (2013), Jupyter (2014) ve Apache Zeppelin (2015) oldu.
Ardından, RStudio'nun not defteri uygulamasının oluşumunu etkileyen işaretleme dilleri ve metin düzenleyicileri de vardır; yani Emacs, Markdown ve Pandoc. Org-mode 2003'te yayımlandı. Emacs adlı özgür yazılım metin düzenleyicisinde not alma, planlama ve yazarlık için bir düzenleme ve organizasyon modudur. Altı yıl sonra, R kullanıcılarına destek sağlamak için Emacs org-R geldi. Öte yandan Markdown, düz metninizi HTML veya diğer formatlara dönüştürülebilecek şekilde biçimlendirmenize olanak tanıyan bir işaretleme dili olarak 2004'te yayımlandı. Birkaç yıl daha ileri sardığımızda, Pandoc yayımlandı. Bu, bir yazma aracıdır ve yayıncılık iş akışları için bir temel görevi görür.
Son olarak, araştırmanın yeniden üretilebilir ve şeffaf olmasını sağlamak için R topluluğunun çabaları da R için bir not defterinin yükselişine katkıda bulundu. 2002'de, LaTeX belgeleri içine R kodu gömerek PDF dosyaları üretmeye olanak tanıyan Sweave tanıtıldı. Bu PDF dosyaları öyküleme ve analizi, grafikleri, kodu ve hesaplama sonuçlarını birleştiriyordu. On yıl sonra, Sweave'deki uzun süredir devam eden sorunları çözmek ve diğer ek paketlerde bulunan özellikleri tek bir pakette birleştirmek için knitr geliştirildi. Bu, R'da dinamik rapor üretimi için şeffaf bir motordur. Knitr, herhangi bir giriş diline ve herhangi bir çıktı işaretleme diline izin verir.
Yine 2012'de, R kod bloklarını gömebilen ve yeniden üretilebilir web tabanlı raporlar oluşturmak için knitr ile birlikte kullanılabilen bir Markdown çeşidi olarak R Markdown oluşturuldu. En büyük avantajı, hâlâ geçerli olduğu üzere, artık öğrenmesi ve kullanması bir öğrenme eğrisi gerektiren LaTeX'i kullanmanın zorunlu olmamasıdır. R Markdown söz dizimi, normal Markdown sözdizimine oldukça benzer, ancak örneğin LaTeX denklemlerini ekleyebilmeniz gibi bazı ince ayarlar içerir.
R Markdown ile Hesaplamalı Not Defterlerinin Karşılaştırması
R Markdown, R topluluğunda veri analizlerini raporlamak için muhtemelen en popüler seçeneklerden biridir. Hiç şaşırtıcı değildir ki R Markdown Notebook'un hâlâ temel bir bileşenidir.
R Markdown ile not defterlerinin paylaştığı bazı şeyler vardır: yeniden üretilebilir bir iş akışı sunmaları, kodu, çıktıyı ve metni tek bir belgede birlikte örmeleri, etkileşimli bileşenleri desteklemeleri ve birden fazla formata çıktı verebilmeleri gibi. Ancak vurguları farklıdır: R Markdown yeniden üretilebilir toplu çalıştırmaya, düz metin temsiline, sürüm kontrolüne, üretim çıktısına odaklanır ve R betikleri için kullandığınız aynı düzenleyici ve araçları sunar.
Öte yandan, geleneksel hesaplamalı not defterleri kodla satır içi çıktıya, oturumlar arasında çıktının önbelleğe alınmasına, kodun ve çıktının tek bir dosyada paylaşılmasına odaklanır. Not defterleri, etkileşimli yürütme modeline vurgu yapar. Düz metin temsili kullanmazlar; JSON gibi yapılandırılmış veri temsilleri kullanırlar.
Bunların tümü, RStudio'nun not defteri uygulamasının amacını açıklar: R Markdown'ın tüm avantajlarını hesaplamalı not defterlerinin sunduğu iyi yönlerle birleştirir.
Bu nedenle R Markdown, R Markdown Notebook'un temel bir bileşenidir: RStudio not defterini "girdi hemen altında görünen çıktıyla, bağımsız ve etkileşimli olarak çalıştırılabilen parçacıklara sahip bir R Markdown belgesi" olarak tanımlar.
R Notebook'larla Nasıl Çalışılır
Daha önce Jupyter veya başka bir hesaplamalı not defteriyle çalıştıysanız, iş akışının çok benzer olduğunu göreceksiniz. Varsayılan olarak artık kod hücreleriyle çalışmıyor olmanız farklı gelebilir: bunun yerine, kod bloklarınızı R Markdown ile belirttiğiniz bir tür metin düzenleyiciyle çalışırsınız.
R Markdown Notebook Nasıl Kurulur ve Kullanılır
Not defterini kullanmanın ilk gereksinimi, bilgisayarınızda RStudio'nun en yeni sürümünün kurulu olmasıdır. Not defterleri RStudio'nun yeni bir özelliği olduğundan yalnızca RStudio'nun 1.0 veya üzeri sürümlerinde mevcuttur. Bu yüzden doğru sürümün kurulu olup olmadığını kontrol etmek önemlidir.
RStudio 1.0 veya daha yeni bir sürüme sahip değilseniz, en son sürümü buradan indirebilirsiniz.
Ardından yeni bir not defteri oluşturmak için File sekmesine gidin, New File'ı seçin ve yeni bir R Markdown Notebook oluşturma seçeneğini göreceksiniz. RStudio sizden bazı paketleri güncellemenizi isterse, teklifi kabul edin ve sonunda yeni bir dosya görünecektir.
İpucu: Belgenizin üst kısmına bakarak bir not defteriyle çalışıp çalışmadığınızı iki kez kontrol edin. Çıktı html_notebook olmalıdır.
Belgede görünen varsayılan metnin R Markdown formatında olduğunu göreceksiniz. R Markdown size oldukça tanıdık gelmelidir; ancak henüz çok yetkin değilseniz, R Markdown ile Raporlama kursumuza göz atabilir veya RStudio'nun sunduğu materyali inceleyebilirsiniz.
Not: Dişli simgesini kullanarak not defterinin çalışma alanını her zaman ayarlayabilirsiniz: kodunuzun çıktısını genişletme, daraltma ve kaldırma, önizleme seçeneklerini değiştirme ve çıktı seçeneklerini değiştirme imkânınız vardır.
Bu son seçenek; sözdizimi vurgulamayı değiştirmek, başka bir tema uygulamak, çıktınızda görünen şekillerin varsayılan genişlik ve yüksekliğini ayarlamak vb. istediğinizde işinize yarayabilir.
Buradan sonra, kod blokları ve metin eklemeye başlayabilirsiniz!
Kod bloklarını iki yolla ekleyebilirsiniz: klavye kısayolu Ctrl + Alt + I veya Cmd + Option + I ya da araç çubuğunda bulacağınız ekle düğmesiyle.
Bu R Markdown not defterleriyle çalışmanın güzel yanı, büyük kod bloklarını veya birden fazla kod bloğunu aynı anda yürütürken solda beliren küçük yeşil çubuk sayesinde kod yürütmenizi takip edebilmenizdir. Ayrıca altta bir ilerleme çubuğu olduğunu da unutmayın.
Yeşil ilerleme çubuğunun aşağıdaki gifte belirdiğini görebilirsiniz:
Kod yürütmeden bahsetmişken: R kod bloklarınızı çalıştırmanın birden fazla yolu vardır.
Bir kod bloğunu çalıştırabilir veya bir sonraki bloğu çalıştırabilir, aşağıdaki ve yukarıdaki tüm kod bloklarını çalıştırabilir; ayrıca R'ı yeniden başlatıp tüm blokları çalıştırmayı veya yeniden başlatıp çıktıyı temizlemeyi seçebilirsiniz.
Not: Not defterinin kodunu çalıştırdığınızda, çıktının konsolunuzda da görüneceğini göreceksiniz! Bu, genellikle Jupyter gibi diğer hesaplamalı not defterleriyle çalışanlar için oldukça büyük bir fark olabilir.
Not defterinin kod blokları yürütülürken herhangi bir hata olursa, yürütme durur ve hatayı üreten kod parçasının yanında kırmızı bir çubuk belirir.
Yürütmenin durmasını, parça seçeneklerine
errors = TRUEekleyerek bastırabilirsiniz; şöyle:Not: Hata yine görünecektir, ancak not defterinin kod yürütmesi durdurulmayacaktır!
R Markdown Notebook'un Sihri Nasıl Kullanılır
Tıpkı Jupyter'da olduğu gibi, R Markdown not defterlerinizle de etkileşimli çalışabilirsiniz. Jupyter'dan biraz farklı çalışır; gerçek sihirli komutlar yoktur; diğer dillerle çalışmak için not defterine ayrı Bash, Stan, Python, SQL veya Rcpp blokları eklemeniz gerekir.
Bu seçenekler size sınırlı görünebilir, ancak araç çubuğundaki ekle düğmesiyle bu tür kod bloklarını çok kolay ekleyebilmeniz bunu telafi eder.
Ayrıca bu kod bloklarıyla çalışmak da kolaydır: J.J Allaire tarafından yayımlanan bu belgede SQL bloklarına bir örnek görebilirsiniz. Bash komutları için, komutu yazmanız yeterlidir. Jupyter ile çalışırken yaptığınız gibi Bash'te çalıştığınızı belirtmek için ek karakterlere, örneğin ‘
!’ işaretine gerek yoktur.R Markdown Not Defterlerinizi Nasıl Dışa Aktarırsınız
Not defterinin son sürümünü oluşturmadan önce yaptıklarınızı önizlemek isteyebilirsiniz. Bunu yapmanızı sağlayan kullanışlı bir özellik var: araç çubuğunda bulacaksınız.
"Önizleme" düğmesine tıklayın; belgenizin geçici sürümü sağ tarafta, "Viewer" sekmesinde açılacaktır.
Not defterinin üstteki ilk bölümüne bazı satırlar ekleyerek çıktı seçeneklerinizi şöyle ayarlayabilirsiniz:
Bu dağıtımları nereden edinebileceğinizi görmek için örmeyi (knit) deneyebilirsiniz; konsol çıktısı gerekli paketleri nereden indirebileceğinize dair siteleri verecektir.
Bunun, bir not defterini dışa aktarmak için sahip olduğunuz birçok seçenekten yalnızca biri olduğunu unutmayın: GitHub belgeleri, Word belgeleri, beamer sunumları vb. oluşturma olanağı da vardır. Bunlar, normal R Markdown dosyalarıyla zaten sahip olduğunuz çıktı seçenekleridir. Daha fazla bilgiyi burada bulabilirsiniz.
R Notebook ile Çalışmak İçin İpuçları ve Püf Noktaları
Kodunuzu belgeleme ve tutarlı bir adlandırma şeması, kod gruplama ve ad uzunluğu uygulama gibi aklınızda tutmanız gereken genel kodlama uygulamalarının yanı sıra, bir not defterini başkalarının kullanması ve okuması için harika hale getirmek üzere aşağıdaki ipuçlarını da kullanabilirsiniz:
R Notebook ve Jupyter Notebook Karşılaştırması
Yukarıda Jupyter ve R Markdown not defterleri arasındaki farkları okuduklarınıza ek olarak, birkaç nokta daha vardır.
Jupyter'ı R Markdown Notebook ile karşılaştıralım!
İlginizi çekebilecek dört unsur vardır: not defteri paylaşımı, kod yürütme, sürüm kontrolü ve proje yönetimi.
Not Defteri Paylaşımı
Bir R Markdown not defterinin kaynak kodu bir
.Rmddosyasıdır. Ancak bir not defterini kaydettiğinizde, yanında bir.nb.htmldosyası oluşturulur. Bu HTML dosyası, R Markdown kaynak kodunun ve üretilen çıktının bir kopyasını içeren ilişkili bir dosyadır.Bu, dosyayı görmek için özel bir görüntüleyiciye ihtiyaç duymayacağınız anlamına gelir; oysa Jupyter uygulamasıyla yapılan not defterlerini, yani basit JSON belgelerini veya yapılandırılmış format çıktıları olan diğer hesaplamalı not defterlerini görüntülemek için buna ihtiyaç duyabilirsiniz. R Markdown not defterinizi herhangi bir web sunucusunda, GitHub'da veya e-posta eki olarak yayımlayabilirsiniz.
R Markdown not defterlerini işlemek ve ayrıştırmak için API'ler de vardır: bu, diğer ön yüz araçlarına R Markdown için not defteri yazım modları oluşturma yeteneği verir. Ya da bu API'ler farklı not defteri formatlarına dönüştürme araçları oluşturmak için kullanılabilir.
Jupyter uygulamasında oluşturduğunuz not defterlerini paylaşmak için, not defterlerini slayt gösterileri, bloglar, panolar vb. olarak dışa aktarabilirsiniz. Daha fazla bilgiyi bu eğitimde bulabilirsiniz. Ancak varsayılan seçenekler olarak Python betikleri, HTML dosyaları, Markdown dosyaları, PDF dosyaları veya reStructured Text dosyaları üretme olanağı da vardır.
Kod Yürütme
R Markdown Notebooks, bir kod bloğunu çalıştırma veya bir sonraki bloğu çalıştırma, aşağıdaki ve yukarıdaki tüm kod bloklarını çalıştırma seçeneklerine sahiptir; Buna ek olarak R'ı yeniden başlatıp tüm blokları çalıştırmayı veya yeniden başlatıp çıktıyı temizlemeyi de seçebilirsiniz.
Bu seçenekler, R ile çalışırken ilginçtir; çünkü R Markdown Notebook, tüm R kod parçalarının aynı ortamı paylaşmasına izin verir. Ancak, R dışı kod parçalarıyla çalışıyorsanız bu büyük bir dezavantaj olabilir; zira bunlar ortamları paylaşmaz.
Genel olarak, bu kod yürütme seçenekleri, Jupyter'ın sunduğu kod yürütme seçenekleriyle mücadele eden kullanıcılar için hatırı sayılır düzeyde esneklik ekler; bunlar çok farklı olmasa da: Jupyter uygulamasında tek bir hücreyi çalıştırma, hücreleri çalıştırma ve tüm hücreleri çalıştırma seçeneğiniz vardır. Ayrıca, geçerli veya tüm çıktıları temizlemeyi de seçebilirsiniz. Kod ortamı, kod hücreleri arasında ortaktır.
Sürüm Kontrolü
Jupyter'ın not defterlerinin sürüm kontrolünü karıştırdığı veya bu not defterleriyle git kullanmanın zor olduğuna dair iddialar vardır. Bu soruna çözümler; not defterini bir betik olarak dışa aktarmak, commit ederken değişmemesi gereken meta verilerin kısımlarını düzeltmek için bir filtre kurmak veya çalışma sayacını ve çıktıyı ayıklamaktır.
R Markdown not defterleri bu sorunu biraz daha kolay yönetilebilir hâle getiriyor gibi görünür; çünkü kodunuzun çıktısını kaydeden ilişkili HTML dosyaları vardır ve not defteri dosyaları esasen düz metin dosyalarıdır; bu sayede sürüm kontrolü çok daha kolay olur. Yalnızca
.Rmddosyanızı GitHub'a veya diğer sürümleme sisteminize koymayı seçebilir ya da.nb.htmldosyasını da ekleyebilirsiniz.Proje Yönetimi
R Markdown Notebook, RStudio geliştirme setine yerel olduğundan, not defterleri R projelerinizle sorunsuz bir şekilde bütünleşir. Ayrıca bu not defterleri Python, C ve SQL dahil diğer dilleri de destekler.
Öte yandan, Jupyter projesi herhangi bir geliştirme setine yerel değildir: bu anlamda, bu not defterini projelerinizle sorunsuz bir şekilde entegre etmek için biraz çaba gerekecektir. Ancak bu not defteri daha fazla dili destekler ve Scala, Apache Toree, Julia veya başka bir dil kullanmak istiyorsanız sizin için daha uygun bir eşlikçi olacaktır.
Jupyter veya R Markdown Not Defterlerine Alternatifler
Meslektaşlarınızla, akranlarınızla ve arkadaşlarınızla kodunuzu paylaşmanızı kolaylaştıran, etkileşimli veri bilimi ortamları olarak kullanabileceğiniz not defterlerinin dışında, değerlendirilebilecek başka alternatifler de vardır.
Çünkü bazen ihtiyacınız olan bir not defteri değil; örneğin bir pano, etkileşimli bir öğrenme platformu veya bir kitaptır.
İkinci bölümde Sweave ve Knitr gibi seçeneklerden zaten bahsedildi. Dışarıda bulunan diğer bazı seçenekler şunlardır: