<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Jak badać dane?</title>
	<atom:link href="https://jakbadacdane.pl/feed/" rel="self" type="application/rss+xml" />
	<link>https://jakbadacdane.pl/</link>
	<description>Nauka o Danych, Uczenie Maszynowe, Sztuczna Inteligencja</description>
	<lastBuildDate>Fri, 30 Aug 2024 09:27:21 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.4</generator>

<image>
	<url>https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2022/10/cropped-300373056_169111892359142_2378806089853058583_n.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Jak badać dane?</title>
	<link>https://jakbadacdane.pl/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">145438076</site>	<item>
		<title>Generatory treści AI – Nowe możliwości w uczeniu maszynowym</title>
		<link>https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/</link>
					<comments>https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Mon, 02 Sep 2024 07:00:54 +0000</pubDate>
				<category><![CDATA[sztuczna inteligencja]]></category>
		<category><![CDATA[generatory AI]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Meta Llama]]></category>
		<category><![CDATA[modele językowe]]></category>
		<category><![CDATA[przetwarzanie języka naturalnego]]></category>
		<category><![CDATA[Stable Diffusion]]></category>
		<category><![CDATA[treści AI]]></category>
		<category><![CDATA[uczenie maszynowe]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1758</guid>

					<description><![CDATA[<p>Od ostatniego wpisu tutaj, minęło trochę czasu. Byłem zajęty pracą, w której zdryfowałem z zagadnień uczenia maszynowego w stronę backend aplikacji sieciowych. No i siłą rzeczy nie miałem nic ciekawego do napisania. Teraz powróciłem do uczenia maszynowego i okazało się, że mam kilka nowych zagadnień do omówienia. Generatory Do tej pory na blogu pisałem głównie &#8230; <a href="https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/" class="more-link">Czytaj dalej <span class="screen-reader-text">Generatory treści AI – Nowe możliwości w uczeniu maszynowym</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/">Generatory treści AI – Nowe możliwości w uczeniu maszynowym</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Od ostatniego wpisu tutaj, minęło trochę czasu. Byłem zajęty pracą, w której zdryfowałem z zagadnień uczenia maszynowego w stronę backend aplikacji sieciowych. No i siłą rzeczy nie miałem nic ciekawego do napisania. Teraz powróciłem do uczenia maszynowego i okazało się, że mam kilka nowych zagadnień do omówienia.</p>
<h3>Generatory</h3>
<p>Do tej pory na blogu pisałem głównie o analizowaniu danych, wyciąganiu wniosków i budowaniu modeli predykcyjnych. Okazuje się jednak, że na świecie jest coraz większy popyt na używanie uczenia maszynowego do tworzenia nowych treści. Czyli do czegoś więcej niż uzyskiwania odpowiedzi tak/nie, bądź klasy &#8222;pies&#8221;, &#8222;kot&#8221;, &#8222;koń&#8221;, bądź wartości 20000 USD. Ludzie chcą uzyskiwać kompletne gotowe treści. Taką treścią może być obrazek, który zostanie wygenerowany z tekstu. Na przykład &#8222;Maltańczyk szydełkujący na plaży w stylu <a href="https://aesthetics.fandom.com/wiki/Vacation_Dadcore" target="_blank" rel="noopener">Vacation Dadcore</a>&#8221; jakikolwiek by to miało mieć sens.</p>
<figure id="attachment_1760" aria-describedby="caption-attachment-1760" style="width: 300px" class="wp-caption alignright"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?ssl=1"><img data-recalc-dims="1" fetchpriority="high" decoding="async" data-attachment-id="1760" data-permalink="https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/dog/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?fit=1024%2C1024&amp;ssl=1" data-orig-size="1024,1024" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Maltese dog crocheting on the beach in Vacation Dadcore style" data-image-description="" data-image-caption="&lt;p&gt;Maltese dog crocheting on the beach in Vacation Dadcore style&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?fit=300%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?fit=1024%2C1024&amp;ssl=1" class="size-medium wp-image-1760" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?resize=300%2C300&#038;ssl=1" alt="Maltese dog crocheting on the beach in Vacation Dadcore style" width="300" height="300" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?resize=250%2C250&amp;ssl=1 250w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/dog.jpeg?w=1024&amp;ssl=1 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-1760" class="wp-caption-text">Maltese dog crocheting on the beach in Vacation Dadcore style</figcaption></figure>
<h3>Grafika</h3>
<p>Na załączonym obrazku widać efekt wygenerowany przez serwis <a href="https://playground.com" target="_blank" rel="noopener">playground</a> z takiego zapytania (w wersji angielskiej). Model, z którego skorzystałem to chyba <a href="https://en.wikipedia.org/wiki/Stable_Diffusion">Stable Diffusion</a> zmodyfikowany tak, żeby był szybki i tani w użyciu. No i z racji tego, że jest tanio (a nawet darmowo) i szybko, model ten produkuje nieidealne wyniki. Widać tutaj miejsce, gdzie pies oprócz bycia ubranym w ubranko szydełkowe sam też ma łapkę zrobioną na szydełku. I o ile takie coś jest dopuszczalne (można mieć maskotki zrobione na szydełku) to tutaj jest to nieprawidłowe kontekstowo zlepienie dwóch &#8222;grafik&#8221;. Pewnie gdy to czytasz, są już dostępne jeszcze lepsze modele, które popełniają coraz mniej takich błędów. &#8222;Kiedyś&#8221; łato się rozpoznawało wygenerowane obrazki po dziwnych palcach albo po tym, że oczy były różne. Teraz chyba nawet już to jest ogarnięte, więc możemy spodziewać się coraz większego zalewu tak stworzonych grafik, a nawet &#8222;filmów&#8221;.</p>
<h3>Dźwięk</h3>
<p>Podobnie sprawa ma się z muzyką oraz dźwiękiem ogólnie. Nie jest w dzisiejszych czasach niczym szczególnym mowa wygenerowana z tekstu, natomiast dzięki uczeniu maszynowemu można łatwo &#8222;przenieść&#8221; styl mowy danej osoby tak, żeby &#8222;brzmiała&#8221; dokładnie tak, jak chcemy. Możemy się więc spodziewać np. nowej fali wyłudzeń telefonicznych &#8222;na wnuczka&#8221; gdzie ofiara będzie rozmawiać z kimś, kto brzmi jak wnuczek. A tak naprawdę jest to oszust i głos generowany w czasie rzeczywistym. No i z tego co gdzieś widziałem, wskrzeszani są już piosenkarze i aktorzy. Zaiste ciekawe, ale i ponure czasy się zaczynają.</p>
<h3>Tekst</h3>
<p>Kolejną kategorią takich generatorów są &#8222;duże modele językowe&#8221; (ang. large language model, LLM). Tutaj już w ogóle temat trafił do mainstreamu i już w telewizji mówią o sztucznej inteligencji, z którą możemy chatować i napisze za nas zadanie domowe jak i całą książkę. No i tak trochę jest. Modele te nie są inteligentne same w sobie, natomiast całkiem trafnie potrafią przewidzieć, jakie powinno być kolejne słowo. I te modele skradły zainteresowanie dużej części biznesu. W dużej mierze dlatego, że sprawiają wrażenie, że są potężną i wszechstronną sztuczną inteligencją. Poniekąd też dlatego, że nie osiągnęły jeszcze limitu. Chodzi o to, że w przypadku LLMów wciąż możemy dawać im więcej danych do treningu i wciąż możemy budować większe sieci neuronowe i uzyskiwać w ten sposób lepsze wyniki. Wystarczy więc sypać pieniędzmi do pieca, a pociąg będzie jechał szybciej.</p>
<h3>Jak sami możemy się za to zabrać?</h3>
<p>Nie wiem, jak z wyżej wymienionymi aspektami graficznymi i dźwiękowymi, ale jeżeli chcemy skonstruować sobie taką sztuczną inteligencję &#8222;do pogadania&#8221; albo do tego, żeby pisała za nas zadanie domowe, to możemy się za to zabrać, nawet bez góry pieniędzy do spalenia. Potrzebujemy do tego w zasadzie dwóch elementów oprogramowania i jednego sprzętowego.</p>
<p>Jeśli chodzi o sprzęt, to dobrze byłoby mieć jakieś GPU. Nie jestem pewien czy jakaś firma przełamała już przewagę Nvidii w tej kwestii, więc jeśli masz GPU Nvidii to powinno zadziałać bez większych problemów. Im nowsze, tym lepiej i im więcej RAMu na karcie, tym lepiej. Można też próbować bez GPU, tyle że wtedy potencjalna interakcja nie będzie się odbywała w skali sekund, ale raczej grubych minut. Przy czym, w niektórych sytuacjach nie musi to być problemem.</p>
<p>Jeśli chodzi o oprogramowanie, to potrzebne nam będą dwa elementy: wytrenowany model i interface do &#8222;gadania&#8221; z modelem. Na dzień dzisiejszy (koniec sierpnia 2024) najlepszym modelem LLM dostępnym publicznie zdaje się, że jest <a href="https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct" target="_blank" rel="noopener">meta-llama/Meta-Llama-3.1-405B-Instruct</a>. Jest to model przygotowany przez firmę Meta (dawniej Facebook) <a href="https://ai.meta.com/blog/meta-llama-3-1/" target="_blank" rel="noopener">opublikowany 23 lipca 2024</a>. Dzięki korzystaniu z wytrenowanego modelu nie musimy poświęcać zasobów na jego zbudowanie. A w razie potrzeby, możemy go douczyć, jeżeli to, co w nim zostało zawarte, jest dla nas niesatysfakcjonujące. Fajna sprawa.</p>
<p>Jednakże sam model, to de facto duża tabela z liczbami rzeczywistymi, więc ciężko z takiej tabelki wydobyć odpowiedź na jakiekolwiek pytanie. Trzeba ją obudować odpowiednim interface. I tutaj z pomocą przychodzi biblioteka Python <a href="https://pypi.org/project/transformers/" target="_blank" rel="noopener">transformers</a>. Instalujemy, importujemy, wskazujemy, co chcemy zrobić i na bazie jakiego modelu chcemy to zrobić i już. Mamy darmową, kompletną, współczesną i całkiem efektywną platformę to zagadnień związanych z tekstem i ogólnie z przetwarzaniem języka naturalnego.</p>
<h3>Co dalej?</h3>
<p>Oczywiście, jak zwykle diabeł tkwi w szczegółach. Samo uruchomienie Llamy nie sprawi, że cokolwiek co robimy, nagle stanie się mądrzejsze. Jak to zwykle bywa, ML/AI jest super narzędziem, ale głównie wtedy jeżeli jesteśmy w stanie dobrze określić problem, który chcemy rozwiązać. I znaleźć dane i miejsce, do których możemy doczepić nasze rozwiązanie. Osobiście jeszcze tego nie rozgryzłem. Oczywiście jest cała masa przykładów jak można używać LLMy, ale jeszcze żaden do mnie nie przemówił. W zagadnieniach stricte tabelarycznych i w szeregach czasowych nie mam takich problemów. Umiem wyobrazić sobie konkretne namacalne przykłady i budować działające prototypy, które im odpowiadają. Tutaj jeszcze tego nie czuję. Ale myślę, że niedługo coś przygotuję i opiszę tutaj konkretniej. Także, do następnego artykułu <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/Written-By-Human-Not-By-AI-Badge-black%402x.png?ssl=1"><img data-recalc-dims="1" decoding="async" data-attachment-id="1763" data-permalink="https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/written-by-human-not-by-ai-badge-black2x/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/Written-By-Human-Not-By-AI-Badge-black%402x.png?fit=262%2C84&amp;ssl=1" data-orig-size="262,84" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Written-By-Human-Not-By-AI-Badge-black@2x" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/Written-By-Human-Not-By-AI-Badge-black%402x.png?fit=262%2C84&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/Written-By-Human-Not-By-AI-Badge-black%402x.png?fit=262%2C84&amp;ssl=1" class="aligncenter size-full wp-image-1763" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2024/08/Written-By-Human-Not-By-AI-Badge-black%402x.png?resize=262%2C84&#038;ssl=1" alt="Napisane przez człowieka, nie przez AI" width="262" height="84" /></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/">Generatory treści AI – Nowe możliwości w uczeniu maszynowym</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/generatory-tresci-ai-nowe-mozliwosci-w-uczeniu-maszynowym/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1758</post-id>	</item>
		<item>
		<title>Docker + VS Code czyli Kaggle w Twoim domu</title>
		<link>https://jakbadacdane.pl/docker-vs-code-czyli-kaggle-w-twoim-domu/</link>
					<comments>https://jakbadacdane.pl/docker-vs-code-czyli-kaggle-w-twoim-domu/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Mon, 01 Nov 2021 08:00:10 +0000</pubDate>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[jupyter notebook]]></category>
		<category><![CDATA[kaggle]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[vs code]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1690</guid>

					<description><![CDATA[<p>Każdy miał chyba taki moment w swojej karierze tudzież prywatnych działaniach, gdy entuzjastycznie zaczynał nowy projekt. Zaczynanie nowego projektu to często bardzo fajna i przyjemna sprawa. Szczególnie gdy chce nam się wszystko przygotowywać i konfigurować. Ale jeżeli akurat zależy nam na jak najszybszym przetestowaniu nowego pomysłu, takie przygotowania mogą być frustrujące i wyczerpujące. I tutaj &#8230; <a href="https://jakbadacdane.pl/docker-vs-code-czyli-kaggle-w-twoim-domu/" class="more-link">Czytaj dalej <span class="screen-reader-text">Docker + VS Code czyli Kaggle w Twoim domu</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/docker-vs-code-czyli-kaggle-w-twoim-domu/">Docker + VS Code czyli Kaggle w Twoim domu</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Każdy miał chyba taki moment w swojej karierze tudzież prywatnych działaniach, gdy entuzjastycznie zaczynał nowy projekt. Zaczynanie nowego projektu to często bardzo fajna i przyjemna sprawa. Szczególnie gdy chce nam się wszystko przygotowywać i konfigurować. Ale jeżeli akurat zależy nam na jak najszybszym przetestowaniu nowego pomysłu, takie przygotowania mogą być frustrujące i wyczerpujące. I tutaj pojawia się całkiem ciekawa technologia zwana Docker.</p>
<p>Docker to oprogramowanie, które pozwala tworzyć i uruchamiać kontenery, czyli takie wirtualne maszyny z osobnym systemem operacyjnym. Ale nie są to pełne maszyny wirtualne uruchamiane na wirtualnym sprzęcie. Są one uruchamiane na poziomie jądra systemu operacyjnego. Atutem takich kontenerów jest to, że nie generują one dużego narzutu zasobów — jak to często bywa przy pełnej wirtualizacji.</p>
<p>Powyższy akapit to jednak w dużej mierze nieistotne detale. To, co nas interesuje, to możliwość wykorzystania Dockera jako bazy do błyskawicznego przygotowania naszego środowiska pracy. I to nie byle jakiego, ale dokładnie takiego, jakie jest używane w serwisie <a href="https://jakbadacdane.pl/category/kaggle/">Kaggle</a>. No i, żeby było ciekawiej, zintegrujemy je z IDE VS Code. Od pewnego czasu jestem dużym fanem tego IDE i sądzę, że będzie to niezła gratka, nie tylko dla początkujących.</p>
<h2>Docker</h2>
<p>Pierwszy składnik, który będzie nam potrzebny to sam Docker. Nie będę tutaj rozpisywał jak dokładnie zainstalować Dockera na konkretnym systemie. Jeżeli tak jak ja korzystasz z dystrybucji Linuksa, to odpowiednie instrukcje znajdziesz <a href="https://docs.docker.com/engine/install/#server">tutaj</a>. W ten sposób zainstalujesz Docker Engine, który jest darmowy i open source. Jest to sam „silnik”, którego używa się za pomocą linii komend. Co ciekawe, w wielu dystrybucjach Docker jest już dostępny. Jest to jednak prawie zawsze dość stara wersja, która, mimo iż może działać bezproblemowo, niekoniecznie jest wspierana i maksymalnie wydajna. Polecam więc instalację najnowszej stabilnej wersji wprost z oficjalnych repozytoriów.</p>
<p>Dla systemów Windows i macOS twórcy Dockera przygotowali aplikację graficzną, która oprócz wspomnianego powyżej Docker Engine zawiera też interfejs do sprawdzania statusu uruchomionych kontenerów oraz łatwe zarządzanie nimi. Oficjalna instrukcja instalacji znajduje się <a href="https://docs.docker.com/engine/install/#desktop">tutaj</a>. Sam nie korzystałem z tego rozwiązania, ale zdaje się ono być przydatne przy rozwiązywaniu problemów, szczególnie dla początkujących. Uwaga: licencja tego narzędzia (Docker Desktop) wymusza wykupienie płatnej subskrypcji jeżeli firma, w której jest ono używane, ma więcej niż 250 pracowników lub więcej niż 10 M USD rocznego przychodu.</p>
<h2>VS Code</h2>
<p>Docker sam w sobie jest bardzo przydatnym i kompletnym narzędziem developerskim. Na dobrą sprawę, nie trzeba nic więcej, bo można &#8222;ręcznie&#8221; połączyć się z uruchomionymi kontenerami i skorzystać z narzędzi, które są tam dostępne. Albo sobie je doinstalować. Nie jest to jednak najbardziej wygodne i edukacyjne podejście dla osób początkujących. Po prostu może to być zbyt przytłaczające. I tu z pomocą przyjdzie nam VS Code. VS Code oprócz tego, że jest nowoczesnym i darmowym środowiskiem programistycznym, posiada całą gamę dodatków. I jednym z takich dodatków jest <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack" target="_blank" rel="noopener">Remote Development,</a> który pozwala na łatwe manewry związane z kontenerami właśnie.</p>
<p>Potrzebne nam więc VS Code. Pobrać je można z <a href="https://code.visualstudio.com/#alt-downloads" target="_blank" rel="noopener">oficjalnej strony Microsoftu</a>. Środowisko to jest darmowe i zbudowane z komponentów open source. Nie jest całościowo na licencji open source. Jest jednakże <a href="https://code.visualstudio.com/docs/supporting/faq#_is-vs-code-free" target="_blank" rel="noopener">darmowe, również do użytku komercyjnego</a> więc nie musimy się obawiać nalotu prawników. Po instalacji potrzebujemy jeszcze doinstalować wspomniany powyżej dodatek umożliwiający bezbolesną komunikację z Dockerem. W głównym oknie VS Code naciskamy kombinację przycisków <strong>Ctrl + p</strong>. W pasku, który się pojawi wklejamy ext <strong>install ms-vscode-remote.vscode-remote-extensionpack</strong>. VS Code połączy się wtedy z oficjalnym repozytorium i pobierze wskazany dodatek.</p>
<h2>Kaggle</h2>
<p>Teraz czeka nas najlepsza zabawa. Żeby bez problemowo móc przerzucać kod z komputera do środowisk Kaggle i odwrotnie, najlepiej byłoby mieć taką samą strukturę katalogów. Można to zrobić odpowiednio, podpinając katalogi z dysku do katalogów w kontenerze. Ale ja jakoś szczególnie nie przepadam za tym pomysłem, bo często gdzieś się pomylę i ogólnie mi to trochę zaciemnia to rozwiązanie. Moje podejście to natomiast zbudowanie sobie lokalnego drzewa katalogów, które wygląda jak drzewo katalogów Kaggle. Przyjmijmy, że chciałem pracować nad danymi z konkursu <a href="https://www.kaggle.com/c/petfinder-pawpularity-score" target="_blank" rel="noopener">PetFinder.my — Pawpularity Contest</a>. Tworzę więc sobie następującą strukturę:</p>
<pre class="brush: bash; title: ; notranslate">
kaggle
├── .devcontainer.json
├── input
│   └── petfinder-pawpularity-score
│       ├── sample_submission.csv
│       ├── test
│       │   ├── 4128bae22183829d2b5fea10effdb0c3.jpg
│       │   ├── 43a2262d7738e3d420d453815151079e.jpg
│       │   ├── 4e429cead1848a298432a0acad014c9d.jpg
│       │   ├── 80bc3ccafcc51b66303c2c263aa38486.jpg
│       │   ├── 8f49844c382931444e68dffbe20228f4.jpg
│       │   ├── b03f7041962238a7c9d6537e22f9b017.jpg
│       │   ├── c978013571258ed6d4637f6e8cc9d6a3.jpg
│       │   └── e0de453c1bffc20c22b072b34b54e50f.jpg
│       ├── test.csv
│       ├── train &#x5B;9912 entries exceeds filelimit, not opening dir]
│       └── train.csv
└── working
    └── petfinder-pawpularity-score.ipynb
</pre>
<p>Zaczynam od katalogu kaggle. Katalog ten nazwałem tak sobie po prostu, żeby wiedzieć, co w nim jest. Można go sobie nazwać dowolnie. Następnie mamy dwa kluczowe katalogi <strong>input</strong> i <strong>working</strong>. Te katalogi chcielibyśmy, żeby tak się nazywały, bo tak się nazywają w środowiskach kaggle. W katalogu <strong>input</strong> rozpakowałem sobie paczkę z danymi pobranymi z kaggle. W ichnim systemie dane te leżą w dokładnie takim samym miejscu i wszystko w nich jest takie samo. Możemy więc sięgać do katalogów test i train oraz do plików korzystając z takich samych ścieżek. Ale no właśnie, skoro ścieżki chcemy mieć takie same, to musimy startować z kodem z tego samego miejsca. I rozwiązujemy to za pomocą katalogu <strong>working</strong>. Notebook, który uruchamiamy przez środowisko na stronie kaggle znajduje się właśnie w takim katalogu. Jeżeli więc utworzymy sobie lokalnie plik notebooka (w moim przypadku nazwałem go sobie tak, jak mi pasowało, czyli nazwą konkursu) w tym katalogu, to używając względnych ścieżek, będziemy sobie mogli wczytywać dane dokładnie tak samo w obydwu przypadkach. Uważne oko, zauważy, że został nam jeden plik, którego jeszcze nie omówiłem. Jest to <strong>.devcontainer.json</strong> i właśnie on jest kwintesencją tego artykułu.</p>
<h2>.devcontainer.json</h2>
<p>W tym pliku znajdziemy opis, jak to wszystko jest ze sobą spięte. W naszym przypadku plik ten wygląda tak:</p>
<pre class="brush: bash; title: ; notranslate">
{
    &quot;image&quot;: &quot;gcr.io/kaggle-images/python&quot;,
    &quot;extensions&quot;: &#x5B;
        &quot;ms-python.vscode-pylance&quot;,
        &quot;ms-toolsai.jupyter&quot;
    ],
    &quot;containerEnv&quot;: {
        &quot;LOCAL&quot;: &quot;True&quot;
    },
}
</pre>
<p>Jest to najmniejsza wersja, jaka według mnie ma sens i jednocześnie pozwala bez problemowo pracować tak jak na stronie Kaggle. Mamy tutaj trzy elementy. Pierwszy od góry to <strong>image</strong>. Definiujemy tutaj jaki obraz Docker ma być uruchomiony. Naszym celem jest to, czego używa Kaggle. VS Code pobierze więc ten obraz z repozytorium. Zawartość tego kontenera można swobodnie podejrzeć <a href="https://github.com/Kaggle/docker-python" target="_blank" rel="noopener">tutaj</a>.</p>
<p>Później, VS Code umieszcza część swoich bebechów w uruchomionym kontenerze. Ale że jest to minimalna wersja potrzebna do uruchomienia, powinniśmy od razu doinstalować sobie potrzebne dodatki. Dodatki te definiujemy w kluczu <strong>extensions</strong>. Ja wybrałem jeden ogólny od Pythona i jeden od obsługi notebooków Jupyter.</p>
<p>Ostatnim elementem jest ustawienie zmiennej środowiskowej przez <strong>containerEnv</strong>. Za pomocą takich zmiennych możemy przekazywać m.in. do Pythona informacje o środowisku, w którym został uruchomiony. Ja stworzyłem tutaj zmienną LOCAL, której przypisałem True. Poniżej pokażę, jak ją użyłem.</p>
<h2>Praktyka</h2>
<p>Czas na praktykę. Musisz pobrać i zainstalować na swoim komputerze Docker i VS Code. Jak już je masz, to musisz stworzyć na dysku odpowiednią strukturę katalogów i plików. Aby to ułatwić, stworzyłem repozytorium, które to zawiera. Znajdziesz je <a href="https://github.com/QuantumDamage/kaggledockervscode" target="_blank" rel="noopener">tutaj</a>.</p>
<p>Teraz wystarczy uruchomić VS Code i wskazać katalog, który pobrałeś z repozytorium albo przygotowałeś ręcznie. VS Code wykryje plik .devcontainer.json i zapyta się, czy uruchomić ten katalog wewnątrz kontenera. Jeżeli się zgodzimy, to będziemy musieli chwilę poczekać. Za pierwszym razem, VS Code pobierze obraz Kaggle, który trochę waży. Na dzień pisania tego artykułu jest to <strong>18.4 GB</strong>. Waży to tyle, bo mamy tam całą masę bibliotek, które często robią praktycznie to samo. A jest tak, bo obraz ten powstał z myślą, żeby zadowolić wszystkich zainteresowanych uczeniem maszynowym w języku Python. Gdy już się oswoisz z Dockerem, dobrym pomysłem będzie zbudowanie swojego obrazu na bazie jakiegoś innego małego. Np. taki python3-slim, czyli minimalny Linux z najnowszym Pythonem to <strong>122 MB</strong>. Można go wziąć jako bazę i dorzucić swoje ulubione biblioteki jedna za drugą.</p>
<p>Gdy już się wszystko pobierze i uruchomi, możemy i uruchomić <a href="https://github.com/QuantumDamage/kaggledockervscode/blob/main/working/petfinder-pawpularity-score.ipynb" target="_blank" rel="noopener">przykładowy plik notebooka</a>. Zostaniemy zapytani o wybranie kernela. Należy zwrócić uwagę, że obojętnie jakich środowisk wirtualnych nie mamy w systemie bazowym, pojawi się tutaj lista tylko kerneli ze środowisk wewnątrz kontenera. Dokładnie o to nam chodziło. Wybieramy środowisko base, z dystrybucji conda i już możemy działać pełnią możliwości.</p>
<h2>W domu i w Kaggle</h2>
<p>Pozostała jeszcze zmienna LOCAL do wyjaśnienia. W <a href="https://github.com/QuantumDamage/kaggledockervscode/blob/main/working/petfinder-pawpularity-score.ipynb" target="_blank" rel="noopener">notebooku pobieram jej zawartość</a> (w komórce In [8]) do zmiennej local i interpretuję czy jest True, czy False. Jeżeli uruchomię ten notebook w środowisku kaggle, to zmiennej LOCAL tam nie będzie, więc local będzie False więc n = 10. Na moim komputerze w Dockerze ta zmienna jest, wiec local będzie True i n = 1. W ten sposób mogę sterować np. operacjami, które na Kaggle będą mogły korzystać z GPU, a na moim laptopie tylko z CPU.</p>
<h2>Podsumowanie</h2>
<p>Docker to bardzo wygodne narzędzie programistyczne. Pozwala bez zbędnych ceregieli dzielić się nie tylko kodem, ale i całymi systemami operacyjnymi, w których wszystko jest przygotowane dokładnie, tak jak autor sobie zaplanował. Co więcej, takie kontenery można ze sobą łączyć za pomocą docker-compose i w ten sposób budować sieci, w których różne systemy gadają ze sobą. Oczywiście, jeżeli autorzy dockerów są niechlujni albo chcą złapać wszystkie sroki za ogon, to zamiast lekkich kontenerków, dostajemy kobyłę jak od Kaggle. Jeżeli jednak mamy dostępny plik Dockerfile to możemy podejrzeć, jak to tam zostało zrobione i samemu sobie zbudować coś bardziej odpowiedniego.</p>
<p>W artykule tym opisałem integrację VS Code z Dockerem. Okazuje się jednak, że jeżeli jakieś IDE pretenduje do bycia współczesnym, też mniej lub bardziej pozwala kodować w Dockerze. Polecam więc zdecydowanie sprawdzić i zorganizować sobie coś takiego, bo tak według mnie będzie wyglądać przyszłość programowania.</p>
<p>Artykuł <a href="https://jakbadacdane.pl/docker-vs-code-czyli-kaggle-w-twoim-domu/">Docker + VS Code czyli Kaggle w Twoim domu</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/docker-vs-code-czyli-kaggle-w-twoim-domu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1690</post-id>	</item>
		<item>
		<title>Jakość powietrza w Polsce #5 &#8211; Rok 2019 oczami oddychającego Polaka</title>
		<link>https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/</link>
					<comments>https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Sun, 24 Jan 2021 08:00:04 +0000</pubDate>
				<category><![CDATA[Projekt]]></category>
		<category><![CDATA[data science]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[powietrze]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1661</guid>

					<description><![CDATA[<p>Niedawno rozpoczął się rok 2021. Jest to więc dobry moment, żeby sprawdzić jaka była jakość powietrza w Polsce w roku 2019. Tak, w roku 2019, bo na stronie GIOŚ, nie ma jeszcze paczki z roku 2020. Jeżeli takowa się pojawią, to pewnie pojawi się również kolejny wpis, w którym je przetworzę. Natomiast jak to gdzieś &#8230; <a href="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/" class="more-link">Czytaj dalej <span class="screen-reader-text">Jakość powietrza w Polsce #5 &#8211; Rok 2019 oczami oddychającego Polaka</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/">Jakość powietrza w Polsce #5 &#8211; Rok 2019 oczami oddychającego Polaka</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Niedawno rozpoczął się rok 2021. Jest to więc dobry moment, żeby sprawdzić jaka była jakość powietrza w Polsce w roku 2019. Tak, w roku 2019, bo na stronie <a href="http://powietrze.gios.gov.pl/pjp/archives" target="_blank" rel="noopener">GIOŚ</a>, nie ma jeszcze paczki z roku 2020. Jeżeli takowa się pojawią, to pewnie pojawi się również kolejny wpis, w którym je przetworzę. Natomiast jak to gdzieś w jakimś filmie ktoś powiedział: jak się nie ma, co się lubi, to się lubi, co się ma. Jakoś tak :D.</p>
<h3>Metodologia</h3>
<p>Cóż, metodologia została taka sama jak wcześniej, możesz się z nią zapoznać we wpisie <a href="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-2-rok-2017-oczami-oddychajacego-polaka/">Jakość powietrza w Polsce #2 Rok 2017 oczami oddychającego Polaka</a>. Czy jest ona dobra? Nie wiem. Nie jest idealna, bo pozostawia wiele pytań, ale ostatnio nie wpadłem na nic lepszego. Więc póki nie wymyślę nic lepszego, to pozostanę przy niej. No i skoro miałem już taką analizę dla roku 2017, to dobrze byłoby przeprowadzić identyczną dla roku 2019. Wiem, że ominąłem rok 2018. Jakoś blogowanie mi się nie kleiło wtedy. Jeśli pojawi się potrzeba, to przepuszczę przez skrypt również rok 2018.</p>
<h3>Kod</h3>
<p>Okej, przyznam się, że <a href="https://gist.github.com/QuantumDamage/518bbd19f457db10b4268aeca17d1d2f#file-022-alt-ipynb" target="_blank" rel="noopener">kod</a>, który wtedy napisałem, to taka paździerz trochę. Niby robi to co planowałem, żeby robił, ale robi to bardzo topornie i nie jest jakoś szczególnie czytelny. Pominę w ogóle nomenklaturę, którą tam przyjąłem. Brr. Ale nie ma co kasować starego kodu, skoro działa. Poza tym przypomina mi, gdzie kiedyś byłem i jak kiedyś pisałem. No i może pokaże też komuś, że nie wszyscy zawsze piszą perfekcyjny kod.</p>
<p><strong>Wyniki 2019</strong></p>
<p>Ok, to nie przedłużając za bardzo, wyniki z roku 2019:</p>
<p>Miasta położone pomiędzy najgorszym czujnikami (nie są chyba najbardziej zanieczyszczone, bo w nich samych nie było kompletu czujników) w 2019:</p>
<ol>
<li>Skała (MP)</li>
<li>Wolbrom (MP)</li>
<li>Jastrzębie-Zdrój (ŚL)</li>
</ol>
<p>Jak to wygląda na mapie:</p>
<figure id="attachment_1674" aria-describedby="caption-attachment-1674" style="width: 1310px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?ssl=1"><img data-recalc-dims="1" decoding="async" data-attachment-id="1674" data-permalink="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/skala-2019-1/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?fit=1310%2C786&amp;ssl=1" data-orig-size="1310,786" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Skała-2019" data-image-description="&lt;p&gt;Skała-2019&lt;/p&gt;
" data-image-caption="&lt;p&gt;Skała-2019&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?fit=300%2C180&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?fit=1024%2C614&amp;ssl=1" class="wp-image-1674 size-full" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?resize=1100%2C660&#038;ssl=1" alt="Skała-2019" width="1100" height="660" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?w=1310&amp;ssl=1 1310w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?resize=1024%2C614&amp;ssl=1 1024w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Skala-2019-1.png?resize=1100%2C660&amp;ssl=1 1100w" sizes="(max-width: 1100px) 100vw, 1100px" /></a><figcaption id="caption-attachment-1674" class="wp-caption-text">Skała (MP)</figcaption></figure>
<p>&nbsp;</p>
<figure id="attachment_1672" aria-describedby="caption-attachment-1672" style="width: 1310px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1672" data-permalink="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/wolbrom-2019/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?fit=1310%2C786&amp;ssl=1" data-orig-size="1310,786" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Wolbrom-2019" data-image-description="&lt;p&gt;Wolbrom-2019&lt;/p&gt;
" data-image-caption="&lt;p&gt;Wolbrom-2019&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?fit=300%2C180&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?fit=1024%2C614&amp;ssl=1" class="wp-image-1672 size-full" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?resize=1100%2C660&#038;ssl=1" alt="Wolbrom-2019" width="1100" height="660" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?w=1310&amp;ssl=1 1310w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?resize=1024%2C614&amp;ssl=1 1024w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Wolbrom-2019.png?resize=1100%2C660&amp;ssl=1 1100w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /></a><figcaption id="caption-attachment-1672" class="wp-caption-text">Wolbrom (MP)</figcaption></figure>
<p>&nbsp;</p>
<figure id="attachment_1670" aria-describedby="caption-attachment-1670" style="width: 1310px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1670" data-permalink="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/jastrzebie-zdroj-2019/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?fit=1310%2C786&amp;ssl=1" data-orig-size="1310,786" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Jastrzębie-Zdrój-2019" data-image-description="&lt;p&gt;Jastrzębie-Zdrój-2019&lt;/p&gt;
" data-image-caption="&lt;p&gt;Jastrzębie-Zdrój-2019&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?fit=300%2C180&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?fit=1024%2C614&amp;ssl=1" class="wp-image-1670 size-full" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?resize=1100%2C660&#038;ssl=1" alt="Jastrzębie-Zdrój-2019" width="1100" height="660" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?w=1310&amp;ssl=1 1310w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?resize=1024%2C614&amp;ssl=1 1024w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Jastrzebie-Zdroj-2019.png?resize=1100%2C660&amp;ssl=1 1100w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /></a><figcaption id="caption-attachment-1670" class="wp-caption-text">Jastrzębie-Zdrój-2019</figcaption></figure>
<p>A teraz miasta położone pomiędzy najlepszymi czujnikami  w 2019:</p>
<ol>
<li>Krynki (PL)</li>
<li>Michałowo (PL)</li>
<li>Sokółka (PL)</li>
</ol>
<p>I teraz mapy:</p>
<figure id="attachment_1677" aria-describedby="caption-attachment-1677" style="width: 1310px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1677" data-permalink="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/krynki-2019/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?fit=1310%2C786&amp;ssl=1" data-orig-size="1310,786" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Krynki-2019" data-image-description="&lt;p&gt;Krynki-2019&lt;/p&gt;
" data-image-caption="&lt;p&gt;Krynki-2019&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?fit=300%2C180&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?fit=1024%2C614&amp;ssl=1" class="wp-image-1677 size-full" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?resize=1100%2C660&#038;ssl=1" alt="Krynki-2019" width="1100" height="660" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?w=1310&amp;ssl=1 1310w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?resize=1024%2C614&amp;ssl=1 1024w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Krynki-2019.png?resize=1100%2C660&amp;ssl=1 1100w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /></a><figcaption id="caption-attachment-1677" class="wp-caption-text">Krynki (PL)</figcaption></figure>
<p>&nbsp;</p>
<figure id="attachment_1676" aria-describedby="caption-attachment-1676" style="width: 1310px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1676" data-permalink="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/michalowo-2019/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?fit=1310%2C786&amp;ssl=1" data-orig-size="1310,786" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Michałowo-2019" data-image-description="&lt;p&gt;Michałowo-2019&lt;/p&gt;
" data-image-caption="&lt;p&gt;Michałowo-2019&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?fit=300%2C180&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?fit=1024%2C614&amp;ssl=1" class="wp-image-1676 size-full" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?resize=1100%2C660&#038;ssl=1" alt="Michałowo-2019" width="1100" height="660" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?w=1310&amp;ssl=1 1310w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?resize=1024%2C614&amp;ssl=1 1024w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Michalowo-2019.png?resize=1100%2C660&amp;ssl=1 1100w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /></a><figcaption id="caption-attachment-1676" class="wp-caption-text">Michałowo (PL)</figcaption></figure>
<p>&nbsp;</p>
<figure id="attachment_1675" aria-describedby="caption-attachment-1675" style="width: 1310px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1675" data-permalink="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/sokolka-2019/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?fit=1310%2C786&amp;ssl=1" data-orig-size="1310,786" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Sokółka-2019" data-image-description="&lt;p&gt;Sokółka-2019&lt;/p&gt;
" data-image-caption="&lt;p&gt;Sokółka-2019&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?fit=300%2C180&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?fit=1024%2C614&amp;ssl=1" class="wp-image-1675 size-full" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?resize=1100%2C660&#038;ssl=1" alt="Sokółka-2019" width="1100" height="660" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?w=1310&amp;ssl=1 1310w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?resize=300%2C180&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?resize=1024%2C614&amp;ssl=1 1024w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?resize=768%2C461&amp;ssl=1 768w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2021/01/Sokolka-2019.png?resize=1100%2C660&amp;ssl=1 1100w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /></a><figcaption id="caption-attachment-1675" class="wp-caption-text">Sokółka (PL)</figcaption></figure>
<h3>Interpretacja wyników z roku 2019</h3>
<p>Pierwszy zasadniczy problem jest widoczny przy &#8222;najlepszych&#8221; miastach. Te trzy miasta leżą na tyle blisko siebie, że te same czujniki są im najbliższe. Według metody, którą wybrałem, mają więc te same wyniki. Może nie jest to duży problem. Drugi problem natomiast, który chyba jest większy, to ogólna duża odległość niektórych miast od najbliższych czujników. Miejscowość Wolbrom ma na przykład 38 kilometrów do najbliższego czujnika PM 2.5. A miasto to jest dość blisko całkiem sporego parku krajobrazowego. Ciężko jest więc przyjąć tę wartość PM 2.5 jako panującą w środku miasta.</p>
<p>Jest to więc problem podobny niejako do problemu z szukaniem zagubionego portfela. Pewien mężczyzna chodził wokół latarni pochylony i jęczał zasmucony. Przechodził tamtędy drugi mężczyzna i zapytał się, o co chodzi. &#8211; Zgubiłem portfel. &#8211; Tutaj Pan go zgubił? &#8211; Chyba nie. &#8211; To dlaczego Pan go tutaj szuka? &#8211; Bo tylko tutaj jest jasno. Takim więc abstrakcyjnym akcentem zakończę ten wpis. Do następnego.</p>
<p>Artykuł <a href="https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/">Jakość powietrza w Polsce #5 &#8211; Rok 2019 oczami oddychającego Polaka</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/jakosc-powietrza-w-polsce-5-rok-2019-oczami-oddychajacego-polaka/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1661</post-id>	</item>
		<item>
		<title>Kaggle &#8211; kalendarz adwentowy #24</title>
		<link>https://jakbadacdane.pl/kaggle-kalendarz-adwentowy-24/</link>
					<comments>https://jakbadacdane.pl/kaggle-kalendarz-adwentowy-24/#comments</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Tue, 24 Dec 2019 16:00:03 +0000</pubDate>
				<category><![CDATA[Adwent 2019]]></category>
		<category><![CDATA[gpu]]></category>
		<category><![CDATA[kaggle]]></category>
		<category><![CDATA[uczenie maszynowe]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1576</guid>

					<description><![CDATA[<p>Ostatni wpis w tegorocznym kalendarzu adwentowym dedykuję serwisowi Kaggle. Idea, która za nim stoi jest według mnie bardzo dobrym połączeniem przyjemnego z pożytecznym. Opiera się ona na 5 filarach i jednym &#8222;sekretnym&#8221; składniku. Zaraz dowiesz się jakich. 1. Cloud GPU — Notebooks Zacznijmy od czegoś obiektywnie wartościowego, co dostajemy za darmo. Mowa tutaj o cloud &#8230; <a href="https://jakbadacdane.pl/kaggle-kalendarz-adwentowy-24/" class="more-link">Czytaj dalej <span class="screen-reader-text">Kaggle &#8211; kalendarz adwentowy #24</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/kaggle-kalendarz-adwentowy-24/">Kaggle &#8211; kalendarz adwentowy #24</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Ostatni wpis w tegorocznym kalendarzu adwentowym dedykuję serwisowi <a href="https://www.kaggle.com/" target="_blank" rel="noopener noreferrer">Kaggle</a>. Idea, która za nim stoi jest według mnie bardzo dobrym połączeniem przyjemnego z pożytecznym. Opiera się ona na 5 filarach i jednym &#8222;sekretnym&#8221; składniku. Zaraz dowiesz się jakich.</p>
<h3>1. Cloud GPU — Notebooks</h3>
<p>Zacznijmy od czegoś obiektywnie wartościowego, co dostajemy za darmo. Mowa tutaj o cloud GPU. Gdy wejdziemy na kaggle.com w sekcję <a href="https://www.kaggle.com/notebooks" target="_blank" rel="noopener noreferrer">Notebooks</a>, to dostaniemy możliwość utworzenia notatnika podobnego do notatnika <a href="https://jakbadacdane.pl/jupyter-notebook-kalendarz-adwentowy-7/">Jupyter Notebook</a>. Notatniki te są podpięte do całkiem zacnej <a href="https://www.kaggle.com/docs/kernels#technical-specifications" target="_blank" rel="noopener noreferrer">maszyny wirtualnej</a>, która posiada również dostęp do GPU. Nie ma tam problemów z umieszczeniem własnych danych, możemy więc sobie całkiem za darmo skorzystać z GPU do własnych celów.</p>
<h3>2. Zbiory danych — Datasets</h3>
<p>Gdy wejdziemy w sekcję <a href="https://www.kaggle.com/datasets" target="_blank" rel="noopener noreferrer">Datasets</a>, naszym oczom ukaże się lista najgorętszych ostatnio zbiorów danych. Kaggle umożliwia bowiem dzielenie się publicznymi zbiorami danych. Zbiory te są katalogowane i używane przez innych użytkowników platformy. Jest to tak przemyślane, że z poziomu każdego zbioru danych możesz uruchomić notebook, który je widzi, i do każdego notebooka możesz też podłączyć jakiś opublikowany zbiór danych. Użytkownicy dzielą się więc zbiorami danych i notebookami, które je wykorzystują. A najpopularniejsze aktualnie zbiory danych są interpretowane właśnie jako &#8222;najgorętsze&#8221;.</p>
<h3>3. Dyskusja — Discussion</h3>
<p>Sekcja <a href="https://www.kaggle.com/discussion">Discussion</a> jest chyba najbardziej intuicyjna. Jest to po prostu forum internetowe dedykowane dyskusjom o uczeniu maszynowemu, danych i wszystkim pokrewnym. Oprócz tego forum każdy publiczny notatnik i zbiór danych ma swoją sekcję do dyskusji. Mamy więc tutaj na każdym kroku jakieś dyskusje.</p>
<h3>4. Konkursy — Competitions</h3>
<p>Sekcja <a href="https://www.kaggle.com/competitions" target="_blank" rel="noopener noreferrer">Competitions</a> może z kolei być najmniej intuicyjna. Znajdziemy bowiem tutaj konkursy na rozwiązywanie problemów za pomocą uczenia maszynowego. Jest to najmniej intuicyjna sekcja, ale zarazem według mnie najciekawsza. Nie będę się tutaj rozpisywał, bo napisałem już dwa artykuły wprowadzające w tę tematykę: <a href="https://jakbadacdane.pl/lanl-earthquake-prediction/">LANL Earthquake Prediction</a> i <a href="https://jakbadacdane.pl/aptos-2019-blindness-detection-uratuj-biednych-ludzi-przed-slepota/">APTOS 2019 Blindness Detection</a>. Sądzę, że znajdziesz tam wszystkie potrzebne i zachęcające informacje. Dodam jeszcze tylko, że konkursy są również spięte z dedykowanymi dyskusjami, notebookami i zbiorami danych. Bardzo łatwo jest się więc połapać, na jakich danych i w jakim konkursie działa osoba, której posty w dyskusji się czyta.</p>
<h3>5. Kursy — Courses</h3>
<p>Sekcja <a href="https://www.kaggle.com/learn/overview" target="_blank" rel="noopener noreferrer">Courses</a> jest z kolei najlepsza dla początkujących. Znajdują się tam krótkie samouczki, które można łatwo zrealizować na platformie Kaggle. Wykorzystują one opublikowane tam zbiory danych i notatniki z przygotowanymi ćwiczeniami. Ciężko znaleźć wygodniejsze miejsce, żeby zacząć &#8222;z marszu&#8221;.</p>
<h3>Rankingi Kaggle</h3>
<p>Jest jeden &#8222;sekretny&#8221; składnik, który sprawia, że Kaggle to miejsce, z którego treści o wysokiej jakości wciekają z każdego miejsca. Ten składnik to ranking. Idea jest tutaj taka, że wszystkie <strong>wartościowe</strong> aktywności z czterech dziedzin: konkursów, notatników, zbiorów danych oraz dyskusji są premiowane punktami. A punkty te przekuwają się na ranking. Punkty i rankingi te są na tyle <a href="https://www.kaggle.com/progression" target="_blank" rel="noopener noreferrer">wyrafinowanie skonstruowane</a>, że nie da się tutaj łatwo oszukiwać. Stanowią więc one pewien dowód na &#8222;bycie ekspertem&#8221; w danej aktywności. A, że najwyraźniej rankingi to coś, co przedstawiciele społeczności uczenia maszynowego lubią, to chęć uzyskania wysokiej pozycji w rankingu motywuje do tworzenia wartościowych treści i auto moderacji. Fajna sprawa.</p>
<h3>Kaggle — Podsumowanie</h3>
<p>Kaggle to platforma, która zaczęła jako miejsce dedykowane konkursom uczenia maszynowego. Systematycznie rozrosła się do miejsca, gdzie praktycy spotykają się i dzielą się zbiorami danych, dyskutują o nowych ideach i ogólnie analizują wzajemnie efekty swojej pracy. Platforma ta jakiś czas temu została wykupiona przez Google, padł więc blady strach, że zaczną coś kombinować i ją zepsują. Okazuje się jednak, że od tamtego czasu udostępniono lepsze maszyny wirtualne z dostępem do GPU oraz przestrzeń na zbiory danych. Do tego wszystkiego dorzucono API oraz <a href="https://www.kaggle.com/docs/kernels#connecting-kaggle-notebooks-to-google-cloud-services" target="_blank" rel="noopener noreferrer">integrację z niektórymi usługami Google</a>. Liczba konkursów i pula nagród również zdaje się rosnąć. Więc jak dla mnie, Kaggle to wciąż bardzo przyjazna i wygodna platforma dla osób na dowolnym poziomie zaawansowania. A temat ten wybrałem jako ostatni, bo uważam, że jeśli już przegryzłeś się przez <a href="https://jakbadacdane.pl/category/adwent-2019/">cały kalendarz adwentowy</a>, to możesz śmiało atakować <a href="https://www.kaggle.com/competitions" target="_blank" rel="noopener noreferrer">wspomniane powyżej konkursy</a>. Koniecznie daj znać, jak Ci poszło!</p>
<p>Artykuł <a href="https://jakbadacdane.pl/kaggle-kalendarz-adwentowy-24/">Kaggle &#8211; kalendarz adwentowy #24</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/kaggle-kalendarz-adwentowy-24/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1576</post-id>	</item>
		<item>
		<title>Cloud &#8211; kalendarz adwentowy #23</title>
		<link>https://jakbadacdane.pl/cloud-kalendarz-adwentowy-23/</link>
					<comments>https://jakbadacdane.pl/cloud-kalendarz-adwentowy-23/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Mon, 23 Dec 2019 16:00:07 +0000</pubDate>
				<category><![CDATA[Adwent 2019]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[gpu]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1567</guid>

					<description><![CDATA[<p>Współcześnie, jeżeli planujemy jakiś projekt uczenia maszynowego, to praktycznie mamy do wyboru trzy scenariusze: infrastruktura &#8222;osobista&#8221;, infrastruktura dedykowana i cloud (z angielskiego chmura). Infrastruktura osobista to sprzęt, jakim aktualnie dysponujemy jako urządzenia osobiste — laptopy i komputery PC. Czyli tak jakby start z marszu. Może okazać się jednak, że ten sprzęt jest dla nas niewystarczający. &#8230; <a href="https://jakbadacdane.pl/cloud-kalendarz-adwentowy-23/" class="more-link">Czytaj dalej <span class="screen-reader-text">Cloud &#8211; kalendarz adwentowy #23</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/cloud-kalendarz-adwentowy-23/">Cloud &#8211; kalendarz adwentowy #23</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Współcześnie, jeżeli planujemy jakiś projekt uczenia maszynowego, to praktycznie mamy do wyboru trzy scenariusze: infrastruktura &#8222;osobista&#8221;, infrastruktura dedykowana i cloud (z angielskiego chmura). Infrastruktura osobista to sprzęt, jakim aktualnie dysponujemy jako urządzenia osobiste — laptopy i komputery PC. Czyli tak jakby start z marszu. Może okazać się jednak, że ten sprzęt jest dla nas niewystarczający. Wtedy musimy pomyśleć o kolejnym rozwiązaniu. Albo możemy kupić specjalistyczne serwery i karty graficzne do obliczeń i gdzieś je umieścić. Albo możemy wynająć podobne urządzenia na minuty w automatycznych systemach, które je udostępniają do pracy zdalnej. Czyli po prostu skorzystać z usług typu cloud obliczeniowy.</p>
<h3>Dlaczego ktoś miałby chcieć korzystać z usług cloud?</h3>
<p>Jeśli laptop nam nie wystarcza, to tak jak wspomniałem, mamy dwie opcje: kupić lub wynająć. Kupno jest spoko, bo dostajemy fizyczny sprzęt, którym dysponujemy, tak jak chcemy. Musimy tylko znaleźć jakieś dobre miejsce (ciepło, hałas i dużo pobieranego prądu) do jego umieszczenia i możemy działać. Mamy tutaj też kilka wad. Największa jest taka, że będzie nas to słono kosztować. A druga wada (możliwe, że nieoczywista) to fakt, że często od sformalizowania zamówienia do fizycznego rozpakowania sprzętu mogą minąć dni, a nawet tygodnie.</p>
<p>Zastanówmy się teraz nad scenariuszem typu cloud. Wybieramy jakiegoś dostawcę tego typu usług. Podłączamy tam kartę kredytową i od tego momentu możemy sobie wybierać ile i jakiego typu maszyny chcemy wynająć. Musimy jednak pomyśleć jak dostarczyć do nich nasze dane i jak będziemy przechowywać wyniki. No bo jeśli zdecydujemy się skończyć korzystać z komputerów w chmurze, to nasze wyniki po prostu wyparują. Mamy więc tutaj pewną optymalizację — mamy szybszy dostęp do sprzętu obliczeniowego i mniejszy koszt startu. Musimy jednak zadbać o umiejętne przerzucanie danych oraz musimy posiadać umiejętności związane z zarządzaniem usługami z chmury danego dostawcy. Mamy więc tutaj sytuację coś za coś, jednakże różnice są na tyle duże, że faktycznie są sytuacje, że usługi chmurowe mogą być dla kogoś bardzo praktycznym rozwiązaniem.</p>
<h3>Czy każdy cloud się nada?</h3>
<p>Wybierając cloud do uczenia maszynowego, musimy odpowiedzieć na te same pytania co przy wyborze klasycznego lokalnego sprzętu: jaki procesor? Jaki dysk? Ile RAMu? Ale okazuje się, że reszta już nas niewiele obchodzi. Pozostaje jednak jedno ważne pytanie, na które odpowiedź &#8222;tak&#8221; odsiewa dość dużą liczbę dostawców chmury: czy potrzebuję GPU?</p>
<p>Osobiście nie mam za dużych doświadczeń z cloud GPU. Jeśli potrzebuję ogarnąć jakiś notebook, żeby coś komuś pokazać albo coś przetestować to korzystam z <a href="https://jakbadacdane.pl/colab-czyli-jak-za-darmo-uzyskac-dostep-do-gpu/">Google Colab</a>. Natomiast społeczność zebrana wokół projektu <a href="https://jakbadacdane.pl/fastai-kalendarz-adwentowy-16/">fastai</a> ma całkiem sporo doświadczeń i przygotowali nawet całkiem rozbudowany samouczek jak uruchomić ich kurs u różnych chmurowych dostawców GPU. Samouczki te znajdziesz <a href="https://course.fast.ai/index.html" target="_blank" rel="noopener noreferrer">tutaj (zakładka po lewej &#8222;Server setup&#8221;)</a>.</p>
<h3>Cloud — Podsumowanie</h3>
<p>Czy korzystanie z GPU albo ogólnie uczenie maszynowe w chmurze się opłaca? Jedni powiedzą tak, inni powiedzą nie. Jeśli masz już okrzepnięty projekt i wiesz, że będziesz ostro piłował GPU i CPU przez najbliższe miesiące, to może Ci się bardziej opłacać kupić fizyczny sprzęt. Ale jeśli np. eksperymentujesz i Twoje potencjalne GPU jest przez więcej czasu nieużywane niż używane, to chmura może okazać się lepszym pomysłem. Będzie tańsza na start i nie zostaniesz z niepotrzebnym sprzętem jeśli się rozmyślisz odnośnie swojego projektu. Jest jednak jeden scenariusz, który może uniemożliwić Ci korzystanie z chmury — bardzo delikatne dane. Żeby bowiem działać w chmurze, musisz tam wrzucić dane. A chmura to tak naprawdę dużo komputerów kogoś innego. A nie wszystkie dane mogą opuszczać własną infrastrukturę. Dlatego też czasem po prostu nie mamy tego dylematu — sprzęt lokalny czy chmura, bo prawnicy rozwiązali go za nas. Tak czy owak, warto mieć na uwadze tę opcję.</p>
<p>Artykuł <a href="https://jakbadacdane.pl/cloud-kalendarz-adwentowy-23/">Cloud &#8211; kalendarz adwentowy #23</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/cloud-kalendarz-adwentowy-23/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1567</post-id>	</item>
		<item>
		<title>StarCraft &#8211; kalendarz adwentowy #22</title>
		<link>https://jakbadacdane.pl/starcraft-kalendarz-adwentowy-22/</link>
					<comments>https://jakbadacdane.pl/starcraft-kalendarz-adwentowy-22/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Sun, 22 Dec 2019 16:00:44 +0000</pubDate>
				<category><![CDATA[Adwent 2019]]></category>
		<category><![CDATA[reinforcement learning]]></category>
		<category><![CDATA[starcraft]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1559</guid>

					<description><![CDATA[<p>Uczenie maszynowe nie jest dziedziną nauki bardzo odległą od teorii gier. Teoria gier zajmuje się szukaniem strategii działania w sytuacji gdy dwa lub więcej obiektów działają w jednym środowisku i występuje między tymi obiektami konflikt interesów. Natomiast uczenie maszynowe, a w szczególności uczenie maszynowe ze wzmocnieniem, pokazuje nam jak na podstawie obserwacji tego środowiska (dane) &#8230; <a href="https://jakbadacdane.pl/starcraft-kalendarz-adwentowy-22/" class="more-link">Czytaj dalej <span class="screen-reader-text">StarCraft &#8211; kalendarz adwentowy #22</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/starcraft-kalendarz-adwentowy-22/">StarCraft &#8211; kalendarz adwentowy #22</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Uczenie maszynowe nie jest dziedziną nauki bardzo odległą od teorii gier. Teoria gier zajmuje się szukaniem strategii działania w sytuacji gdy dwa lub więcej obiektów działają w jednym środowisku i występuje między tymi obiektami konflikt interesów. Natomiast uczenie maszynowe, a w szczególności uczenie maszynowe ze wzmocnieniem, pokazuje nam jak na podstawie obserwacji tego środowiska (dane) zmaksymalizować metrykę (nasz interes). I mimo iż czasem wydaje nam się, że jesteśmy w tej grze sami, to często gramy po prostu przeciwko naturze, która jest <a href="https://pl.wikipedia.org/wiki/Termodynamiczna_strza%C5%82ka_czasu">chaosem</a>. Okej, mamy już więc luźno spięte uczenie maszynowe i teorię gier. Gdzie w tym wszystkim jest StarCraft?</p>
<h3>Uczenie ze wzmocnieniem</h3>
<p>Okazuje się, rozwiązywanie problemów typu uczenie nadzorowane bazujące na <a href="https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/">ramkach danych</a>, dla niektórych osób jest zbyt nudne. Sytuacja w tych problemach jest jasna, a problem jest dobrze zdefiniowany. Wystarczy tylko wybrać jakiś model i tyle. Ciekawsze natomiast wydają się tematy, które nie mają jasno zdefiniowanego sukcesu. Albo inaczej — sukces jest bardzo dobrze zdefiniowany (wygraj), ale ilość sposobów jak go osiągnąć jest praktycznie nieograniczona. Trudno więc łatwo ocenić, które konkretnie działanie jest tym dobrym, a które tym złym.</p>
<p>Żeby trochę obejść ten problem, zastosowano pewną sztuczkę. Nie będziemy zbyt dokładnie określać poszczególnych kroków, będziemy natomiast premiować za działania, które wydają się dobre, a karać za te, które wydają się złe. Dodatkowo będziemy premiować dużą nagrodą jeśli uda się osiągnąć cel. Taka definicja rozwiązywania problemu to uczenie ze wzmocnieniem.</p>
<h3>StarCraft</h3>
<p>I w taki właśnie sposób trenowany był model, który ostatecznie wygrał w grę planszową Go. Jednakże granie w Go, to także był relatywnie prosty problem — typy ruchów były bardzo ograniczone (połóż kamień), a model miał przez cały czas dostęp do widoku całej planszy do gry. A co gdyby część informacji była ukryta?</p>
<p>StarCraft to komputerowa gra strategiczna, gdzie informacja o poczynaniach przeciwnika jest faktycznie ukryta. Gracz, jak i przeciwnik mają do dyspozycji gamę kilkunastu jednostek bojowych o różnych cechach. Mogą także realizować różnorakie strategie typu zwiad i nękanie. Albo ukrywanie się i akumulacja zasobów. Może to być też akumulacja armii i zastawianie pułapek. Mogą również dowolnie miksować te podejścia. Z punktu widzenia możliwości potencjalnych działań złożoność tutaj jest ogromna. Zresztą, wystarczy spojrzeć na przykładową kompilację momentów z tej gry:</p>
<p style="text-align: center;"><iframe loading="lazy" src="https://www.youtube-nocookie.com/embed/NiDGTprVJu4" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"><span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start">﻿</span></iframe></p>
<p>Sam nie do końca rozumiem, co tam się dzieje w niektórych momentach. Czyż nie brzmi to jak fajny problem do rozwiązania przy pomocy uczenia maszynowego?</p>
<h3>PySC2</h3>
<p>Do takiego wniosku musieli dojść inżynierowie z DeepMind, bo udało im się dogadać z autorami gry StarCraft — firmą Blizzard i wspólnie przygotowali środowisko do tworzenia sztucznej inteligencji grającej właśnie w tę grę. Środowisko to nazywa się <a href="https://github.com/deepmind/pysc2" target="_blank" rel="noopener noreferrer">PySC2</a> i jest rozwijane jako projekt open source bazujący na Pythonie. Czy potrzebujemy czegoś więcej?</p>
<p>Okazuje się, że tak. Ale to również zostało uwzględnione w tym projekcie. Pierwszy element, którego mogłoby nam brakować to dane. Dostajemy tutaj całą masę replayów gier ligowych z kilku ostatnich lat. Są tam wymiatacze, ale też gracze niedzielni. Mamy więc całe spektrum pomysłów.</p>
<p>Drugim elementem, którego nam może brakować to środowisko do symulacji. W uczeniu ze wzmocnieniem nasz proces wygląda bowiem następująco: agent (czyli model) obserwuje świat. Po obserwacji podejmuje decyzję. Działa na podstawie tej decyzji. Obserwuje, jak świat zareagował (czyli wraca na początek tej pętli). Wszystko to się powtarza, aż agent wygra lub przegra. W naszym przypadku będziemy po prostu potrzebowali gry, w którą nasz model będzie mógł grać. I ją również dostajemy w zestawie. W systemie Windows możemy mieć nawet podgląd z poziomu gry jak nasz agent AI sobie radzi. Na Linuksach musimy się natomiast zadowolić prostrzą wizualizacją poczynań naszego agenta:</p>
<p style="text-align: center;"><iframe loading="lazy" src="https://www.youtube-nocookie.com/embed/-fKUyT14G-8" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h3>StarCraft — Podsumowanie</h3>
<p>Projekt PySC2 powstał jako próba udowodnienia, że z odpowiednią ilością danych i mocy obliczeniowej możemy próbować wytrenować sztuczną inteligencję, zdolną pokonać człowieka w typowo człowieczych zadaniach. No bo klasyczne boty grające w StarCrafta zupełnie sobie w niego nie radziły i nie stanowiły nawet sensownych sparring partnerów dla topowych ligowych zawodników. I zdaje się, że powoli najnowsze AI wytrenowane przy pomocy tego systemu zbliżają się do pokonania <a href="https://www.reddit.com/r/starcraft/comments/dqteoi/serral_is_currently_playing_alphastar_hes_03/" target="_blank" rel="noopener noreferrer">najlepszych światowych graczy</a>. Najfajniejsze jest to, że Ty też możesz wytrenować swoje super AI i powalczyć z najlepszymi. Daj znać, jak Ci poszło!</p>
<p>Artykuł <a href="https://jakbadacdane.pl/starcraft-kalendarz-adwentowy-22/">StarCraft &#8211; kalendarz adwentowy #22</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/starcraft-kalendarz-adwentowy-22/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1559</post-id>	</item>
		<item>
		<title>Big Data &#8211; kalendarz adwentowy #21</title>
		<link>https://jakbadacdane.pl/big-data-kalendarz-adwentowy-21/</link>
					<comments>https://jakbadacdane.pl/big-data-kalendarz-adwentowy-21/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Sat, 21 Dec 2019 16:00:20 +0000</pubDate>
				<category><![CDATA[Adwent 2019]]></category>
		<category><![CDATA[big data]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1549</guid>

					<description><![CDATA[<p>Duże zbiory danych nie są niczym nowym. Jeżeli danych jest więcej, niż jesteśmy w stanie wygodnie wczytać i przetworzyć w naszym ulubionym programie to możemy sobie pomyśleć, że mamy do czynienia z faktycznie dużym zbiorem danych. W języku angielskim powstał specjalny termin określający duże zbiory danych — Big Data. Ale czy sam brak możliwości wczytania &#8230; <a href="https://jakbadacdane.pl/big-data-kalendarz-adwentowy-21/" class="more-link">Czytaj dalej <span class="screen-reader-text">Big Data &#8211; kalendarz adwentowy #21</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/big-data-kalendarz-adwentowy-21/">Big Data &#8211; kalendarz adwentowy #21</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Duże zbiory danych nie są niczym nowym. Jeżeli danych jest więcej, niż jesteśmy w stanie wygodnie wczytać i przetworzyć w naszym ulubionym programie to możemy sobie pomyśleć, że mamy do czynienia z faktycznie dużym zbiorem danych. W języku angielskim powstał specjalny termin określający duże zbiory danych — Big Data. Ale czy sam brak możliwości wczytania danych do pamięci sprawia, że faktycznie mamy do czynienia z Big Data?</p>
<h3>Czy Big Data to coś więcej niż tylko większy zbiór danych?</h3>
<p>Okazuje się, że według aktualnie przyjętej ogólnej definicji big data, dane te różnią się nieco od odpowiednio dużego zwykłego zbioru danych (takiego jak np. <a href="https://jakbadacdane.pl/mnist-kalendarz-adwentowy-15/">MNIST</a>). Zerknijmy na obrazek pomocniczy pochodzący z Wikipedii:</p>
<figure id="attachment_1551" aria-describedby="caption-attachment-1551" style="width: 300px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/12/Big_Data.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="1551" data-permalink="https://jakbadacdane.pl/big-data-kalendarz-adwentowy-21/big_data/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/12/Big_Data.png?fit=612%2C422&amp;ssl=1" data-orig-size="612,422" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Big Data" data-image-description="&lt;p&gt;Big Data&lt;/p&gt;
" data-image-caption="&lt;p&gt;Big Data&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/12/Big_Data.png?fit=300%2C207&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/12/Big_Data.png?fit=612%2C422&amp;ssl=1" class="size-medium wp-image-1551" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/12/Big_Data.png?resize=300%2C207&#038;ssl=1" alt="Big Data" width="300" height="207" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/12/Big_Data.png?resize=300%2C207&amp;ssl=1 300w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/12/Big_Data.png?w=612&amp;ssl=1 612w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-1551" class="wp-caption-text">Cechy danych<br />By <a class="new" title="User:Ender005 (page does not exist)" href="//commons.wikimedia.org/w/index.php?title=User:Ender005&amp;action=edit&amp;redlink=1">Ender005</a> &#8211; <span class="int-own-work" lang="en">Own work</span>, <a title="Creative Commons Attribution-Share Alike 4.0" href="https://creativecommons.org/licenses/by-sa/4.0">CC BY-SA 4.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=49888192">Link</a></figcaption></figure>
<p>Mamy wyróżnione tutaj trzy cechy, które charakteryzują dane: Volume, Velocity i Variety.</p>
<p>Volume (z angielskiego objętość) to najbardziej intuicyjna cecha. Chodzi tutaj po prostu o ilość danych. Na komputerach osobistych operujemy raczej w zakresie MB — GB. Natomiast w omawianym przypadku są to zbory PB+ danych. Zdecydowanie inny zakres.</p>
<p>Velocity (z angielskiego prędkość) to cecha, która mówi nam o przyroście naszego zbioru danych. I znów, na komputerach osobistych działamy albo z paczką danych, którą ktoś nam jakoś dostarczył, albo np. pobieramy ją sobie z bazy danych. W czasie naszej pracy dane te raczej się nie zmieniają. A w świecie Big Data pracujemy praktycznie na danych, do których w sposób ciągły dopisywane są nowe obserwacje.</p>
<p>Variety (z angielskiego różnorodność) to cecha, która chyba najbardziej odróżnia Big Data od Small Data. Chodzi tutaj o to, że w kategorii pracy Small Data nasze dane są jednorodne. Są to np. pliki csv, bazy danych albo katalog z obrazkami. A w przypadku Big Data mamy często do czynienia z połączonymi ze sobą wieloma rodzajami danych. Mamy np. informacje czasowe, połączone z działaniami użytkowników, wyniki tych działań, stan systemu, temperaturę powietrza, ostatnie tweety Donalda Trumpa, aktualną promocję na Wiedźmina 3, cenę żelaza w ciągu ostatniego roku w Pakistanie oraz zdjęcie satelitarne portu w Rotterdamie. Przykład ten jest, przyznaję, dość dziki, ale obrazuje on jakiego typu informacje czasem są łączone w celu podjęcia decyzji w systemach Big Data.</p>
<h3>Jak zacząć w domu?</h3>
<p>Odpowiedź na to pytanie jest rozczarowująca. Nie znam aktualnie żadnego sensownego sposobu jak wgryźć się w temat w amatorskim domowym zaciszu. Jeżeli naszych danych jest dużo, ale są bliskie <a href="https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/">ramki danych</a>, to w środowisku Python pomocny będzie <a href="https://dask.org/" target="_blank" rel="noopener noreferrer">Dask</a>. Ale to wciąż będzie <a href="https://jakbadacdane.pl/scikit-learn-kalendarz-adwentowy-4/">Scikit-Learn</a> i <a href="https://jakbadacdane.pl/pandas-kalendarz-adwentowy-5/">Pandas</a> &#8222;na sterydach&#8221;.</p>
<p>Najbliższe ideowo prawdziwemu systemowi Big Data na laptopie jest <a href="https://www.cloudera.com/downloads/quickstart_vms/5-13.html" target="_blank" rel="noopener noreferrer">CDH</a>, czyli platforma open source Hadoop oferowana przez firmę Cloudera. Pobierzesz tam obrazy maszyn wirtualnych, które mają skonfigurowaną platformę Hadoop, która często jest używana w takich rozwiązaniach. Pozostanie Ci jednak jeszcze najtrudniejsza sprawa — zdobycie odpowiednich danych i sformułowanie odpowiedniego problemu. Ale to już pozostawiam Tobie drogi czytelniku.</p>
<h3>Big Data — Podsumowanie</h3>
<p>Jak widzisz, sam duży zbiór danych to nieco za mało, żeby dobrze wgryźć się w to zagadnienie. Wokół Big Data oprócz problemów analitycznych powstała też cała masa problemów inżynieryjnych — jak przechowywać te dane, jak je zabezpieczać, udostępniać i przemieszczać? Jak je zbierać i dostarczać? Jak zadbać o odtwarzalność analiz i audyty podjętych decyzji? Trzeba więc tutaj posiadać nieco inny zbiór <a href="https://jakbadacdane.pl/czym-wlasciwie-jest-data-science/#umiejetnosci">umiejętności</a> niż na przykład w uczeniu maszynowym albo analityce. Ale kto wie, może akurat Tobie bardziej to przypasuje.</p>
<p>Artykuł <a href="https://jakbadacdane.pl/big-data-kalendarz-adwentowy-21/">Big Data &#8211; kalendarz adwentowy #21</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/big-data-kalendarz-adwentowy-21/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1549</post-id>	</item>
		<item>
		<title>Przetwarzanie obrazów &#8211; kalendarz adwentowy #20</title>
		<link>https://jakbadacdane.pl/przetwarzanie-obrazow-kalendarz-adwentowy-20/</link>
					<comments>https://jakbadacdane.pl/przetwarzanie-obrazow-kalendarz-adwentowy-20/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Fri, 20 Dec 2019 16:00:39 +0000</pubDate>
				<category><![CDATA[Adwent 2019]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1541</guid>

					<description><![CDATA[<p>Jeżeli przejrzałeś wcześniejsze wpisy z tej serii, to być może kojarzysz już zbiór danych MNIST. Zbiór ten jest o tyle ciekawy, że można go próbować ugryźć na co najmniej dwa sposoby. Jedno z takich podejść to analiza piksel po pikselu, a drugie to całościowe przetwarzanie obrazów. Chciałbym Ci pokrótce nakreślić ideę tego drugiego podejścia. Analiza &#8230; <a href="https://jakbadacdane.pl/przetwarzanie-obrazow-kalendarz-adwentowy-20/" class="more-link">Czytaj dalej <span class="screen-reader-text">Przetwarzanie obrazów &#8211; kalendarz adwentowy #20</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/przetwarzanie-obrazow-kalendarz-adwentowy-20/">Przetwarzanie obrazów &#8211; kalendarz adwentowy #20</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Jeżeli przejrzałeś wcześniejsze wpisy z tej serii, to być może kojarzysz już zbiór danych <a href="https://jakbadacdane.pl/mnist-kalendarz-adwentowy-15/">MNIST</a>. Zbiór ten jest o tyle ciekawy, że można go próbować ugryźć na co najmniej dwa sposoby. Jedno z takich podejść to analiza piksel po pikselu, a drugie to całościowe przetwarzanie obrazów. Chciałbym Ci pokrótce nakreślić ideę tego drugiego podejścia.</p>
<h3>Analiza pojedynczych pikseli</h3>
<p>Obrazki ze zbioru MNIST mają rozdzielczość 28 × 28 pikseli, gdzie każdy piksel posiada szarość — czyli wartość od 0 do 255. W każdym obrazku mamy więc 784 liczby. Możemy więc przerobić każdy taki obrazek na obserwację w <a href="https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/">ramce danych</a> i zastosować jakieś klasyczne podejście z asortymentu uczenia maszynowego. Może to być np. metoda <a href="https://jakbadacdane.pl/k-najblizszych-sasiadow-kto-z-kim-przestaje-takim-sie-staje/">najbliższych sąsiadów</a>. I możemy uzyskać całkiem sensowne <a href="https://en.wikipedia.org/wiki/MNIST_database#Classifiers" target="_blank" rel="noopener noreferrer">wyniki</a>.</p>
<h3>Przetwarzanie obrazów z wykorzystaniem splotu</h3>
<p>Faktem jest, że jeżeli widzimy jakąś cyfrę, to nie analizujemy jej po pikselu (albo mikrometrowych plamkach atramentu), ale spoglądamy na nią całościowo. Zanim jednak opanujemy tę umiejętność, to musimy się nauczyć interpretować te kształty. Dowiadujemy się (najczęściej jako dzieci), że np. jeden to kijek z małym daszkiem, a ósemka to bałwanek. Zbierając te &#8222;podpowiedzi&#8221; jesteśmy w stanie określić, na jaką cyfrę patrzymy. A może da się zmusić komputer do czegoś podobnego?</p>
<p>Okazuje się, że mamy w algebrze taką sprytną funkcję, która nazywa się splot (albo z angielskiego konwolucja). Jeśli chodzi o przetwarzanie obrazów, to jest to przechodzenie małą macierzą (zwaną filtrem) zaświeconych lub zgaszonych &#8222;pikseli&#8221;, po dużej macierzy oryginalnego obrazka. W czasie takiego przechodzenia zwyczajnie mnożymy ze sobą wartości, sumujemy je i wrzucamy do mniejszej wynikowej macierzy. I oczywiście zdaję sobie sprawę, że niczego w ten sposób nie wytłumaczyłem. Pozwolę wiec sobie tutaj wkleić całkiem fajny filmik od Andrew Ng, który doskonale to tłumaczy:</p>
<p><iframe loading="lazy" src="https://www.youtube-nocookie.com/embed/XuD4C8vJzEQ" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Oczywiście nie jest to koniec tematu. Tak uzyskana macierz wynikowa jest później pomniejszana, a następnie nakładane są na nią kolejne filtry. Te kolejne filtry w wyniku treningu sieci neuronowej są coraz bardziej skomplikowane i mogą przypominać pewne znajome dla nas kształty — np. twarze, koła rowerowe i tym podobne. W ten sposób niejako zmuszamy komputer do przejścia od szczegółu do ogółu.</p>
<h3>Przetwarzanie obrazów — Podsumowanie</h3>
<p>Sieci neuronowe oparte o konwolucyjne przetwarzanie obrazów nie są niczym szczególnie bardziej skomplikowanym niż zwykłe sieci neuronowe. Wciąż mamy tam macierze, wciąż mamy tam mnożenie i dodawanie. Wciąż mamy tam, zupełnie tak samo jak mają <a href="https://www.youtube.com/watch?v=pDiK2tpVgtA" target="_blank" rel="noopener noreferrer">ogry</a> i cebula, warstwy. Ale dzięki takim sprytnym operacjom nasz komputer zaczyna widzieć. Nie zawsze widzi tak, jak my byśmy widzieli, ale czasem nawet i <a href="https://www.quora.com/Why-are-CNNs-used-more-for-computer-vision-tasks-than-other-tasks" target="_blank" rel="noopener noreferrer">tak się zdarza</a>.</p>
<p>Artykuł <a href="https://jakbadacdane.pl/przetwarzanie-obrazow-kalendarz-adwentowy-20/">Przetwarzanie obrazów &#8211; kalendarz adwentowy #20</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/przetwarzanie-obrazow-kalendarz-adwentowy-20/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1541</post-id>	</item>
		<item>
		<title>Ramka danych &#8211; kalendarz adwentowy #19</title>
		<link>https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/</link>
					<comments>https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Thu, 19 Dec 2019 16:00:58 +0000</pubDate>
				<category><![CDATA[Adwent 2019]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1535</guid>

					<description><![CDATA[<p>Chyba powtórzę po raz kolejny na tym blogu moją opinię, że często najwięcej czasu zajmuje nam sformułowanie problemu i jakiejś sensownej metryk do oceny jego rozwiązania. Bowiem gdy już mamy nasze dane i odpowiednio je przetworzyliśmy, to możemy szybko i śmiało eksperymentować. Jeżeli celujemy w uczenie nadzorowane, które nie wymaga przetwarzania obrazów, tekstu ani dźwięku, &#8230; <a href="https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/" class="more-link">Czytaj dalej <span class="screen-reader-text">Ramka danych &#8211; kalendarz adwentowy #19</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/">Ramka danych &#8211; kalendarz adwentowy #19</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Chyba powtórzę po raz kolejny na tym blogu moją opinię, że często najwięcej czasu zajmuje nam sformułowanie problemu i jakiejś sensownej metryk do oceny jego rozwiązania. Bowiem gdy już mamy nasze dane i odpowiednio je przetworzyliśmy, to możemy szybko i śmiało eksperymentować. Jeżeli celujemy w uczenie nadzorowane, które nie wymaga przetwarzania obrazów, tekstu ani dźwięku, to już w ogóle możemy prawie zawsze wskazać praktyczny moment, od którego jest już z górki. Ten moment to sytuacja, w której z naszych surowych danych i pomysłu na ich przetworzenie powstała ramka danych.</p>
<h3>Co to jest ramka danych?</h3>
<p>Jeśli używałeś kiedyś arkusza kalkulacyjnego, to już masz pewną intuicję, czym może być ramka danych. Ramka danych (po angielsku data frame), podobnie jak arkusz kalkulacyjny składa się ze zorganizowanej struktury kolumn i wierszy. Przyjmujemy w uproszczeniu, że w uczeniu nadzorowanym każdy wiersz odpowiada jednej obserwacji jakiegoś zjawiska, a jedna kolumna opisuje cechy niezależne. Na przecięciu kolumny i wiersza mamy wartość danej cechy dla danej obserwacji. Brzmi skomplikowanie? Spójrz na poniższy rysunek:</p>
<figure id="attachment_851" aria-describedby="caption-attachment-851" style="width: 467px" class="wp-caption aligncenter"><a href="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/02/028-dataframe.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="851" data-permalink="https://jakbadacdane.pl/co-tam-na-gieldzie-slychac-gpw-ml-1/028-dataframe/" data-orig-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/02/028-dataframe.png?fit=467%2C190&amp;ssl=1" data-orig-size="467,190" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="CD PROJEKT" data-image-description="&lt;p&gt;CD PROJEKT&lt;/p&gt;
" data-image-caption="&lt;p&gt;CD PROJEKT&lt;/p&gt;
" data-medium-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/02/028-dataframe.png?fit=300%2C122&amp;ssl=1" data-large-file="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/02/028-dataframe.png?fit=467%2C190&amp;ssl=1" class="wp-image-851 size-full" src="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/02/028-dataframe.png?resize=467%2C190&#038;ssl=1" alt="CD PROJEKT" width="467" height="190" srcset="https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/02/028-dataframe.png?w=467&amp;ssl=1 467w, https://i0.wp.com/jakbadacdane.pl/wp-content/uploads/2019/02/028-dataframe.png?resize=300%2C122&amp;ssl=1 300w" sizes="auto, (max-width: 467px) 100vw, 467px" /></a><figcaption id="caption-attachment-851" class="wp-caption-text">CD PROJEKT</figcaption></figure>
<p>Mamy tutaj wycinek kursu akcji spółki CD PROJEKT. Każdy wiersz jest ponumerowany. W naszym przypadku jest to data. Każda kolumna opisuje jakąś konkretna wartość uzyskaną konkretnego dnia. Mamy tutaj jedną zupełnie zbędną kolumnę o nazwie &#8222;Name&#8221; która posiada stałą wartość — należałoby więc ją usunąć. Dodatkowo możemy się domyśleć, że wartości z kolumn &#8222;Open&#8221;, &#8222;High&#8221;, &#8222;Low&#8221;, &#8222;Close&#8221;, &#8222;Volume&#8221; zostały zaobserwowane, a z kolumny &#8222;SMA&#8221; wyliczone. Napisałem, że można się domyśleć, bo to obrazek z mojego bloga, wiem więc w jaki sposób powstał. W normalnej sytuacji powinniśmy jednak dokumentować powstanie każdej kolumny i wszystkie transformacje, które na niej dokonujemy.</p>
<h3>Dwa dodatkowe potencjalne elementy ramki danych</h3>
<p>Jak zapewne zauważyłeś, kolumna &#8222;Date&#8221; jest podpisana w inny sposób. Jest tak dlatego, że jest to specjalna kolumna zwana indeksem. Taki indeks generalnie nie jest używany w procesie uczenia maszynowego, pozwala nam natomiast identyfikować obserwacje w naszej ramce danych. W powyższym przypadku jest to data, ale równie dobrze może to być np. liczba całkowita, albo UUID. Ważne jednak jest, żeby wartość ta była unikatowa. Wtedy możemy się zawsze dostać do jednej konkretnej obserwacji.</p>
<p>Drugi element ramki danych używany w uczeniu nadzorowanym, to nasza kolumna zależna. Jest to po prostu kolumna, którą chcemy przewidzieć. Nie musi ona w żaden specjalny sposób być oznaczana. Informacja ta musi się jednak znajdować gdzieś w dokumentacji. W powyższym przypadku nie ma jednoznacznie wyznaczonej takiej kolumny. Ale może to być np. kolumna &#8222;Close&#8221;, jeśli będziemy chcieli na podstawie pozostałych informacji przewidzieć wartość na zamknięcie dnia giełdowego.</p>
<h3>Ramka danych — Podsumowanie</h3>
<p>Jeżeli w procesie rozwiązywania Twojego problemu dysponujesz ramką danych, albo danymi, które da się łatwo przekształcić do takiej formy, to jesteś praktycznie w domu. Okazuje się bowiem, że i <a href="https://jakbadacdane.pl/gnu-r-kalendarz-adwentowy-18/">język R</a> oraz <a href="https://jakbadacdane.pl/pandas-kalendarz-adwentowy-5/">Pandas</a> wraz ze <a href="https://jakbadacdane.pl/scikit-learn-kalendarz-adwentowy-4/">Scikit-Learn</a> idealnie wspierają pracę z tym formatem danych. Dodatkowo jest on intuicyjny do szybkich wizualizacji oraz do naocznego podglądu. No a jeśli jeszcze pracujemy z ludźmi od arkuszy kalkulacyjnych, to łatwiej też nam jest się z nimi komunikować właśnie za pomocą takich sprytnych ramek danych.</p>
<p>Artykuł <a href="https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/">Ramka danych &#8211; kalendarz adwentowy #19</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/ramka-danych-kalendarz-adwentowy-19/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1535</post-id>	</item>
		<item>
		<title>GNU R &#8211; kalendarz adwentowy #18</title>
		<link>https://jakbadacdane.pl/gnu-r-kalendarz-adwentowy-18/</link>
					<comments>https://jakbadacdane.pl/gnu-r-kalendarz-adwentowy-18/#respond</comments>
		
		<dc:creator><![CDATA[Damian]]></dc:creator>
		<pubDate>Wed, 18 Dec 2019 16:00:11 +0000</pubDate>
				<category><![CDATA[Adwent 2019]]></category>
		<category><![CDATA[r]]></category>
		<guid isPermaLink="false">https://jakbadacdane.pl/?p=1528</guid>

					<description><![CDATA[<p>Do efektywnego wykorzystania uczenia maszynowego, bardzo często wystarczy nam znajomość języka programowania Python i jakichś stworzonych dla niego bibliotek pomocniczych. Czasem chcemy jednak przeanalizować jakieś dane bez uczenia głębokiego. Albo chcemy wyliczyć jakieś statystyki z nimi związane. Może przygotować jakieś opracowanie do publikacji? Czy jesteśmy tutaj również skazani na Pythona? Okazuje się, że nie. Istnieje &#8230; <a href="https://jakbadacdane.pl/gnu-r-kalendarz-adwentowy-18/" class="more-link">Czytaj dalej <span class="screen-reader-text">GNU R &#8211; kalendarz adwentowy #18</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Artykuł <a href="https://jakbadacdane.pl/gnu-r-kalendarz-adwentowy-18/">GNU R &#8211; kalendarz adwentowy #18</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Do efektywnego wykorzystania uczenia maszynowego, bardzo często wystarczy nam znajomość języka programowania <a href="https://jakbadacdane.pl/python-kalendarz-adwentowy-3/">Python</a> i jakichś stworzonych dla niego <a href="https://jakbadacdane.pl/scikit-learn-kalendarz-adwentowy-4/">bibliotek</a> pomocniczych. Czasem chcemy jednak przeanalizować jakieś dane bez uczenia głębokiego. Albo chcemy wyliczyć jakieś statystyki z nimi związane. Może przygotować jakieś opracowanie do publikacji? Czy jesteśmy tutaj również skazani na Pythona? Okazuje się, że nie. Istnieje bowiem język programowania o dość enigmatycznej nazwie GNU R, który również może nam pomóc w analizie danych.</p>
<h3>GNU R — idea</h3>
<p>Według <a href="https://en.wikipedia.org/wiki/R_(programming_language)" target="_blank" rel="noopener noreferrer">Wikipedii</a> język R jest o około trzy lata młodszy od Pythona. Nie jest to jednak język, który powstał jako język ogólnego zastosowania. Głównym celem jego powstania było zaimplementowanie fajnych pomysłów z języków S i Scheme. Jak może domyślasz się po nazwie, podstawowy interpreter języka R został opublikowany na licencji GPL.</p>
<h3>Dlaczego GNU R jest fajny?</h3>
<p>Jedną z podstawowych zalet GNU R jest jego wbudowane wsparcie dla analiz statystycznych. GNU R po prostu powstał z myślą o wspieraniu programisty właśnie w tych analizach. Mamy tam modelowanie liniowe i nieliniowe, analizę szeregów czasowych, grupowanie, agregowanie, wizualizacje i wiele więcej. Jeśli znasz Pythona, to możesz sobie wyobrazić tutaj wbudowanie Scikit-Learn i <a href="https://jakbadacdane.pl/pandas-kalendarz-adwentowy-5/">Pandas</a>.</p>
<p>Oczywiście wbudowane w GNU R funkcje to nie wszystko. Jak każdy szanujący się język programowania, GNU R posiada w sieci miejsce, gdzie twórcy rozszerzeń mogą je swobodnie publikować i utrzymywać. Najpopularniejsze miejsca dla GNU R to <a href="https://cran.r-project.org/" target="_blank" rel="noopener noreferrer">The Comprehensive R Archive Network (CRAN)</a> i <a href="https://bioconductor.org/" target="_blank" rel="noopener noreferrer">Bioconductor</a>. To pierwsze to repozytorium zawierające dodatkowe biblioteki raczej ogólnego przeznaczenia. To drugie natomiast specjalizuje się w dodatkach dotyczących analiz genetycznych i innych podobnych biologiczno-medycznych zagadnień. Obydwa te repozytoria są dość dobrze moderowane, dzięki czemu biblioteki w nich dostępne można uznać za raczej bezpieczne i efektywne.</p>
<h3>IDE dla GNU R</h3>
<p>Sam bazowy interpreter języka R jest uruchamiany w interaktywnym terminalu tekstowym. Można również od razu uruchamiać całe skrypty w języku R. Nie jest to jednak najwygodniejszy sposób pracy. Jeśli więc zaczynasz dopiero swoją przygodę z GNU R, to chciałbym polecić Ci dwa wygodniejsze rozwiązania. Pierwsze jest już Ci być może znane. Jest to IDE <a href="https://jakbadacdane.pl/jupyter-notebook-kalendarz-adwentowy-7/">Jupyter Notebook</a>. Możesz go używać tak samo jak z Pythonem. Wystarczy tylko, że zmienisz tzw. kernel, który uruchamia Twój kod. Drugie środowisko to bardziej &#8222;klasyczne&#8221; R Studio, które posiada podgląd stanu pamięci, powłokę interaktywną, edytor kodu i przeglądarkę katalogów. Wszystko, co może Ci być potrzebne jeśli preferujesz bardziej programistyczny styl pracy.</p>
<p>Żeby było jeszcze fajniej, całe podstawowe środowisko R i obydwa edytory dostępne są z poziomu dystrybucji <a href="https://jakbadacdane.pl/anaconda-kalendarz-adwentowy-2/">Anaconda</a>. I żeby to wszystko zainstalować na swoim systemie, wystarczy tylko <a href="https://jakbadacdane.pl/jak-jedna-linijka-przygotowac-sobie-srodowisko-r-z-ggplot2/">jedno polecenie</a>. Nieźle, nie?</p>
<h3>GNU R — Podsumowanie</h3>
<p>Język R to bardzo ciekawe i przydatne narzędzie w świecie pracy z danymi. Z jednej strony jest to język nieco mniej uniwersalny niż Python. Nieco ciężej jest tam na przykład uruchomić skalujący się dynamicznie serwis, który jest usługą webową tak jak np. przy pomocy Django. Z drugiej strony jednak jeśli pracujesz w medycynie i zajmujesz się badaniami statystycznymi, to właśnie tutaj będziesz szukał bibliotek, które implementują najnowsze publikacje z tej dziedziny. Przygotowanie publikacji naukowej również może okazać się łatwiejsze właśnie przy pomocy zestawu narzędzi zbudowanych wokół języka R. Nie jest też niczym nadzwyczajnym używanie go na równi z Pythonem w ramach jednego projektu. A, że jest to język zdecydowanie mniej popularny niż Python, to może okazać się, że posiadanie jego znajomości w portfolio umiejętności, realnie przekłada się na większe zarobki. Ech, żeby jeszcze tylko doba była dłuższa o parę godzin.</p>
<p>Artykuł <a href="https://jakbadacdane.pl/gnu-r-kalendarz-adwentowy-18/">GNU R &#8211; kalendarz adwentowy #18</a> pochodzi z serwisu <a href="https://jakbadacdane.pl">Jak badać dane?</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jakbadacdane.pl/gnu-r-kalendarz-adwentowy-18/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1528</post-id>	</item>
	</channel>
</rss>
