<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on Łukasz Prokulski, Dane i Analizy</title><link>https://blog.prokulski.science/categories/python/</link><description>Recent content in Python on Łukasz Prokulski, Dane i Analizy</description><generator>Hugo</generator><language>pl-PL</language><lastBuildDate>Tue, 22 Sep 2026 11:42:48 +0000</lastBuildDate><atom:link href="https://blog.prokulski.science/categories/python/index.xml" rel="self" type="application/rss+xml"/><item><title>DuckDB 250x szybszy od Postgresa, 14 indeksów pod lupą i architektura MCP na produkcji</title><link>https://blog.prokulski.science/2026/09/22/duckdb-250x-szybszy-od-postgresa-14-indeksow-pod-lupa-i-architektura-mcp-na-produkcji/</link><pubDate>Tue, 22 Sep 2026 11:42:48 +0000</pubDate><guid>https://blog.prokulski.science/2026/09/22/duckdb-250x-szybszy-od-postgresa-14-indeksow-pod-lupa-i-architektura-mcp-na-produkcji/</guid><description>&lt;p&gt;W tym tygodniu (znowu) dużo konkretów: pomiary, decyzje architektoniczne i rzeczy, które wyglądają na dobre praktyki, dopóki ktoś nie zmierzy, co naprawdę robią. Jak indeks w Postgresie, który spowalnia 4-krotnie zamiast przyspieszać.&lt;/p&gt;&#10;&lt;p&gt;Tematy rozłożone między:&lt;/p&gt;&#10;&lt;p&gt;inżynierię danych (bazy, pipeline, data lake, migracje), systemy agentów AI i ich bezpieczeństwo, inżynierię oprogramowania (design doc, code review, monorepo), praktyczny Python i DevOps.&lt;/p&gt;&#10;&lt;p&gt;Przy okazji — tym razem pokusiłem się o polskie tytuły artykułów. Daj znać, czy to działa, czy jednak wolisz oryginalne angielskie. Odpowiedź na tego maila wystarczy.&lt;/p&gt;</description></item><item><title>LLM zwraca poprawny JSON i się myli. Plus: pathlib, benchmarki i marka osobista w IT</title><link>https://blog.prokulski.science/2026/09/07/llm-zwraca-poprawny-json-i-sie-myli-plus-pathlib-benchmarki-i-marka-osobista-w-it/</link><pubDate>Mon, 07 Sep 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/09/07/llm-zwraca-poprawny-json-i-sie-myli-plus-pathlib-benchmarki-i-marka-osobista-w-it/</guid><description>&lt;p&gt;W tym wydaniu dużo o narzędziach, które już pewnie masz w stosie, ale rzadko trafia się dobry materiał tłumaczący ich działanie od środka. Są tu teksty o Airflow 3, dbt, Marquezie i formatach serializacji, a każdy z nich ma konkretną tezę, nie tylko opis funkcji.&lt;/p&gt;&#10;&lt;p&gt;jak migracja z legacy ETL do dbt wygląda krok po kroku, dlaczego Parquet eliminuje do 80% narzutu I/O w porównaniu z CSV, co Marquez robi z Twoim data lineage i jak integruje się z OpenLineage.&lt;/p&gt;</description></item><item><title>Dlaczego migracja do Databricks jest trudna i co z tym zrobić?</title><link>https://blog.prokulski.science/2026/08/03/dlaczego-migracja-do-databricks-jest-trudna-i-co-z-tym-zrobic/</link><pubDate>Mon, 03 Aug 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/08/03/dlaczego-migracja-do-databricks-jest-trudna-i-co-z-tym-zrobic/</guid><description>&lt;p&gt;W tym wydaniu powraca temat architektury danych i platformy lakehouse - Apache Iceberg, Databricks, Microsoft Fabric - ale tym razem z wyraźnie różnymi kątami. Jeden artykuł tłumaczy, czym Databricks w ogóle jest i jak działa. Drugi mówi wprost, dlaczego migracja na tę platformę często idzie nie tak. Trzeci pokazuje, jak zorganizować porządny proces wdrożeniowy - ale w Microsoft Fabric. Razem tworzą niezły przegląd tego, co czeka Cię przy pracy z nowoczesnymi platformami danych:&lt;/p&gt;</description></item><item><title>Medallion pęka w szwach, agenci tracą kontekst... co z tym zrobić?</title><link>https://blog.prokulski.science/2026/07/27/medallion-peka-w-szwach-agenci-traca-kontekst-co-z-tym-zrobic/</link><pubDate>Mon, 27 Jul 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/07/27/medallion-peka-w-szwach-agenci-traca-kontekst-co-z-tym-zrobic/</guid><description>&lt;p&gt;Ten numer ma wyraźny środek ciężkości: agenci AI i to, co z nimi robić, kiedy wychodzisz poza pierwsze eksperymenty. Teksty o LangGraph - od &amp;ldquo;jak zbudować pierwszego agenta&amp;rdquo; po &amp;ldquo;co psuje się po kilku miesiącach&amp;rdquo; - tworzą razem coś w rodzaju mini-ścieżki, którą można przejść od razu albo wracać do poszczególnych etapów w miarę potrzeb. Uzupełnia je tekst o tym, jak zmienia się rola programisty, kiedy AI przejmuje pisanie kodu - i dlaczego to jest trudniejsze niż się wydaje.&lt;/p&gt;</description></item><item><title>Agenty piszą CV, Atlassian zmienia Jirę, a Polars i DuckDB łączą siły</title><link>https://blog.prokulski.science/2026/07/20/agenty-pisza-cv-atlassian-zmienia-jire-a-polars-i-duckdb-lacza-sily/</link><pubDate>Mon, 20 Jul 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/07/20/agenty-pisza-cv-atlassian-zmienia-jire-a-polars-i-duckdb-lacza-sily/</guid><description>&lt;p&gt;Cześć! Za nami finał piłkarskich mistrzostw świata, gdzie Argentyna mierzyła się z Hiszpanią. Niezależnie od wyniku i wczorajszych emocji, poniedziałkowy poranek w IT przynosi powrót do naszej technologicznej rzeczywistości. Oby Twój tydzień zaczął się bez pożarów na produkcji!&lt;/p&gt;&#10;&lt;p&gt;W tym tygodniu styk AI oraz codziennych procesów deweloperskich.&lt;/p&gt;&#10;&lt;p&gt;Coraz więcej narzędzi, na czele z odświeżoną Jirą od Atlassiana, stawia na głęboką integrację z agentami AI, Pojawiają się innowacyjne frameworki, które potrafią napisać CV, analizować ogłoszenia o pracę i przejść przez rekrutacyjne sito, Obok rosnącej roli modeli LLM, dużo mówi się o sztuce sprawnego kierowania zapytaniami do odpowiednich silników językowych.&lt;/p&gt;</description></item><item><title>ATS ocenia CV losowo, tmux ratuje deploy, VLM czyta wideo</title><link>https://blog.prokulski.science/2026/07/13/ats-ocenia-cv-losowo-tmux-ratuje-deploy-vlm-czyta-wideo/</link><pubDate>Mon, 13 Jul 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/07/13/ats-ocenia-cv-losowo-tmux-ratuje-deploy-vlm-czyta-wideo/</guid><description>&lt;p&gt;W tym wydaniu dużo o tym, jak AI wchodzi głębiej w infrastrukturę - i co z tego faktycznie wynika w praktyce. Mamy zarówno materiały pokazujące granice modeli językowych (ocena CV, rozumienie sarkazmu), jak i te, które pokazują, jak je sensownie wkomponować w działające systemy (logi, inference stack, MCP nad Postgresem).&lt;/p&gt;&#10;&lt;p&gt;Architektura i skalowanie: od powiadomień push przy milionie odbiorców, przez inference stack złożony z vLLM, KServe i llm-d, po zaawansowane materializacje w DWH, Data Engineering i semantic layer: dbt + Looker w pełnym cyklu, pięć paradygmatów modelowania danych i nowości z frontu LookML, Computer vision: OpenCV 5 bez PyTorcha, detekcja sylwetek z 0,16 ms latencją i scene graphy budowane przez VLM.&lt;/p&gt;</description></item><item><title>Lokalni agenci, schema evolution i najgorsze błędy XGBoost</title><link>https://blog.prokulski.science/2026/07/06/lokalni-agenci-schema-evolution-i-najgorsze-bledy-xgboost/</link><pubDate>Mon, 06 Jul 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/07/06/lokalni-agenci-schema-evolution-i-najgorsze-bledy-xgboost/</guid><description>&lt;p&gt;To wydanie zadaje dwa pytania, które wielu z nas ma gdzieś z tyłu głowy: czy narzędzia, których używam na co dzień, to nadal dobry wybór - i czy warto rozejrzeć się za czymś nowym? Na tapecie znalazły się dbt Core 2.0, DuckDB jako zamiennik Pandas, lokalne agenty AI do pisania kodu oraz nowe modele uczenia maszynowego, które chcą wypchnąć XGBoost z piedestału. Jeśli masz wrażenie, że świat danych zmienia się szybciej niż jesteś w stanie za nim nadążyć - ten numer to potwierdza.&lt;/p&gt;</description></item><item><title>Więcej niż podstawy: dbt w startupach, HTAP i inteligentne oszczędzanie tokenów</title><link>https://blog.prokulski.science/2026/06/15/wiecej-niz-podstawy-dbt-w-startupach-htap-i-inteligentne-oszczedzanie-tokenow/</link><pubDate>Mon, 15 Jun 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/06/15/wiecej-niz-podstawy-dbt-w-startupach-htap-i-inteligentne-oszczedzanie-tokenow/</guid><description>&lt;p&gt;Połowa czerwca to tradycyjnie czas stabilizacji przed wakacyjnym sezonem ogórkowym, ale patrząc na tempo publikacji technicznych – nikt nie planuje zwalniać obrotów.&lt;br&gt;&#10;Zanim jednak uciekniesz na zasłużony urlop, trzymaj solidną dawkę inżynierskiej wiedzy, która idealnie sprawdzi się do czytania przy poniedziałkowej porannej kawie (w końcu nic tak nie relaksuje jak lektura o optymalizacji partycji w Cassandrze przez inżynierów z Netfliksa!).&lt;/p&gt;&#10;&lt;p&gt;W tym wydaniu newslettera skupiam się na dynamicznie rozwijających się systemach agentowych oraz wyzwaniach architektury danych w czasie rzeczywistym.&lt;/p&gt;</description></item><item><title>Czy AI Slop zaleje sieć? Plus Spark, Kafka i SQL</title><link>https://blog.prokulski.science/2026/05/25/czy-ai-slop-zaleje-siec-plus-spark-kafka-i-sql/</link><pubDate>Mon, 25 May 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/05/25/czy-ai-slop-zaleje-siec-plus-spark-kafka-i-sql/</guid><description>&lt;p&gt;W tym wydaniu obserwujemy wyraźny trend profesjonalizacji narzędzi AI oraz ich głębokiej integracji z codziennym workflow inżynierskim.&lt;/p&gt;&#10;&lt;p&gt;Analizujemy, jak agenty Playwright i protokół MCP automatyzują cykl życia błędu, od wykrycia po zgłoszenie w Jirze, pokazujemy, jak Claude Code i lokalne modele Qwen2.5 zmieniają zasady gry w analizie danych i budowaniu dashboardów, i sprawdzamy, ile &amp;ldquo;śmieciowego&amp;rdquo; AI (slop) faktycznie krąży w sieci i jak to wpływa na jakość informacji.&lt;/p&gt;&#10;&lt;p&gt;W obszarze inżynierii danych skupiamy się na wydajności, optymalizacji kosztów i mądrym wyborze silników bazodanowych.&lt;/p&gt;</description></item><item><title>AI agenci, nudny backend i polskie głosy o architekturze hexagonalnej</title><link>https://blog.prokulski.science/2026/05/18/ai-agenci-nudny-backend-i-polskie-glosy-o-architekturze-hexagonalnej/</link><pubDate>Mon, 18 May 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/05/18/ai-agenci-nudny-backend-i-polskie-glosy-o-architekturze-hexagonalnej/</guid><description>&lt;p&gt;W tym wydaniu obserwujemy wyraźny trend profesjonalizacji narzędzi AI oraz powrotu do sprawdzonych, &amp;ldquo;nudnych&amp;rdquo; technologii.&lt;/p&gt;&#10;&lt;p&gt;Analizujemy, jak agenci AI i modele LLM (Claude, ChatGPT) ewoluują w stronę praktycznych narzędzi do budowania skillów i automatycznego naprawiania testów, pokazujemy, dlaczego architekci coraz częściej rezygnują ze złożonych baz grafowych na rzecz sprawdzonych ontologii SQL, i tłumaczymy, dlaczego w backendzie prostota i standaryzacja wygrywają z niepotrzebną innowacyjnością.&lt;/p&gt;&#10;&lt;p&gt;W świecie Data Engineeringu skupiamy się na hybrydowym podejściu do analityki i optymalizacji kosztów.&lt;/p&gt;</description></item><item><title>Agenty w produkcji, DuckDB na sterydach i kłamstwa Kubernetesowi</title><link>https://blog.prokulski.science/2026/05/11/agenty-w-produkcji-duckdb-na-sterydach-i-klamstwa-kubernetesowi/</link><pubDate>Mon, 11 May 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/05/11/agenty-w-produkcji-duckdb-na-sterydach-i-klamstwa-kubernetesowi/</guid><description>&lt;p&gt;W tym wydaniu skupiamy się na profesjonalizacji narzędzi AI w codziennej pracy inżynierskiej.&lt;/p&gt;&#10;&lt;p&gt;Analizujemy, jak Databricks i Shopify wbudowują agentów AI bezpośrednio w swoje platformy, pokazujemy, dlaczego AI przestaje być dodatkiem, a staje się integralną warstwą systemów, i tłumaczymy zmianę podejścia: od prompt engineeringu do context engineeringu i pracy na głębszych warstwach modeli LLM.&lt;/p&gt;&#10;&lt;p&gt;W świecie Data Engineeringu wracają do gry lekkie, lokalne silniki analityczne.&lt;/p&gt;&#10;&lt;p&gt;Przyglądamy się, jak DuckDB i Polars redefiniują wydajność pracy z danymi na pojedynczej maszynie, pokazujemy, kiedy lokalne przetwarzanie wygrywa z klasycznym podejściem cloud-first, a także wracamy do fundamentów: Kafka i Spark wciąż żyją, ale wymagają konkretnych checklist optymalizacyjnych przy skali produkcyjnej.&lt;/p&gt;</description></item><item><title>Od potoków danych w YAML po automatyzację SharePoint API</title><link>https://blog.prokulski.science/2026/05/04/od-potokow-danych-w-yaml-po-automatyzacje-sharepoint-api/</link><pubDate>Mon, 04 May 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/05/04/od-potokow-danych-w-yaml-po-automatyzacje-sharepoint-api/</guid><description>&lt;p&gt;W tym wydaniu skupiamy się na przełomowych zmianach w sposobie, w jaki systemy AI wchodzą w interakcję z naszym otoczeniem technologicznym.&lt;/p&gt;&#10;&lt;p&gt;Analizujemy Model Context Protocol (MCP) – otwarty standard, który kończy erę pisania dedykowanych integracji, sprawdzamy, jak agenty AI płynnie komunikują się z bazami danych w modelu „plug-and-play”, i pokazujemy praktyczne wdrożenia budujące skalowalne ekosystemy sztucznej inteligencji.&lt;/p&gt;&#10;&lt;p&gt;W obszarze Data Engineeringu i analityki dbt pozostaje centralnym punktem, ale jego rola ewoluuje w stronę pełnej automatyzacji.&lt;/p&gt;</description></item><item><title>Czy AI naprawi Twoje błędy na produkcji? Plus 25 materiałów o Data &amp; AI</title><link>https://blog.prokulski.science/2026/04/27/czy-ai-naprawi-twoje-bledy-na-produkcji-plus-25-materialow-o-data-ai/</link><pubDate>Mon, 27 Apr 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/04/27/czy-ai-naprawi-twoje-bledy-na-produkcji-plus-25-materialow-o-data-ai/</guid><description>&lt;p&gt;Dzisiejsze wydanie zdominowała dojrzałość systemów AI i ich przejście od prostego generowania kodu do pełnej orkiestracji procesów.&lt;/p&gt;&#10;&lt;p&gt;Mamy fascynujące studium przypadku AI, która samodzielnie diagnozuje i naprawia błędy na produkcji, sprawdzamy, jak autonomiczne agenty przejmują kontrolę nad cyklem życia eksperymentów ML, a także analizujemy model sub-agentów wspierających rolę Senior Staff Engineera w zarządzaniu złożonymi projektami.&lt;/p&gt;&#10;&lt;p&gt;W obszarze Data Engineeringu i analityki widać wyraźny trend w stronę profesjonalizacji i &lt;em&gt;utwardzania&lt;/em&gt; pipeline’ów (na przykład korzystając z Data Build Tool).&lt;/p&gt;</description></item><item><title>Agenty piszą kod, ale nie projektują systemów. Plus ponad 20 innych materiałów</title><link>https://blog.prokulski.science/2026/03/23/agenty-pisza-kod-ale-nie-projektuja-systemow-plus-ponad-20-innych-materialow/</link><pubDate>Mon, 23 Mar 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/03/23/agenty-pisza-kod-ale-nie-projektuja-systemow-plus-ponad-20-innych-materialow/</guid><description>&lt;p&gt;W dzisiejszym wydaniu dominują dwa tematy: agenty AI i granice tego, co faktycznie potrafią, oraz architektura systemów na konkretnych przykładach z produkcji.&lt;/p&gt;&#10;&lt;p&gt;Znajdziesz tu też case study Slacka (przebudowa powiadomień), Twittera (500 tys. tweetów na minutę) i Stripe&amp;rsquo;a (1300 PR-ów tygodniowo), a obok nich – praktyczne materiały o DuckDB, dbt, LangGraph i ClickHouse.&lt;/p&gt;&#10;&lt;p&gt;Osobny wątek to praca z modelami językowymi: od kursów Anthropic, przez projektowanie system promptów, po refleksję o tym, dlaczego zaczynamy przepraszać chatboty.&lt;/p&gt;</description></item><item><title>DE w baseballu, stress-test OpenClaw oraz event-driven agents</title><link>https://blog.prokulski.science/2026/03/16/de-w-baseballu-stress-test-openclaw-oraz-event-driven-agents/</link><pubDate>Mon, 16 Mar 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/03/16/de-w-baseballu-stress-test-openclaw-oraz-event-driven-agents/</guid><description>&lt;p&gt;W tym wydaniu agenci AI w praktyce: równoległe workflow developerskie, agenty głosowe z niską latencją i szersze spojrzenie na rynek pracy.&lt;/p&gt;&#10;&lt;p&gt;Solidna porcja inżynierii danych — case study z BlaBlaCar i Zalando, pipeline&amp;rsquo;y na Kafce i Airflow, porównanie Databricks z Microsoft Fabric. Są też dwa teksty o dbt: jeśli wolisz polski i gotowiec do uruchomienia, przygotowałem &lt;a href="https://github.com/dane-analizy/dbt-tutorial"&gt;szybki start jako repo na GitHubie&lt;/a&gt; — wrzuć, odpal, działa (przynajmniej u mnie ;-).&lt;/p&gt;&#10;&lt;p&gt;Dla lubiących konkrety: analiza modeli cenowych pięciu cloud data warehouse&amp;rsquo;ów, omówienie pułapki „iluzji prototypu&amp;quot; w wdrożeniach AI i kilka tekstów o semantic layer — w tym &lt;a href="../../2025/12/19/semantic-layer/"&gt;mój wpis z końca zeszłego roku&lt;/a&gt;, jeśli chcesz szerszy kontekst przed lekturą.&lt;/p&gt;</description></item><item><title>dbt i semantic layer? a może po raz kolejny agenci ai?</title><link>https://blog.prokulski.science/2026/03/09/dbt-i-semantic-layer-a-moze-po-raz-kolejny-agenci-ai/</link><pubDate>Mon, 09 Mar 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/03/09/dbt-i-semantic-layer-a-moze-po-raz-kolejny-agenci-ai/</guid><description>&lt;p&gt;W tym wydaniu agenci AI w praktyce: równoległe workflow developerskie, agenty głosowe z niską latencją i szersze spojrzenie na rynek pracy.&lt;/p&gt;&#10;&lt;p&gt;Solidna porcja inżynierii danych — case study z BlaBlaCar i Zalando, pipeline&amp;rsquo;y na Kafce i Airflow, porównanie Databricks z Microsoft Fabric. Są też dwa teksty o dbt: jeśli wolisz polski i gotowiec do uruchomienia, przygotowałem &lt;a href="https://github.com/dane-analizy/dbt-tutorial"&gt;szybki start jako repo na GitHubie&lt;/a&gt; — wrzuć, odpal, działa (przynajmniej u mnie ;-).&lt;/p&gt;&#10;&lt;p&gt;Dla lubiących konkrety: analiza modeli cenowych pięciu cloud data warehouse&amp;rsquo;ów, omówienie pułapki „iluzji prototypu&amp;quot; w wdrożeniach AI i kilka tekstów o semantic layer — w tym &lt;a href="../../2025/12/19/semantic-layer/"&gt;mój wpis z końca zeszłego roku&lt;/a&gt;, jeśli chcesz szerszy kontekst przed lekturą.&lt;/p&gt;</description></item><item><title>Lokalne AI, optymalizacja Kafki i analiza 50 tysięcy profili randkowych</title><link>https://blog.prokulski.science/2026/02/16/lokalne-ai-optymalizacja-kafki-i-analiza-50-tysiecy-profili-randkowych/</link><pubDate>Mon, 16 Feb 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/02/16/lokalne-ai-optymalizacja-kafki-i-analiza-50-tysiecy-profili-randkowych/</guid><description>&lt;p&gt;W dzisiejszym wydaniu łączymy praktyczne podejście do AI z fundamentami inżynierii danych. Zaczynamy od narzędzi agentowych – customizacji Claude Code dla Pythona (gdzie język jest przykładem - to samo można zrobić chociażby dla Javy) i OpenClaw jako lokalnego asystenta AI z pełną kontrolą nad danymi.&lt;/p&gt;&#10;&lt;p&gt;W sekcji ML znajdziecie automatyzację audytu katalogów z użyciem XGBoost, wprowadzenie do PyCaret (taka biblioteka auto-ml dla Pythona) oraz semantyczne wyszukiwanie obrazów łączące Gemini z Elasticsearch.&lt;/p&gt;</description></item><item><title>Zero ETL i hackathon z Bielikiem</title><link>https://blog.prokulski.science/2026/02/09/zero-etl-i-hackathon-z-bielikiem/</link><pubDate>Mon, 09 Feb 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/02/09/zero-etl-i-hackathon-z-bielikiem/</guid><description>&lt;p&gt;W dzisiejszym wydaniu: architektura Zero ETL jako nowy standard w inżynierii danych (albo kolejny buzz word - różnie to bywa z nowościami), praktyczne zastosowania AI w zespołach data science, oraz ewolucja DuckDB w kierunku pełnoprawnego lakehouse.&lt;br&gt;&#10;Znalazłem też przegląd antywzorców w architekturach mikroserwisowych, strategie cache&amp;rsquo;owania w REST API i przewodnik po zarządzaniu ewolucją schematów w pipeline&amp;rsquo;ach strumieniowych (to potrafi być ból!).&lt;br&gt;&#10;Znajdziesz dzisiaj również frameworki analityczne dla e-commerce, techniki feature engineering w SQL dla szeregów czasowych oraz narzędzia do observability systemów ML w produkcji.&lt;/p&gt;</description></item><item><title>Kiedy AI zaczyna tworzyć własną kulturę... i jak ją wdrażać w produkcji</title><link>https://blog.prokulski.science/2026/02/02/kiedy-ai-zaczyna-tworzyc-wlasna-kulture-i-jak-ja-wdrazac-w-produkcji/</link><pubDate>Mon, 02 Feb 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/02/02/kiedy-ai-zaczyna-tworzyc-wlasna-kulture-i-jak-ja-wdrazac-w-produkcji/</guid><description>&lt;p&gt;Hit minionego tygodnia - &lt;a href="https://www.moltbook.com/"&gt;Moltbook&lt;/a&gt;. Jest to eksperymentalna sieć społecznościowa w stylu Reddita, zbudowana dla agentów AI, gdzie ludzie mogą tylko podglądać, a nie brać udziału.&lt;/p&gt;&#10;&lt;p&gt;Tekst &lt;a href="https://www.astralcodexten.com/p/best-of-moltbook"&gt;Best Of Moltbook&lt;/a&gt; traktuje Moltbook jako dziwny, ale fascynujący eksperyment: obserwatorium tego, jak zachowują się LLM‑owe agenty, gdy zostawi się je samym sobie z własną przestrzenią społecznościową. Autor waha się między interpretacją &lt;em&gt;to tylko sprytna konfabulacja i echo ludzkich promptów&lt;/em&gt; a podejrzeniem, że dzieje się tu coś ciekawszego - rodzaj zalążkowej kultury agentów, z własnymi memami, lękami, duchowością i polityką.&lt;/p&gt;</description></item><item><title>Rób produkcyjnie agentów AI, platformy danych i automatyzacje, które naprawdę dowożą</title><link>https://blog.prokulski.science/2026/01/26/rob-produkcyjnie-agentow-ai-platformy-danych-i-automatyzacje-ktore-naprawde-dowoza/</link><pubDate>Mon, 26 Jan 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/01/26/rob-produkcyjnie-agentow-ai-platformy-danych-i-automatyzacje-ktore-naprawde-dowoza/</guid><description>&lt;p&gt;To wydanie to mocny pakiet o tym, jak przestać bawić się w „demka” i zacząć budować produkcyjne systemy danych, AI i automatyzacji – od architektury agentów, przez hurtownie, po niskopoziomowe optymalizacje.&lt;/p&gt;&#10;&lt;p&gt;Znajdziesz tu blok tekstów o agentach AI (platformy, orkiestracja, pamięć, narzędzia, realne case’y typu monitoring w Slacku), który pokazuje, co trzeba dostarczyć, żeby agenci nie wybuchli przy pierwszym większym ruchu. Do tego zestaw materiałów o analityce i data engineeringu: dobre EDA, przetwarzanie danych geograficznych z DuckDB + GeoPandas, kontrakty danych, wzorce ETL/ELT (Snowflake + dbt + Airflow, migracja z Airflow do Databricks), patterny pod &lt;em&gt;AI‑ready pipelines&lt;/em&gt; i benchmark DuckDB vs Spark.&lt;/p&gt;</description></item><item><title>Agenci AI, skalowanie pipeline'ów i ewolucja Pythona</title><link>https://blog.prokulski.science/2026/01/19/agenci-ai-skalowanie-pipelineow-i-ewolucja-pythona/</link><pubDate>Mon, 19 Jan 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/01/19/agenci-ai-skalowanie-pipelineow-i-ewolucja-pythona/</guid><description>&lt;p&gt;W dzisiejszym wydaniu głęboko zanurzamy się w świat &lt;strong&gt;agentów AI i agentic AI&lt;/strong&gt;: od fundamentalnych rozróżnień między generatywną AI, agentami i podejściem agentycznym, przez praktyczne wyzwania bezpieczeństwa w postaci mapowania API, aż po optymalizację zarządzania kontekstem w Model Context Protocol. Nie zabraknie również solidnych podstaw machine learningu: kodowanie danych kategorycznych, Support Vector Machines oraz kompleksowy przegląd metod detekcji anomalii w Pythonie.&lt;/p&gt;&#10;&lt;p&gt;Na froncie &lt;strong&gt;inżynierii danych&lt;/strong&gt; pokazujemy, jak ewoluować od prostych crontabów do systemów obsługujących miliardy zdarzeń, jak wykorzystać DuckDB do szybkich analiz bez ciężkiej infrastruktury oraz dlaczego dokumentacja jako kod w dbt-checkpoint staje się silnikiem jakości danych. Praktyczny przewodnik end-to-end z darmowymi narzędziami oraz refleksje nad zawodem data engineera dopełniają obrazu codziennych wyzwań w tej dziedzinie.&lt;/p&gt;</description></item><item><title>Zrób sobie lakehouse na laptopie</title><link>https://blog.prokulski.science/2026/01/12/zrob-sobie-lakehouse-na-laptopie/</link><pubDate>Mon, 12 Jan 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/01/12/zrob-sobie-lakehouse-na-laptopie/</guid><description>&lt;p&gt;W dzisiejszym wydaniu dominują tematy z pogranicza AI, data engineeringu i praktyk inżynierskich. Szczególną uwagę poświęcamy agentom AI - od pisania skutecznych CLAUDE.md i budowy prostych agentów kodujących w 200 liniach, po zaawansowany monitoring autonomicznych systemów i wzorce projektowe dla inteligentnych aplikacji.&lt;/p&gt;&#10;&lt;p&gt;W sekcji data engineering znajdziesz konkretne rozwiązania: od wzorców partycjonowania przyspieszających zapytania, przez budowę lokalnego pipeline&amp;rsquo;u ELT z DuckDB i dbt (bez kosztów chmury), aż po kompletny przewodnik tworzenia lakehouse&amp;rsquo;a z Apache Iceberg, Trino i MinIO. Nie zabrakło też materiałów przygotowujących do rozmów rekrutacyjnych - 10 kluczowych tematów system design dla data engineerów w 2026 roku.&lt;/p&gt;</description></item><item><title>AI: "jednocześnie dużo mądrzejsze i dużo głupsze, niż się spodziewałem"</title><link>https://blog.prokulski.science/2026/01/05/ai-jednoczesnie-duzo-madrzejsze-i-duzo-glupsze-niz-sie-spodziewalem/</link><pubDate>Mon, 05 Jan 2026 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2026/01/05/ai-jednoczesnie-duzo-madrzejsze-i-duzo-glupsze-niz-sie-spodziewalem/</guid><description>&lt;p&gt;W dzisiejszym wydaniu szeroki przegląd tego, co dzieje się na styku AI, danych i infrastruktury. Zajrzymy pod maskę architektur agentowych, gdzie bazy danych przejmują rolę pamięci długoterminowej i koordynują działanie systemów wieloagentowych. Zobaczymy, jak w praktyce działają autonomiczne pipeline&amp;rsquo;y AI — od generatora pomysłów biznesowych po systemy RAG obsługujące tysiące zapytań na sekundę.&lt;/p&gt;&#10;&lt;p&gt;Nie zabraknie konkretów z obszaru data engineeringu: hybrydowe tabele BigQuery z sekundową świeżością danych, otwarte formaty tabelaryczne (Delta Lake, Iceberg) i nowe możliwości DuckDB — od notebooków w przeglądarce po przetwarzanie terabajtów lokalnie. PostgreSQL również dostaje swoje pięć minut: od wewnętrznych mechanizmów recovery po niedoceniane funkcje, które warto znać.&lt;/p&gt;</description></item><item><title>Ostatni raz w tym roku</title><link>https://blog.prokulski.science/2025/12/22/ostatni-raz-w-tym-roku/</link><pubDate>Mon, 22 Dec 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/12/22/ostatni-raz-w-tym-roku/</guid><description>&lt;p&gt;W dzisiejszym wydaniu koncentrujemy się na praktycznych aspektach pracy z danymi i modelami AI. Z obszaru Data Engineering znajdziecie rozwiązania eliminujące nocne przetwarzanie batchowe przy pomocy DuckDB i dbt, przewodnik po strategiach obsługi danych wrażliwych oraz techniki checkpointingu w systemach event-driven. O DuckDB aż trzy materiały - bo to świetne narzędzie. Podobnie PostgreSQL to świetne narzędzie, &amp;ldquo;zamiatające&amp;rdquo; inne typy baz - tutaj na przykładzie baz wektorowych i indeksowania 100 milionów wektorów w 20 minut.&lt;/p&gt;</description></item><item><title>Jak ludzie korzystają z AI w pracy?</title><link>https://blog.prokulski.science/2025/12/15/jak-ludzie-korzystaja-z-ai-w-pracy/</link><pubDate>Mon, 15 Dec 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/12/15/jak-ludzie-korzystaja-z-ai-w-pracy/</guid><description>&lt;p&gt;Ten tydzień - ostatni pełny przed świętami - to raczej czas porządków, niż wielkich premier. Choć niektórzy testują, jak naprawdę radzi sobie &lt;a href="https://openai.com/pl-PL/index/introducing-gpt-5-2/"&gt;GTP-5.2&lt;/a&gt; - najnowsze dziecko OpenAI.&lt;br&gt;&#10;Na dziś wystarczy tej dolinokratycznej magii. Przejdźmy do rzeczy, które mają większy sens: praktyka, konkret, zero ściemy (bo po to tu jesteś, nie?).&lt;/p&gt;&#10;&lt;p&gt;W tym numerze skupiamy się na tym, co daje realny efekt. Optymalizacja. Wydajność. Sprytne podejścia do codziennej roboty z danymi. Mamy PostgreSQL i DuckDB w akcji, Parquet na sterydach oraz garść sztuczek w Apache Spark i SQLAlchemy. Dorzucamy integrację DuckDB z Amazon S3 i pomysł na streamingowy ETL bez klasycznych hurtowni - lekko, elastycznie i bez ton konfiguracji.&lt;/p&gt;</description></item><item><title>Kryzys pracowniczy w branży + konferencja AI Dev 25</title><link>https://blog.prokulski.science/2025/12/08/kryzys-pracowniczy-w-branzy-konferencja-ai-dev-25/</link><pubDate>Mon, 08 Dec 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/12/08/kryzys-pracowniczy-w-branzy-konferencja-ai-dev-25/</guid><description>&lt;p&gt;W dzisiejszym wydaniu przyglądamy się transformacji współczesnych architektur IT – od rosnącej konkurencji dla RESTa i mikroserwisów, przez natywną obsługę wektorów w Postgresie, aż po praktyczne wzorce partycjonowania Parquet. W sekcji AI i ML znajdziecie przewodnik po PyTorch dla chcących zacząć z sieciami neuronowymi i budowaniem własnych modeli AI. Znajdziecie też tekst o metodach interpretacji predykcji XGBoost z wykorzystaniem SHAP.&lt;/p&gt;&#10;&lt;p&gt;Dla programistów Pythona przygotowaliśmy materiały o walidacji outputów LLM z Pydantic, monitoringu FastAPI, zaawansowanych technikach pandas oraz nowym narzędziu &amp;ldquo;ty&amp;rdquo; do automatyzacji przepływów w chmurze. DevOpsi mogą sprawdzić tutorial wdrażania Spring Boot na Kubernetes, rozwiązanie problemu rozbieżności między środowiskami lokalnym a produkcyjnym oraz master class z tcpdump i Wireshark.&lt;/p&gt;</description></item><item><title>Agenci AI, data engineering i fine-tuning LLM</title><link>https://blog.prokulski.science/2025/11/17/agenci-ai-data-engineering-i-fine-tuning-llm/</link><pubDate>Mon, 17 Nov 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/11/17/agenci-ai-data-engineering-i-fine-tuning-llm/</guid><description>&lt;p&gt;W dzisiejszym wydaniu koncentrujemy się na praktycznych aspektach pracy z danymi i sztuczną inteligencją (co nie jest niczym nowym dla stałych czytelników newslettera; a nowych - serdecznie witam!).&lt;br&gt;&#10;Znajdziesz tu kompleksowe tutoriale budowy agentów AI z LangChain, przewodniki po fine-tuningu modeli językowych metodą QLoRA oraz zaawansowane techniki pracy z PostgreSQL i jego rozszerzeniami.&lt;/p&gt;&#10;&lt;p&gt;Szczególną uwagę poświęcamy inżynierii danych: od strategii inkrementalnego ładowania i projektowania idempotentnych pipeline&amp;rsquo;ów, przez real-time CDC z Debezium i Kafką, aż po nowoczesne podejście lakehouse z DuckDB.&lt;br&gt;&#10;Nie zabrakło również głębokiej analizy matematyki stojącej za zero-shot learning, przeglądu metryk klasyfikacyjnych oraz praktycznych rozwiązań dla systemów rozproszonych, jak predykcyjne autoskalowanie Apache Flink.&lt;/p&gt;</description></item><item><title>System design, bazy danych i praktyczny Python</title><link>https://blog.prokulski.science/2025/11/10/system-design-bazy-danych-i-praktyczny-python/</link><pubDate>Mon, 10 Nov 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/11/10/system-design-bazy-danych-i-praktyczny-python/</guid><description>&lt;p&gt;W dzisiejszym wydaniu skupiamy się na praktycznych aspektach projektowania i optymalizacji systemów danych.&lt;br&gt;&#10;Zaczynamy od architektury: poznasz sprawdzone metody nauki projektowania systemów oraz zajrzysz pod maskę infrastruktury OpenAI opartej na Kubernetes i Apache Kafka.&lt;br&gt;&#10;W sekcji baz danych znajdziesz spojrzenie na BigQuery z perspektywy programistów Pythona oraz dwanaście realnych przypadków migracji do DuckDB z konkretnymi oszczędnościami.&lt;/p&gt;&#10;&lt;p&gt;Miłośnicy Pythona znajdą też kilka wartościowych materiałów: od elegancji dekoratorów, przez biblioteki przewyższające Excela, po praktyczną migrację z PostgreSQL do MongoDB. Warto zerknąć na porównanie HTTPX z Requests (nie tylko w kontekście projektów LLM, ale po prostu na httpx jako nowocześniejszy pakiet) oraz omówienie narzędzia UV Toolchain do stabilizacji środowisk CI/CD.&lt;/p&gt;</description></item><item><title>Kafka jest szybka, ale użyję Postgres</title><link>https://blog.prokulski.science/2025/11/03/kafka-jest-szybka-ale-uzyje-postgres/</link><pubDate>Mon, 03 Nov 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/11/03/kafka-jest-szybka-ale-uzyje-postgres/</guid><description>&lt;p&gt;W dzisiejszym wydaniu przyglądamy się rozwiązaniom praktycznym z kilku kluczowych obszarów analizy i przetwarzania danych. Zaczynamy od fuzzy string matching i technik dopasowywania niedoskonałych tekstów, przechodzimy przez architekturę pipeline&amp;rsquo;ów ETL opartych na open source, aż po szczegóły integracji Kafka, Flink i Spark w systemach streamingowych.&lt;/p&gt;&#10;&lt;p&gt;W sekcji Python znajdziesz porównanie nowości w wersjach 3.13 i 3.14, kompleksowy przewodnik (a nawet dwa, aby niejako dopełnić wiedzę) po Pydantic oraz praktyczne wzorce projektowe dla FastAPI. Nie zabraknie też tematów związanych z optymalizacją PostgreSQL w aplikacjach czasu rzeczywistego, zarządzaniem kosztami w chmurze AWS oraz głęboko partycjonowanymi danymi w Apache Spark.&lt;/p&gt;</description></item><item><title>Język polski najlepszy do promptowania?</title><link>https://blog.prokulski.science/2025/10/27/jezyk-polski-najlepszy-do-promptowania/</link><pubDate>Mon, 27 Oct 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/10/27/jezyk-polski-najlepszy-do-promptowania/</guid><description>&lt;p&gt;W dzisiejszym wydaniu dominują tematy związane z infrastrukturą danych i narzędziami AI. Szczególnie polecam artykuł o benchmarku ONERULER – okazuje się, że język polski najlepiej radzi sobie z analizą długich kontekstów w modelach językowych!&lt;/p&gt;&#10;&lt;p&gt;Jeśli budujesz pipeline&amp;rsquo;y danych, znajdziesz praktyczne przewodniki po open table formats (Iceberg, Delta Lake), kompletnej konfiguracji Docker+Airflow+dbt+Postgres oraz wzorcach SQL w DuckDB. Dla zainteresowanych Kafką – materiały o wysokiej dostępności na GKE Autopilot i alternatywie w postaci BufStream z silniejszymi gwarancjami spójności.&lt;/p&gt;</description></item><item><title>Konkretne projekty z analizy danych (jak zawsze :)</title><link>https://blog.prokulski.science/2025/10/20/konkretne-projekty-z-analizy-danych-jak-zawsze/</link><pubDate>Mon, 20 Oct 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/10/20/konkretne-projekty-z-analizy-danych-jak-zawsze/</guid><description>&lt;p&gt;W dzisiejszym wydaniu skupiamy się na praktycznych rozwiązaniach dla każdego etapu pracy z danymi - od modelowania i inżynierii cech przez optymalizację baz danych, aż po wdrażanie w produkcji.&lt;/p&gt;&#10;&lt;p&gt;Czeka Cię porównanie modeli predykcyjnych (typowe zadanie dla juniorów - wytłumaczone krok po kroku) i nowe możliwości DuckDB, które zastępują całe pipeline&amp;rsquo;y w Pandas. Znajdziesz też wyzwania związane z architekturą: jak budować skalowalne systemy danych od podstaw oraz gdzie naprawdę powinny znaleźć się kontrakty danych. Dla miłośników LLMów jest przewodnik po LangChain oraz LangGraph, praktyczną instrukcję budowy lokalnego systemu RAG oraz analizę gotowości &lt;em&gt;foundation models&lt;/em&gt; do pracy z danymi tabelarycznymi.&lt;/p&gt;</description></item><item><title>Raport State of AI + Encyklopedia Seaborn</title><link>https://blog.prokulski.science/2025/10/13/raport-state-of-ai-encyklopedia-seaborn/</link><pubDate>Mon, 13 Oct 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/10/13/raport-state-of-ai-encyklopedia-seaborn/</guid><description>&lt;p&gt;Dzisiaj wstęp w punktach i tylko dwa zagadnienia (omówione szerzej w pełnych tekstach, które znajdziesz niżej). Oczywiście to nie wszystko co ciekawe w tym numerze!&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Kluczowe wnioski z raportu &lt;strong&gt;State of AI Report 2025&lt;/strong&gt;:&lt;/li&gt;&#10;&lt;li&gt;OpenAI wciąż na czele, ale chińskie DeepSeek, Qwen i Kimi doganiają w rozumowaniu i kodowaniu&lt;/li&gt;&#10;&lt;li&gt;44% firm w USA płaci za AI (vs 5% w 2023), średnia wartość kontraktu $530k&lt;/li&gt;&#10;&lt;li&gt;startupy AI-first rosną 1,5× szybciej&lt;/li&gt;&#10;&lt;li&gt;95% profesjonalistów używa AI w pracy lub domu, 76% płaci z własnej kieszeni, widoczne trwałe wzrosty produktywności&lt;/li&gt;&#10;&lt;li&gt;Debata o ryzyku ustępuje konkretnym pytaniom o niezawodność, cyberbezpieczeństwo i governance systemów autonomicznych&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Więcej w pełnym raporcie, szukaj w &lt;em&gt;#Ciekawostki&lt;/em&gt;.&#10;&lt;strong&gt;O skutecznym zarządzaniu celami w zespołach inżynieryjnych&lt;/strong&gt; - spostrzeżenia na podstawie ponad dekady doświadczeń w Google, Facebooku i Netflixie: sukces skalowania zespołów inżynieryjnych zależy przede wszystkim od strukturalnego wyznaczania celów. A najważniejsze lekcje dotyczące celów zależą od organizacji, przykładowo:&lt;/p&gt;</description></item><item><title>Nowy dział low code</title><link>https://blog.prokulski.science/2025/10/06/nowy-dzial-low-code/</link><pubDate>Mon, 06 Oct 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/10/06/nowy-dzial-low-code/</guid><description>&lt;p&gt;Kolejny tydzień, kolejna porcja wiedzy z szerokiego świata danych i AI. Jak zwasze przed Tobą materiały, które sprawdzą się zarówno w codziennej pracy, jak i przy zgłębianiu nowych technologii.&lt;/p&gt;&#10;&lt;p&gt;Jeśli zajmujesz się infrastrukturą i &lt;strong&gt;DevOps&lt;/strong&gt;, czekają na Ciebie praktyczne wzorce Dockerfile dla Pythona, które zredukują czas buildów do sekund, oraz dziewięć sprawdzonych technik autoskalowania w Kubernetes, które przetrwają piki ruchu. A dla fanów baz danych – przegląd rozszerzeń PostgreSQL, które działają jak supermoc, oraz porównanie architektur Snowflake, Oracle i PostgreSQL.&lt;/p&gt;</description></item><item><title>Nie tylko obraz tego, co się dzieje, ale jak to wykorzystać w praktyce</title><link>https://blog.prokulski.science/2025/09/29/nie-tylko-obraz-tego-co-sie-dzieje-ale-jak-to-wykorzystac-w-praktyce/</link><pubDate>Mon, 29 Sep 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/09/29/nie-tylko-obraz-tego-co-sie-dzieje-ale-jak-to-wykorzystac-w-praktyce/</guid><description>&lt;p&gt;Czy kiedykolwiek marzyłeś o tym, żeby skrócić generowanie raportu z 6 godzin do 15 minut? A może zastąpić tradycyjne procesy ETL jednym narzędziem, które działa nawet 100 razy szybciej niż Spark?&lt;/p&gt;&#10;&lt;p&gt;To nie science fiction – to rzeczywistość dzisiejszego numeru!&lt;/p&gt;&#10;&lt;p&gt;Od &lt;strong&gt;agentic AI&lt;/strong&gt;, które rewolucjonizuje kariery specjalistów IT, po konkretne implementacje MCP w firmach CRM – jak zwykle w tym newsletterze nie tylko obraz tego, co się dzieje, ale przede wszystkim &lt;strong&gt;jak to wykorzystać w praktyce&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Firmy uciekają od AI - czas na prawdziwą wiedzę! Praktyczne rozwiązania dla prawdziwych ludzi</title><link>https://blog.prokulski.science/2025/09/15/firmy-uciekaja-od-ai-czas-na-prawdziwa-wiedze-praktyczne-rozwiazania-dla-prawdziwych-ludzi/</link><pubDate>Mon, 15 Sep 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/09/15/firmy-uciekaja-od-ai-czas-na-prawdziwa-wiedze-praktyczne-rozwiazania-dla-prawdziwych-ludzi/</guid><description>&lt;p&gt;Dzisiejszy numer newslettera przynosi zwyczajowy mix technologii i trendów, które kształtują obecny krajobraz danych i AI. Zaczynamy od zaskakującego zwrotu w podejściu do sztucznej inteligencji: coraz więcej firm odwraca się od kosztownych wdrożeń AI, stawiając ponownie na kompetencje ludzkie. To doskonały moment na refleksję nad tym, gdzie AI rzeczywiście przynosi wartość.&lt;/p&gt;&#10;&lt;p&gt;W tym numerze znajdziesz praktyczne rozwiązania, które możesz wdrożyć już dziś. Dowiesz się, jak zespół obniżył koszty bazy danych z 10 tysięcy do 500 dolarów miesięcznie, poznasz siedem trików przyspieszających walidację Pydantic dwukrotnie, a także odkryjesz ukryte możliwości context managerów w Pythonie, które wykraczają daleko poza klasyczne &amp;ldquo;with open()&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Sporo Streamlit i tutoriali budowania Agnetów AI</title><link>https://blog.prokulski.science/2025/09/08/sporo-streamlit-i-tutoriali-budowania-agnetow-ai-newsletter-dane-i-analizy--y-m-d/</link><pubDate>Mon, 08 Sep 2025 15:00:00 +0000</pubDate><guid>https://blog.prokulski.science/2025/09/08/sporo-streamlit-i-tutoriali-budowania-agnetow-ai-newsletter-dane-i-analizy--y-m-d/</guid><description>&lt;p&gt;Gdy jedni wciąż zastanawiają się, czy warto eksperymentować z agentami AI, inni już budują kompletne systemy analityczne z Pydantic-AI i Streamlit. Gdy niektóre zespoły mierzą się z podstawową konfiguracją Kafki, inne optymalizują przepustowość na poziomie miliona wiadomości na sekundę. Między innymi o tym dzisiaj.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Rewolucja agentów AI&lt;/strong&gt; - od zera do działającego agenta z LangGraph, plus praktyczne połączenie Streamlit z Pydantic-AI do analizy danych. To nie są już tylko proof-of-concept, to konkretne narzędzia robocze.&lt;/p&gt;</description></item><item><title>Hyperopt i szukanie najlepszego parametru</title><link>https://blog.prokulski.science/2020/12/23/hyperopt-scikit-learn/</link><pubDate>Wed, 23 Dec 2020 15:04:21 +0000</pubDate><guid>https://blog.prokulski.science/2020/12/23/hyperopt-scikit-learn/</guid><description>&lt;p&gt;Kontynuując cykl o Pipelines w SciKit-Learn zajmiemy się tematem &lt;em&gt;kręcenia śrubkami&lt;/em&gt; w modelach w poszukiwaniu najlepszego wyniku. Użyjemy do tego pakietu hyperopt.&lt;/p&gt;&#10;&lt;p&gt;W poprzednich częściach &lt;a href="../../2020/10/10/pipeline-w-scikit-learn/"&gt;poznawaliśmy co to &amp;ldquo;pipeline&amp;rdquo; w SciKit-Learn&lt;/a&gt;, &lt;a href="../../2020/11/05/pipeline-w-scikit-learn-wlasny-estymator/"&gt;tworzyliśmy własne estymatory&lt;/a&gt; (przy okazji ucząc się trochę o programowaniu obiektowym, klasach i dziedziczeniu - nawet jeśli to było nieświadome). Dzisiaj ostatnia część z cyklu - kręcenie śrubkami zwanymi hyperparametrami.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../downloads/2020/12/srubki-300x200.jpg" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;Ostatnio przeszukiwaliśmy siatkę hyperparametrów (wszystkie możliwe kombinacje) przy użyciu wbudowanych w SciKit-Learn mechanizmów (na przykład GridSearchCV). Dzisiaj poszukamy innej metody, innego pakietu. A będzie nim &lt;code&gt;hyperopt&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Pipeline w SciKit Learn - własny estymator</title><link>https://blog.prokulski.science/2020/11/05/pipeline-w-scikit-learn-wlasny-estymator/</link><pubDate>Thu, 05 Nov 2020 15:32:20 +0000</pubDate><guid>https://blog.prokulski.science/2020/11/05/pipeline-w-scikit-learn-wlasny-estymator/</guid><description>&lt;p&gt;Dzisiaj napiszemy własny (a raczej poznamy mechanikę działania) oraz nauczymy się szukać najlepszych hyper parametrów dla modelu (właściwie: całego pipeline) w zwarty sposób.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="../../2020/10/10/pipeline-w-scikit-learn/"&gt;W pierszej części&lt;/a&gt; zobaczyliśmy jak zbudować &lt;em&gt;pipeline&lt;/em&gt; dla danych i modeli. Dzięki temu dostaliśmy możliwość zmiany sposobu transformacji danych i zmiany modeli w ramach prostego, zwartego kodu. Ale co jeśli potrzebujemy jakiś &lt;em&gt;transformator&lt;/em&gt; którego nie ma w pakietach?&lt;/p&gt;&#10;&lt;p&gt;Tak jak poprzednio - nasze działania oprzemy na Pythonie i pakiecie scikit learn. Podobne rozwiązania można znaleźć w R (jeśli tego szukasz - zainteresuj się &lt;a href="https://www.tidymodels.org/"&gt;Tidymodels&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Pipeline w SciKit Learn</title><link>https://blog.prokulski.science/2020/10/10/pipeline-w-scikit-learn/</link><pubDate>Sat, 10 Oct 2020 11:21:01 +0000</pubDate><guid>https://blog.prokulski.science/2020/10/10/pipeline-w-scikit-learn/</guid><description>&lt;p&gt;Co to są &lt;em&gt;pipelines&lt;/em&gt; w sci-kit learn i jak je wykorzystać? Czyli &lt;strong&gt;bardziej efektywne szukanie najlepszego modelu&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../downloads/2020/10/jj-ying-4XvAZN8_WHo-unsplash.jpg" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@jjying"&gt;JJ Ying&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/pipeline"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Jeśli zajmujesz się tworzeniem modeli na przykład klasyfikujących jakieś dane to pewnie wielokrotnie powtarzasz te same kroki:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;wczytanie danych&lt;/li&gt;&#10;&lt;li&gt;oczyszczenie danych&lt;/li&gt;&#10;&lt;li&gt;uzupełnienie braków&lt;/li&gt;&#10;&lt;li&gt;przygotowanie dodatkowych cech (&lt;em&gt;feature engineering&lt;/em&gt;)&lt;/li&gt;&#10;&lt;li&gt;podział danych na treningowe i testowe&lt;/li&gt;&#10;&lt;li&gt;dobór hyperparametrów modelu&lt;/li&gt;&#10;&lt;li&gt;trenowanie modelu&lt;/li&gt;&#10;&lt;li&gt;testowanie modelu (sprawdzenie skuteczności działania)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I tak w kółko, z każdym nowy modelem.&lt;/p&gt;</description></item><item><title>Data Science Summit 2020</title><link>https://blog.prokulski.science/2020/09/18/dssconf-2020/</link><pubDate>Fri, 18 Sep 2020 11:48:55 +0000</pubDate><guid>https://blog.prokulski.science/2020/09/18/dssconf-2020/</guid><description>&lt;p&gt;16 października (piątek), odbędzie się IV edycja konferencji Data Science Summit&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://DSSconf.pl"&gt;&lt;img src="../../downloads/2020/09/DSS20_1200x628-1024x536.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Post to informacja prasowa, a niniejszy blog oraz fanpage &lt;a href="https://www.facebook.com/DaneAnalizy/"&gt;Dane i Analizy&lt;/a&gt; to patroni medialni konferencji.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;DSS to największe w Polsce wydarzenie o tematyce data science adresowane do wszystkich osób związanych lub zainteresowanych szybko rozwijającym się obszarem przetwarzania, analizy i wizualizacji danych oraz uczelnia maszynowego.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Data Science Summit 2020&lt;/strong&gt; to przede wszystkim ponad 12 równoległych ścieżek tematycznych i ponad 100 prezentacji prowadzonych przez najbardziej pożądanych ekspertów z Polski i zagranicy.&lt;/p&gt;</description></item><item><title>Promocja na książki</title><link>https://blog.prokulski.science/2020/07/11/promocja-na-ksiazki/</link><pubDate>Sat, 11 Jul 2020 10:03:15 +0000</pubDate><guid>https://blog.prokulski.science/2020/07/11/promocja-na-ksiazki/</guid><description>&lt;p&gt;Jeszcze tylko do poniedziałku 13.07 &lt;strong&gt;&lt;a href="https://helion.pl/page/14029A/promocja/8850"&gt;promka wakacyjna&lt;/a&gt;&lt;/strong&gt; w Helionie, łapcie póki są porządne rabaty!&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Deep learning z Kerasem w Pythonie, a konkretnie pozycja &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/delepy.htm"&gt;Deep Learning. Praca z językiem Python i biblioteką Keras&lt;/a&gt;&lt;/strong&gt; i wersja dla R: &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/delerk.htm"&gt;Deep Learning. Praca z językiem R i biblioteką Keras&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Ponoć najlepsza książka do nauki Pythona &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/autopy.htm"&gt;Automatyzacja nudnych zadań z Pythonem. Nauka programowania&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Oraz dla równowagi - najlepsza książka do nauki R: &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/jezrkv.htm"&gt;Język R. Kompletny zestaw narzędzi dla analityków danych&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Analiza danych to też SQL, zatem &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/pksql3.htm"&gt;Praktyczny kurs SQL&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Najlepszym środowiskiem do pracy jest mimo wszystko Linux - podstawy złapiesz dzięki &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/linkp5.htm"&gt;Linux. Komendy i polecenia&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Ale nie wszystko musisz mieć zainstalowane na jakimś serwerze - są rozwiązania kontenerowe, więc &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/docke2.htm"&gt;Docker. Praktyczne zastosowania&lt;/a&gt;&lt;/strong&gt; może okazać się dobrym pomysłem.&lt;/li&gt;&#10;&lt;li&gt;Chyba, że wolisz pozostać w świecie Excela, wówczas przyda Ci się &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/e19bib.htm"&gt;Biblia Excela&lt;/a&gt;&lt;/strong&gt;. Sposobem na przejście do bardziej zaawansowanych technik jest Power Query, w korporacjach przyda się więc &lt;strong&gt;&lt;a href="https://helion.pl/view/14029A/poquex.htm"&gt;Power Query w Excelu i Power BI. Zbieranie i przekształcanie danych&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Więcej książek w ramach promocji znajdziecie &lt;a href="https://helion.pl/page/14029A/promocja/8850"&gt;na stronie&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Które API szybsze - w Pythonie czy w R?</title><link>https://blog.prokulski.science/2020/06/05/api-python-api-r/</link><pubDate>Fri, 05 Jun 2020 15:48:33 +0000</pubDate><guid>https://blog.prokulski.science/2020/06/05/api-python-api-r/</guid><description>&lt;p&gt;Wiele razy czytałem opinie, że Python jest szybszy a R nie nadaje się na produkcję. Ale to opinie nie potwierdzone badaniami. Tutaj pierwsze badania na ten temat!&lt;/p&gt;&#10;&lt;p&gt;Testom podlegać będzie API zbudowane w R z użyciem frameworków &lt;strong&gt;&lt;a href="https://www.rplumber.io/"&gt;Plumber&lt;/a&gt;&lt;/strong&gt; i &lt;strong&gt;&lt;a href="https://restrserve.org/"&gt;RestRserve&lt;/a&gt;&lt;/strong&gt; oraz w Pythonie z użyciem &lt;strong&gt;&lt;a href="https://palletsprojects.com/p/flask/"&gt;Flask&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Biorąc pod uwagę analizę danych i na przykład wnioskowanie czy predykcje oparte o te dane zarówno R jak i Python dobrze się sprawdzają. Mam nadzieję, że niejednokrotnie w ramach tego bloga pokazałem, że R jest idealny do analizy danych. A o Pythonie w tym samym kontekście pisze się wszędzie (i pewnie tutaj będzie też coraz więcej). Zatem czy warto wybierać pomiędzy tymi rozwiązaniami przy wdrożeniu na produkcję?&lt;/p&gt;</description></item><item><title>(py)Spark, Hadoop i HDFS - podstawy</title><link>https://blog.prokulski.science/2020/04/09/spark-hadoop-hdfs/</link><pubDate>Thu, 09 Apr 2020 19:06:13 +0000</pubDate><guid>https://blog.prokulski.science/2020/04/09/spark-hadoop-hdfs/</guid><description>&lt;p&gt;Dzisiaj zajmiemy się wykorzystaniem Sparka i Hadoopa do przetwarzania większej ilości danych. Oraz do budowania prostego modelu (regresji liniowej). Może jeszcze nie jest to big data, ale mechanizmy są identyczne jak w przypadku większej liczby danych. Wystarczy tylko tych danych więcej zgromadzić, zbudować większe środowisko (dużo serwerów) i… też będzie działało.&lt;/p&gt;&#10;&lt;p&gt;A w dodatku poznamy pakiet &lt;em&gt;faker&lt;/em&gt; który pozwoli nam na wygenerowanie sztucznych danych.&lt;/p&gt;&#10;&lt;h3 id="spark-i-hadoop"&gt;Spark i Hadoop&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Apache Spark&lt;/strong&gt; to rozwijana na zasadach open source platforma klastrowego przetwarzania danych, która ma interfejsy API dla takich języków programowania jak Scala, Python, Java i R.&lt;/p&gt;</description></item><item><title>Muzyka i data science</title><link>https://blog.prokulski.science/2020/03/24/muzyka-i-data-science/</link><pubDate>Tue, 24 Mar 2020 17:11:08 +0000</pubDate><guid>https://blog.prokulski.science/2020/03/24/muzyka-i-data-science/</guid><description>&lt;p&gt;Każdego dnia pojawia się nowa muzyka, w wielu różnych gatunkach. Jak wybrać to, czemu warto poświęcić czas?&lt;/p&gt;&#10;&lt;p&gt;Dodatkowo dowiemy się jakie znaczenie ma uczciwe przygotowanie danych.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../downloads/2020/03/franck-v-U3sOwViXhkY-unsplash-scaled.jpg" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;Zdjęcie na &lt;em&gt;okładce&lt;/em&gt;: &lt;a href="https://unsplash.com/@franckinjapan"&gt;Franck V. on Unsplash&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Gdybym miał powiedzieć co lubię najbardziej bez wątpienia byłaby to muzyka. Słucham dużo, nie wyobrażam sobie życia w ciszy. Ale mimo dostępu do nieskończonych (powiedzmy) zasobów muzycznych chociażby poprzez Spotify zauważyłem, że zamykam się w bańce już znanych wykonawców i utworów. A ja lubię odkrywać nowe dźwięki, tylko nie mam czasu (trochę też zbyt na to jestem leniwy) na szukanie nieznanych utworów czy wykonawców. Po co mam poświęcać kupę czasu na szukanie czegoś co mi się nie spodoba?&lt;/p&gt;</description></item><item><title>Mapy w Pythonie</title><link>https://blog.prokulski.science/2020/02/28/mapy-w-pythonie/</link><pubDate>Fri, 28 Feb 2020 15:07:09 +0000</pubDate><guid>https://blog.prokulski.science/2020/02/28/mapy-w-pythonie/</guid><description>&lt;p&gt;Jakiś czas temu pokazywałem jak w prosty sposób narysować mapę w R. Dzisiaj powtórzymy zadanie dla Pythona.&lt;/p&gt;&#10;&lt;p&gt;Skorzystamy z danych GUS na temat bezrobocia oraz liczby ludności (pomijając dokładność &lt;em&gt;złożenia&lt;/em&gt; danych - interesuje nas rysowanie map, a nie analiza bezrobocia) oraz map z Głównego Urzędu Geodezji i Kartografii.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Jeśli potrzebujesz podobnych informacji jak zrobić to wszysto w R sprawdź na początek wszystko co jest w ramach tagu &lt;a href="../../tags/mapa/"&gt;mapa&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h3 id="skąd-pobrać-dane"&gt;Skąd pobrać dane?&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Dane o liczbie ludności&lt;/strong&gt;: &lt;a href="https://bdl.stat.gov.pl/BDL/metadane/cechy/2137"&gt;Ludność / Stan ludności / Ludność wg grup wieku i płci&lt;/a&gt; w tzw. &lt;strong&gt;BDLu&lt;/strong&gt; (czyli Banku Danych Lokalnych GUS) - bierzemy dane z 2018 roku (najnowsze pełne jakie są); Wiek = ogółem, Płeć = ogółem; wszystkie jednostki terytorialne. W wyniku klikania dostaniemy się do tabeli, którą ściągamy lokalnie poprzez &lt;strong&gt;Export / CSV - tablica wielowymiarowa&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;Dokładnie tak samo pozyskujemy &lt;strong&gt;dane o liczbie bezrobotnych&lt;/strong&gt;: &lt;a href="https://bdl.stat.gov.pl/BDL/metadane/cechy/1944"&gt;Rynek pracy / Bezrobocie rejestrowane / Bezrobotni zarejestrowani wg płci w gminach&lt;/a&gt; (znowu: ogółem, 2019 rok, wszystkie jednostki; pobieramy plik CSV dokładnie tak samo jak wyżej).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Dane mapowe&lt;/strong&gt; bierzemy z &lt;a href="http://www.gugik.gov.pl/pzgik/dane-bez-oplat/dane-z-panstwowego-rejestru-granic-i-powierzchni-jednostek-podzialow-terytorialnych-kraju-prg"&gt;GUGiK&lt;/a&gt; - interesuje nas archiwum &lt;a href="ftp://91.223.135.109/prg/jednostki_administracyjne.zip"&gt;PRG – jednostki administracyjne&lt;/a&gt; (uwaga - to ma 375 MB!). To archiwum rozpakowujemy i (coś co ja robię, żeby później nie było problemów) zmieniamy nazwy plików tak, aby pozbyć się polskich znaków i wszystkie litery w nazwie były małe.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="przygotowanie-danych-z-gus"&gt;Przygotowanie danych z GUS&lt;/h3&gt;&#10;&lt;p&gt;Ale zanim - potrzebne nam będzie kilka pakietów Pythona do dalszej pracy:`&lt;/p&gt;</description></item><item><title>Montaż filmowy w Pythonie?</title><link>https://blog.prokulski.science/2020/01/28/montaz-filmowy-w-pythonie/</link><pubDate>Tue, 28 Jan 2020 13:56:30 +0000</pubDate><guid>https://blog.prokulski.science/2020/01/28/montaz-filmowy-w-pythonie/</guid><description>&lt;p&gt;Czy da się automatycznie rozdzielić film na poszczególne ujęcia?&lt;/p&gt;&#10;&lt;p&gt;Oczywiście da się. Ale jak do tego podejść?&lt;/p&gt;&#10;&lt;p&gt;Dzisiejszy wpis to swego rodzaju zapis sposobu rozwiązania problemu. Wielkiej sztuki programistycznej tutaj nie ma, ale (mam nadzieję) ciekawa jest droga przez całą analizę do uzyskania konkretnego efektu.&lt;/p&gt;&#10;&lt;p&gt;Obraz cyfrowy składa się z punktów (określonej ich liczbie - wysokość x szerokość) o różnej barwie. Barwę najczęściej opisują trzy składowe: czerwona, zielona i niebieska (RGB). Wideo to nic innego jak ciąg (kolejne klatki) takich statycznych obrazów.&lt;/p&gt;</description></item><item><title>Analiza własnych finansów</title><link>https://blog.prokulski.science/2019/12/13/analiza-wyciagow-z-karty-kredytowej/</link><pubDate>Fri, 13 Dec 2019 14:20:00 +0000</pubDate><guid>https://blog.prokulski.science/2019/12/13/analiza-wyciagow-z-karty-kredytowej/</guid><description>&lt;p&gt;Jak nauczyć się analizy danych? Robiąc małe i duże projekty.&lt;/p&gt;&#10;&lt;p&gt;Kiedyś napisałem post o &lt;a href="../../2017/04/14/csi-lemur/"&gt;tym jak się przemieszczam&lt;/a&gt; w którym odsłoniłem dość dużo swojej prywatności, dzisiaj ciąg dalszy.&lt;/p&gt;&#10;&lt;p&gt;Postanowiłem, że mocniej wezmę się za Pythona i to co potrafię dość szybko zrobić w R będę robił w Pythonie. To najlepszy sposób na naukę - zmuszać się w pewnym sensie do przełamywania własnych oporów. Z drugiej strony - od dawna chodził za mną tekst związany z analizą własnych wydatków.&lt;/p&gt;</description></item><item><title>Instagram - zbieranie danych i bot</title><link>https://blog.prokulski.science/2019/03/27/instagram-w-r/</link><pubDate>Wed, 27 Mar 2019 14:28:51 +0000</pubDate><guid>https://blog.prokulski.science/2019/03/27/instagram-w-r/</guid><description>&lt;p&gt;Konto na Instagramie mam od kwietnia 2012 roku, ale nie zajmuje on mojego czasu (nie zaglądam tam wcale). Kiedyś chciałem sprawdzić czy zdjęcia z tagu #warszawa są zrobione w Warszawie, ale nie sprawdziłem… Do dzisiaj.&lt;/p&gt;&#10;&lt;p&gt;Tekst &lt;strong&gt;&lt;a href="https://medium.com/@chrisbuetti/how-i-eat-for-free-in-nyc-using-python-automation-artificial-intelligence-and-instagram-a5ed8a1e2a10"&gt;How I Eat For Free in NYC Using Python, Automation, Artificial Intelligence, and Instagram&lt;/a&gt;&lt;/strong&gt; który robi furorę w ostatnich dniach sprawił, że wreszcie ruszyłem tyłek i zająłem się tematem. Kilka miesięcy temu widziałem tutorial &lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=BGU2X5lrz9M"&gt;How to Get Instagram Followers/Likes Using Python&lt;/a&gt;&lt;/strong&gt;, dzisiaj spróbujemy w R.&lt;/p&gt;</description></item><item><title>Najpopularniejsze imiona dzieci nadane w 2018 roku</title><link>https://blog.prokulski.science/2019/03/05/najpopularniejsze-imiona-dzieci-nadane-w-2018-roku/</link><pubDate>Tue, 05 Mar 2019 16:07:11 +0000</pubDate><guid>https://blog.prokulski.science/2019/03/05/najpopularniejsze-imiona-dzieci-nadane-w-2018-roku/</guid><description>&lt;p&gt;Niedawno Ministerstwo Cyfryzacji opublikowało &lt;a href="https://www.gov.pl/web/cyfryzacja/imiona"&gt;listę najpopularniejszych imion&lt;/a&gt; nadawanych dzieciom w 2018 roku. Wykorzystamy to do połączenia Pythona z R (albo R z Pythonem).&lt;/p&gt;&#10;&lt;p&gt;Lista opublikowana została w postaci serii tekstów na stronach Ministerstwa, w formie całkowicie niezjadliwej. Co więcej - prasa podała informacje dalej, bez żadnego obrobienia tych danych. Zróbmy to więc jak należy przy okazji łącząc R i Pythona.&lt;/p&gt;&#10;&lt;p&gt;Aby móc w RStudio używać Pythona oraz mieć dostęp do obiektów Pythona w sesji R potrzebujemy biblioteki &lt;em&gt;&lt;a href="https://rstudio.github.io/reticulate/"&gt;reticulate&lt;/a&gt;&lt;/em&gt; - polecam się z nią zapoznać. Daje ciekawe możliwości, które właśnie za chwilę zobaczymy na konkretnym przykładzie.&lt;/p&gt;</description></item><item><title>Google Analytics w R</title><link>https://blog.prokulski.science/2018/09/26/google-analytics-w-r/</link><pubDate>Wed, 26 Sep 2018 16:16:34 +0000</pubDate><guid>https://blog.prokulski.science/2018/09/26/google-analytics-w-r/</guid><description>&lt;p&gt;Google Analytics to chyba najpopularniejszy sposób mierzenia ruchu na stronach internetowych. Można bardzo dużo &lt;em&gt;wyklikać&lt;/em&gt; w panelu, ale może zaistnieć potrzeba pobrania danych statystycznych do analiz, których GA nie daje. Dzisiaj dowiesz się jak zrobić to w języku R.&#10;Jak większość zadań, tak samo i to ma pomocny pakiet. Jak można się podziewać pakiet nazywa się &lt;strong&gt;&lt;a href="https://github.com/Tatvic/RGoogleAnalytics"&gt;RGoogleAnalytics&lt;/a&gt;&lt;/strong&gt; i dostępny jest poprzez instalację z GitHuba:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;devtools&lt;span style="color:#0550ae"&gt;::&lt;/span&gt;&lt;span style="color:#6639ba"&gt;install_github&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;Tatvic/RGoogleAnalytics&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Załadujmy więc go do R (razem z innymi pakietami) i do dzieła:&lt;/p&gt;</description></item><item><title>Kto pisze teksty przemówień prezydenta Dudy?</title><link>https://blog.prokulski.science/2018/09/20/kto-pisze-teksty-prezydenta-dudy/</link><pubDate>Thu, 20 Sep 2018 16:13:07 +0000</pubDate><guid>https://blog.prokulski.science/2018/09/20/kto-pisze-teksty-prezydenta-dudy/</guid><description>&lt;p&gt;Pytanie tytułowe jest nieco przewrotne. Sprawdzimy czy wystąpienia są do siebie podobne, a przede wszystkim dowiemy się jak to zrobić. Nazwisk autorów wystąpień nie podam…&#10;Niniejszy tekst to fragment (ale rozbudowany i zmodyfikowany) &lt;a href="https://mlforum.pl/agenda/#wyklad07"&gt;mojej prezentacji&lt;/a&gt; z konferencji “Machine Learning @ Enterprise”. Całość prezentacji z odpowiednimi skryptami znajdziecie &lt;a href="https://github.com/prokulski/ML_Forum"&gt;na GitHubie&lt;/a&gt;.&#10;Dzisiaj skorzystamy z bibliotek:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;tidyverse&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# wykresy i manipulacja danymi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;data.table&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# dla fread - szybkie wczytywanie plików CSV&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;lsa&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# dla cosine()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;Rtsne&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# implementacja t-SNE w R&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;plotly&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# interaktywne wykresy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;tidytext&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# do manipulacji tekstem&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;wordcloud&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# chmurki słów&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;lubridate&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# manipulacja datami&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;rvest&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# do pobierania danych z www&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;glue&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# wygodne sklejanie ciągów znaków&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;W pierwszym kroku potrzebujemy &lt;strong&gt;wypowiedzi Andrzeja Dudy&lt;/strong&gt;. Na szczęście wszystko jest podane na tacy na &lt;a href="http://www.prezydent.pl/aktualnosci/wypowiedzi-prezydenta-rp/wystapienia/"&gt;oficjalnej stronie prezydenta&lt;/a&gt;, a jedyne czego potrzebujemy to wyłuskać teksty. Do tego celu przygotujemy kawałek kodu:&lt;/p&gt;</description></item><item><title>Shiny - punkty z mapki</title><link>https://blog.prokulski.science/2018/07/05/shiny-punkty-z-mapki/</link><pubDate>Thu, 05 Jul 2018 10:41:45 +0000</pubDate><guid>https://blog.prokulski.science/2018/07/05/shiny-punkty-z-mapki/</guid><description>&lt;p&gt;Jak pobrać współrzędne punktu wskazanego na mapie?&#10;Czasem istnieje potrzeba, aby w aplikacji (napisanej w Shiny) użytkownik wskazał jakąś lokalizację na mapie. Jak to zrobić?&#10;Bardzo szybki wpis, który rozwiązuje konkretny problem. Ot - takie StackOverflow ;).&#10;Trzeba narysować mapę - do map interaktywnych bardzo wygodny jest pakiet &lt;em&gt;leaflet&lt;/em&gt;, który opakowuje nam bibliotekę &lt;strong&gt;&lt;a href="https://leafletjs.com/"&gt;Leaflet&lt;/a&gt;&lt;/strong&gt; napisaną w Java Script. Przy okazji: podobnie robi &lt;em&gt;plotly&lt;/em&gt; - obie ta biblioteki są proste w użyciu, a dają bardzo atrakcyjne efekty w postaci interaktywnych map czy wykresów.&#10;Po narysowaniu mapy ustawiamy marker na jej środku i dostosowujemy widoczny obszar.&#10;Pozostaje tylko czekać na &lt;em&gt;event&lt;/em&gt; (zdarzenie) z Shiny. Nasza aplikacja zareaguje na zdarzenie w obiekcie mapy. Odpowiednie zmienne zawierają współrzędne klikniętego punktu. Teraz wystarczy usunąć wszystkie dodane &lt;em&gt;markery&lt;/em&gt; i na nowo dodać jednej w klikniętym miejscu. Dodatkowo w poniższym kodzie wypisujemy współrzędne klikniętego punktu.&lt;/p&gt;</description></item><item><title>Stawiamy własny serwer</title><link>https://blog.prokulski.science/2018/06/14/serwer-vps-dla-r-python/</link><pubDate>Thu, 14 Jun 2018 11:29:30 +0000</pubDate><guid>https://blog.prokulski.science/2018/06/14/serwer-vps-dla-r-python/</guid><description>&lt;p&gt;Budujemy własny serwer do programowania w R i Pythonie, razem z serwerem WWW, PHP oraz bazami danych MySQL i PostgreSQL.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#opis-srodowiska"&gt;Opis środowiska&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#zakupy"&gt;Zakupy&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#konfigurujemy-vpsa"&gt;Konfigurujemy VPSa&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#r-rstudio-i-shiny"&gt;R, RStudio i Shiny&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#python-i-jupyter"&gt;Python i Jupyter&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#subdomeny-konfiguracja"&gt;Subdomeny - konfiguracja&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#dodatki"&gt;Dodatki&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#koniec"&gt;Koniec&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Tym razem więcej administrowana serwerami, a mniej programowania i analizowania danych. Zbudujemy własny serwer do programowania w R i Pythonie, razem z serwerem WWW (aby móc prezentować wynik swoich prac).&lt;/p&gt;&#10;&lt;h3 id="opis-środowiska"&gt;Opis środowiska&lt;/h3&gt;&#10;&lt;p&gt;W niniejszym wpisie przygotujemy serwer zbudowany na linuxie w dystrybucji &lt;strong&gt;Ubuntu&lt;/strong&gt; z działającym na nim (i dostępnym przez przeglądarkę z dowolnego miejsca z internetem) &lt;strong&gt;RStudio&lt;/strong&gt;. Serwer pozwoli nam też na budowanie i publikowanie aplikacji napisanych w &lt;strong&gt;Shiny&lt;/strong&gt;. Przy okazji zainstalujemy &lt;strong&gt;Python&lt;/strong&gt;a razem z &lt;strong&gt;Jupyter Notebook&lt;/strong&gt; (oraz &lt;strong&gt;JupyterLab&lt;/strong&gt;) do wygodnej pracy. Całości dopełni baza danych &lt;strong&gt;PostgreSQL&lt;/strong&gt;. Aby móc publikować swoje dzieła w formie bloga zainstalujemy &lt;strong&gt;PHP&lt;/strong&gt; oraz bazy &lt;strong&gt;MySQL&lt;/strong&gt; - być może zechcesz zainstalować WordPressa, a on tego wymaga.&#10;&lt;strong&gt;Do czego taka maszyna może się przydać?&lt;/strong&gt; W zależności od wydajności:&lt;/p&gt;</description></item><item><title>Webscrapping w R</title><link>https://blog.prokulski.science/2018/06/05/webscrapping-w-r/</link><pubDate>Tue, 05 Jun 2018 16:26:22 +0000</pubDate><guid>https://blog.prokulski.science/2018/06/05/webscrapping-w-r/</guid><description>&lt;p&gt;W dzisiejszym wpisie nieco bardziej techniczne sprawy, ale bardzo cenne dla osób, które przy pomocy R chcą pobierać dane ze stron WWW.&#10;Przedstawię trzy narzędzia, które w tym pomogą. Dwa pomogą na pewno, trzecie to bardziej ciekawostka do robienia screen shotów.&lt;/p&gt;&#10;&lt;h3 id="jak-dobrać-się-do-tabelki-na-stronie"&gt;Jak dobrać się do tabelki na stronie?&lt;/h3&gt;&#10;&lt;p&gt;Często jakieś dane, które nas interesują są opublikowane na stronach WWW. Można je przepisać ręcznie, można je wciągnąć do Excela (jest odpowiedni, w miarę intuicyjny importer tabelek dostępny pod guzikiem &lt;em&gt;Z sieci Web&lt;/em&gt; w menu Dane). Ale nas interesuje oczywiście w R (i Python, ale to nie w tym odcinku).&#10;W dzisiejszych zajęciach przydadzą nam się biblioteki:&lt;/p&gt;</description></item><item><title>R-base, R-dplyr, R-data.table i Python</title><link>https://blog.prokulski.science/2018/05/23/r-i-python/</link><pubDate>Wed, 23 May 2018 15:44:07 +0000</pubDate><guid>https://blog.prokulski.science/2018/05/23/r-i-python/</guid><description>&lt;p&gt;Podstawy manipulacji danymi w tabelkach. W R (trzy wersje) oraz w Pythonie. Bo to pierwszy post z cyklu &lt;em&gt;idziemy w stronę Pythona&lt;/em&gt;.&#10;W dzisiejszym wpisie zajmiemy się podstawowymi operacjami na tabelach (data frame) z danymi. &lt;strong&gt;Dlaczego to jest ważne?&lt;/strong&gt; Są to najczęściej wykonywane operacje w trakcie analizy danych, bo przecież:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;dane trzeba wczytać &lt;em&gt;do komputera&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;czasem zmodyfikować, na przykład policzyć wartość na podstawie dwóch lub więcej kolumn&lt;/li&gt;&#10;&lt;li&gt;wybrać określone wiersze lub określone kolumny&lt;/li&gt;&#10;&lt;li&gt;połączyć jedną tabelę z inną&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Z tak przygotowanych danych można później na przykład narysować wykres czy też wrzucić je do modelu. I to jest wystarczające, na co dowodem jest pewnie z 70% moich wpisów z ostatnich 12 miesięcy (albo i więcej). Kolejne 20% wpisów to sposób pozyskania danych. 10% było pewnie o modelach wszelakich.&#10;Osobiście uważam, że w R nauczyłem się na tyle dużo, aby przejść na kolejny poziom. W pracy są to aplikacje w Shiny czy też panele w wykorzystaniem &lt;em&gt;flexdashboard&lt;/em&gt; (znowu: w obu przypadkach 70% pracy to manipulacja danymi w tabelkach), ale ciągnie mnie do Pythona. Gdybym zaczynał przygodę z machine learning czy data science to wybrałbym Pythona. Jednocześnie mam nadzieję, że dla osób znających jeden z języków niniejszy wpis będzie ciekawym wprowadzeniem w drugi język.&#10;Jeśli chodzi o R to zobaczymy jak wykonać podstawowe operacje wykorzystując standardowe możliwości R (R-base), wykorzystując pakiety &lt;em&gt;dplyr&lt;/em&gt; (wchodzący w skład ekosystemu &lt;em&gt;tidyverse&lt;/em&gt;) oraz &lt;em&gt;data.table&lt;/em&gt;. W przykładach dla Pythona będzie to &lt;em&gt;pandas&lt;/em&gt;.&#10;Dlaczego data.table? &lt;a href="https://github.com/Rdatatable/data.table/wiki/Benchmarks-%3A-Grouping"&gt;Porównanie prędkości&lt;/a&gt; pokazuje, że dla bardzo dużych tabel data.table jest najszybszy.&#10;Zaczniemy od wczytania odpowiednich bibliotek. W R oczywiście:&lt;/p&gt;</description></item><item><title>Przewidywanie pogody</title><link>https://blog.prokulski.science/2018/04/12/przewidywanie-pogody/</link><pubDate>Thu, 12 Apr 2018 08:42:57 +0000</pubDate><guid>https://blog.prokulski.science/2018/04/12/przewidywanie-pogody/</guid><description>&lt;p&gt;W &lt;a href="../../2018/03/27/lato-bylo-cieplejsze/"&gt;poprzednim odcinku&lt;/a&gt; zebraliśmy dane o pogodzie w Polsce od 1951 roku. Dzisiaj przygotujemy prognozę pogody. Ale przede wszystkim nauczymy się weryfikować modele.&#10;Mając zgromadzone dane o pogodzie z ponad 60 lat (1951-2017) możemy pokusić się o prognozowanie temperatury w przyszłości. Wykorzystamy trzy (właściwie dwa) modele dostępne &lt;em&gt;od ręki&lt;/em&gt; w popularnych bibliotekach R oraz zaprzęgniemy do prognozowania sieć neuronową.&#10;Zaczniemy od potrzebnych bibliotek:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;tidyverse&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;lubridate&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;DBI&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# pobieranie danych z bazy SQLite&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;forecast&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# na potrzeby modeli ARIMA i ETS/STLF&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;keras&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# na potrzeby LSTM w TensorFlow&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;corrgram&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;# wykres korelacji&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Na początek pobieramy dane o średniej dziennej temperaturze wszystkich stacji w latach 2000-2016. Te dane potraktujemy jako dane treningowe. Dane z 2017 roku potraktujemy jako testowe.&lt;/p&gt;</description></item><item><title>LSTM - przewidywanie tekstu (sieci neuronowe, część 4)</title><link>https://blog.prokulski.science/2018/03/05/lstm-przewidywanie-tekstu-keras-r/</link><pubDate>Mon, 05 Mar 2018 12:52:35 +0000</pubDate><guid>https://blog.prokulski.science/2018/03/05/lstm-przewidywanie-tekstu-keras-r/</guid><description>&lt;p&gt;Czy da się napisać tekst za pomocą sieci neuronowych?&#10;Skorzystamy (podobnie jak w przypadku sieci CNN w poprzednich częściach) z TensorFlow opakowanego w Keras. Załadujmy wiec potrzebne pakiety i ustalmy kilka stałych dla kolejnych elementów kodu:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;tidyverse&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;keras&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;stringr&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;tokenizers&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;## stałe&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# tekst źródłowy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;book_path &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Mroz-Kasacja.txt&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# sterowanie poniższymi parametrami może poprawić model (im więcej tym lepiej),&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# na pewno ma wpływ na zapotrzebowanie na pamięć i czas&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# parametry zbioru treningowego&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;maxlen &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#0550ae"&gt;30&lt;/span&gt; &lt;span style="color:#57606a"&gt;# wielkość okna&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;max_lines &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#0550ae"&gt;2000&lt;/span&gt; &lt;span style="color:#57606a"&gt;# ile linii tekstu bierzemy do treningu?&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# parametry sieci&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# co najmniej 20 epochów daje sensowne wyniki&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EPOCHS &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#0550ae"&gt;20&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# liczba neuronów w sieci LSTM - co najmniej 128 daje fajne wyniki, 256 jeszcze fajniejsze&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lstm_neurons &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#0550ae"&gt;128&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Za dane treningowe posłuży nam tekst jednej z książek Remigiusza Mroza o Chyłce i Zordonie (o poprzedniego wpisu gdzie &lt;a href="../../2017/06/30/kto-napisal-te-ksiazke/"&gt;analizowałem te książki&lt;/a&gt; zdążyłem przeczytać wszystkie części, a już za chwile kolejna część :) - &lt;em&gt;Kasacja&lt;/em&gt;. Aby przyspieszyć cały proces wybierzemy tylko cześć tekstu (&lt;code&gt;max_lines&lt;/code&gt; powyżej), co jednocześnie pozwoli na ograniczenie potrzebnej ilości pamięci.&lt;/p&gt;</description></item><item><title>MNIST dataset – sieci neuronowe, część 3 (sieć CNN)</title><link>https://blog.prokulski.science/2018/02/20/mnist-dataset-sieci-neuronowe-czesc-3-siec-cnn-w-r/</link><pubDate>Tue, 20 Feb 2018 11:19:42 +0000</pubDate><guid>https://blog.prokulski.science/2018/02/20/mnist-dataset-sieci-neuronowe-czesc-3-siec-cnn-w-r/</guid><description>&lt;p&gt;Ciąg dalszy rozpoznawania pisanych ręcznie liczb. Potraktujemy obrazki jak obrazki (a nie jak wektory).&#10;Dla przypomnienia:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;w &lt;a href="../../2018/01/16/mnist-dataset-sieci-neuronowe-czesc-0/"&gt;zerowej części&lt;/a&gt; przygotowaliśmy zbiór danych (aby finalnie korzystać i tak z tego z Kaggle ;) i zobaczyliśmy jak wyglądają przykładowe liczby&lt;/li&gt;&#10;&lt;li&gt;w &lt;a href="../../2018/02/01/mnist-dataset-sieci-neuronowe-czesc-1/"&gt;części pierwszej&lt;/a&gt; przygotowaliśmy modele w oparciu o &lt;code&gt;XGBoost&lt;/code&gt; (najlepszy osiągnięty wynik to 87.1% trafności przewidywań) oraz o prostą sieć neuronową (FF, feed-forward) z wykorzystaniem pakietu &lt;code&gt;nnet&lt;/code&gt; (najlepszy wyniki to 71.7%, ale liczone to było na fragmencie danych)&lt;/li&gt;&#10;&lt;li&gt;w &lt;a href="../../2018/02/13/mnist-dataset-sieci-neuronowe-czesc-2-keras-w-r/"&gt;części drugiej&lt;/a&gt; zainstalowaliśmy bibliotekę &lt;code&gt;Keras&lt;/code&gt; wraz z back-endem w postaci &lt;code&gt;tensorflow&lt;/code&gt;, poznaliśmy znaczenie współczynników &lt;em&gt;loss&lt;/em&gt;, &lt;em&gt;val_loss&lt;/em&gt;, &lt;em&gt;acc&lt;/em&gt; oraz &lt;em&gt;val_acc&lt;/em&gt; oraz przygotowaliśmy kilka modelów, z których najlepszy dał wynik około 97% poprawności rozpoznania liczb. Zrozumieliśmy (mam nadzieję) również logikę stojącą za budowaniem architektury sieci polegającą na składaniu kolejnych warstw jedna za drugą. Zobaczyliśmy również skąd mogą wynikać błędy klasyfikacji (te różne rodzaje czwórek rozpoznane jako dziewiątki na końcu tekstu)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;W ostatniej dotychczas części cyklu traktowaliśmy dane o każdej z liczb w zbiorze uczącym jako &lt;strong&gt;wektor&lt;/strong&gt; (czyli ciąg 784 liczb). Dzisiaj każdą liczbę potraktujemy &lt;em&gt;poprawnie&lt;/em&gt; - jako &lt;strong&gt;obraz&lt;/strong&gt;.&#10;Zaczniemy od wczytania pakietów oraz danych:&lt;/p&gt;</description></item><item><title>MNIST dataset – sieci neuronowe, część 2 (Keras)</title><link>https://blog.prokulski.science/2018/02/13/mnist-dataset-sieci-neuronowe-czesc-2-keras-w-r/</link><pubDate>Tue, 13 Feb 2018 10:34:35 +0000</pubDate><guid>https://blog.prokulski.science/2018/02/13/mnist-dataset-sieci-neuronowe-czesc-2-keras-w-r/</guid><description>&lt;p&gt;Tym razem przygotujemy środowisko do pracy z Keras i rozpoznamy kilka liczb (ponownie jak poprzednio).&lt;/p&gt;&#10;&lt;h3 id="instalacja-keras"&gt;Instalacja Keras&lt;/h3&gt;&#10;&lt;p&gt;Zaczniemy od instalacji. Potrzebujemy zainstalowanego Pythona na maszynie. W unixach (w tym odcinku korzystam z serwera EC2 w AWS) nie jest to problem, pod Windowsem można zainstalować go na przykład instalując &lt;a href="https://www.anaconda.com/"&gt;Anacondę&lt;/a&gt;.&#10;Kolejny krok to przygotowanie R do pracy z Keras. Najpierw instalujemy bibliotekę &lt;code&gt;keras&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;install.packages&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;keras&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;a następnie sam silnik:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;keras&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;install_keras&lt;/span&gt;&lt;span style="color:#1f2328"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ta ostatnia funkcja ma trochę parametrów - między innymi odpowiedzialnych z zainstalowanie TensorFlow skompilowanego pod korzystanie z GPU (wykorzystanie kart graficznych do obliczeń - znacznie przyspiesza to cały proces, ale potrzebny jest stosowny sprzęt). Odpowiedni ich opis znajdziecie &lt;a href="https://keras.rstudio.com/reference/install_keras.html"&gt;w dokumentacji&lt;/a&gt;. Szczegółową dokumentację Keras znajdziecie na stronie &lt;a href="https://keras.io/"&gt;Keras.io&lt;/a&gt;.&#10;Proces instalacji nieco trwa za pierwszym razem, później jest już z górki. Przy instalacji na Windowsie może się coś pogryźć w Anacondzie (mi powstało drugie środowisko i trochę z tym trzeba powalczyć). Na maszynie EC2 (szczególnie t2.micro) może być okazać, że zabraknie pamięci (tak się stało dla sieci opisywanych poniżej). Rozwiązaniem jest zwiększenie wielkości tzw. &lt;em&gt;swapu&lt;/em&gt; czyli wirtualnej pamięci, która tak na prawdę jest miejscem na dysku. Znalazłem &lt;a href="https://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance"&gt;odpowiednie obejście&lt;/a&gt; na niezastąpionym Stackoverflow. Stosujemy więc zwiększenie swapu, po resecie maszyny wszystko wraca do normy (chyba, że potrzebujemy pozostać przy powiększonym miejscu - odpowiednia zmiana opisana jest też na SO).&lt;/p&gt;</description></item><item><title>MNIST dataset – sieci neuronowe, część 1 (xgboost i nnet)</title><link>https://blog.prokulski.science/2018/02/01/mnist-dataset-sieci-neuronowe-czesc-1/</link><pubDate>Thu, 01 Feb 2018 11:30:10 +0000</pubDate><guid>https://blog.prokulski.science/2018/02/01/mnist-dataset-sieci-neuronowe-czesc-1/</guid><description>&lt;p&gt;Budujemy pierwszą sieć neuronową oraz porównujemy jej wyniki z XGBoost.&#10;W &lt;a href="../../2018/01/16/mnist-dataset-sieci-neuronowe-czesc-0/"&gt;pierwszej części&lt;/a&gt; przygotowaliśmy dane, a i tak będziemy korzystać z &lt;a href="https://www.kaggle.com/c/digit-recognizer/data"&gt;gotowych z Kaggle.com&lt;/a&gt;.&#10;Zanim wkroczymy w sieci neuronowe zobaczmy dla przypomnienia jaki mamy rozkład liczb (ile jest jakich)?&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;library&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;tidyverse&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# wczytujemy zestaw danych&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;data &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#6639ba"&gt;read_csv&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;data/train.csv&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;data &lt;span style="color:#0550ae"&gt;%&amp;gt;%&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6639ba"&gt;count&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;label&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;%&amp;gt;%&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6639ba"&gt;ggplot&lt;/span&gt;&lt;span style="color:#1f2328"&gt;()&lt;/span&gt; &lt;span style="color:#0550ae"&gt;+&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6639ba"&gt;geom_col&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#6639ba"&gt;aes&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#6639ba"&gt;as.factor&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;label&lt;span style="color:#1f2328"&gt;),&lt;/span&gt; n&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; fill &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#6639ba"&gt;as.factor&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;n&lt;span style="color:#1f2328"&gt;)),&lt;/span&gt; color &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;gray50&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; show.legend &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#cf222e"&gt;FALSE&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;+&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6639ba"&gt;labs&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;x &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Liczba&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; y &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Liczba obrazków&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="../../downloads/2018/02/nnet_01-1.png" alt=""&gt;&#10;Żeby całość działa się szybciej i potrzebowała mniej pamięci wybierzemy po 250 próbek dla każdej liczby:&lt;/p&gt;</description></item><item><title>MNIST dataset - sieci neuronowe, część 0 (przygotowanie)</title><link>https://blog.prokulski.science/2018/01/16/mnist-dataset-sieci-neuronowe-czesc-0/</link><pubDate>Tue, 16 Jan 2018 15:24:16 +0000</pubDate><guid>https://blog.prokulski.science/2018/01/16/mnist-dataset-sieci-neuronowe-czesc-0/</guid><description>&lt;p&gt;Zaczynamy cykl związany z sieciami neuronowymi. Zaczniemy od przygotowania danych.&#10;W kilku kolejnych postach posłużymy się danymi z ręcznie pisanymi liczbami. Zbiór ten nazywa się MNIST i jest bardzo popularny w świecie &lt;em&gt;datalogów&lt;/em&gt;. Można go pobrać z &lt;a href="http://yann.lecun.com/exdb/mnist/"&gt;tego miejsca&lt;/a&gt;. Klasyfikacja ręcznie pisanych liczb to takie &lt;em&gt;hello world&lt;/em&gt; w sieciach neuronowych.&#10;W kolejnych częściach:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;zbudujemy narzędziownię w R (w oparciu o bibliotekę &lt;a href="http://keras.rstudio.com"&gt;Keras&lt;/a&gt;)&lt;/li&gt;&#10;&lt;li&gt;zbudujemy prostą sieć neuronową i sprawdzimy jakie daje efekty&lt;/li&gt;&#10;&lt;li&gt;zbudujemy sieć konwolucyjną (CNN) i sprawdzimy czy daje lepsze efekty, spróbujemy ją również rozbudować&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Pliki jednak nie są w super przyjaznej formie (na przykład w Excelu nie da się ich otworzyć) - na początek więc przetworzymy je na czytelną formę.&#10;Zgodnie z &lt;a href="http://yann.lecun.com/exdb/mnist/"&gt;opisem&lt;/a&gt; zbiór dzieli się na cztery pliki. Mamy więc dwie (dane treningowe i testowe) paczki: plik określający literki oraz dane opisujące ich wygląd. Pliki są binarne, przetworzymy je na pliki CSV.&lt;/p&gt;</description></item><item><title>Wracam</title><link>https://blog.prokulski.science/2017/02/23/wracam/</link><pubDate>Thu, 23 Feb 2017 21:04:26 +0000</pubDate><guid>https://blog.prokulski.science/2017/02/23/wracam/</guid><description>&lt;p&gt;Wróciliśmy z Chin. 6 lat temu, relację można przeczytać na blogu &lt;a href="http://madeinchina.blox.pl/html"&gt;Made in China&lt;/a&gt;.&#10;Przez te sześć lat zdążył urodzić się Szymon, potem Hubert.&#10;Kilka razy zmieniłem pracę.&#10;W między czasie blog leżał odłogiem - nie było tematów, nie było czasu i weny. Mogłem co prawda pisać blogaska o wszystkim i o niczym, ale po co?&#10;Teraz mam wrażenie, że znalazłem coś, czym warto się podzielić. Zainteresowałem się analizą danych, predykcją i tym podobnymi zagadnieniami związanymi z szeroko pojętym &lt;em&gt;data mining&lt;/em&gt; i &lt;em&gt;data science&lt;/em&gt;. Próbowałem sił w PowerBI, Tableau, aby na koniec dojść do R, przy którym zostałem (jak na razie - Python pewnie następny). Ostatnio zawodowo grzebię też w VBA w Accessie i Excelu.&#10;I to jest ta nisza - dane, ich przetwarzanie i wizualizacja. Takiego polskojęzycznego bloga nie znalazłem, sporo fajnych jest po angielsku (ale co to za problem czytać po angielsku?). Może kogoś zainteresuje, może komuś się przyda do nauki, chociaż nie zamierzam prowadzić tutaj jakiegoś kursu, a publikowane kody źródłowe będą raczej dla zaznajomionych z R.&#10;A jeśli nie przyda się nikomu - &amp;ldquo;będzie do portfolio&amp;rdquo;, &amp;ldquo;wpiszę sobie do CV&amp;rdquo;.&lt;/p&gt;</description></item></channel></rss>