<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Gurbanali Feyzullayev on Medium]]></title>
        <description><![CDATA[Stories by Gurbanali Feyzullayev on Medium]]></description>
        <link>https://medium.com/@gurbanali?source=rss-37199c07f911------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Vhnz0rcnertq6kdj5LT6AQ.png</url>
            <title>Stories by Gurbanali Feyzullayev on Medium</title>
            <link>https://medium.com/@gurbanali?source=rss-37199c07f911------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 31 May 2026 10:07:50 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@gurbanali/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[POWER BI Tam Tutorial]]></title>
            <link>https://gurbanali.medium.com/power-bi-tam-tutorial-2c6c6a8b82df?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/2c6c6a8b82df</guid>
            <category><![CDATA[power-bi]]></category>
            <category><![CDATA[data-visualization-tools]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[data-analytics]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Sat, 28 Mar 2026 03:09:41 GMT</pubDate>
            <atom:updated>2026-03-28T03:10:24.409Z</atom:updated>
            <content:encoded><![CDATA[<h3>Power BI nədir və niyə öyrənməliyik?</h3><p>Power BI, Microsoft tərəfindən hazırlanmış bir <strong>Business Intelligence (BI) </strong>platformudur. Xam, işlənməmiş məlumatları interaktiv hesabatlara və vizual panellərə (dashboard) çevirməyə imkan verir. Bir analitik kimi sənin vəzifən — müxtəlif mənbələrdən gələn datanı bir araya gətirib, biznes qərarlarına əsas olan aydın, dürüst vizuallar yaratmaqdır.</p><p>Power BI-ın gücü üç böyük sütun üzərindədir: <strong>Power Query </strong>(məlumatların yüklənməsi və təmizlənməsi), <strong>Data Model </strong>(cədvəllər arası əlaqələr), <strong>DAX </strong>(hesablamalar dili) və bunların hamısını bir araya gətirən <strong>Reporting </strong>qatı. Bu tutorial səni bu dörd sütunu başa düşmüş, real data üzərində işləyə bilən bir səviyyəyə çatdırmaq üçün yazılmışdır.</p><p><strong>Bu tutorial boyunca işlədəcəyimiz data ssenarisi</strong></p><p><strong>Ssenari: </strong>Bir pərakəndə şirkətin 2022–2024-cü illərə aid satış datasını analiz edirik.<br><strong>Cədvəllər: </strong>Sales (əsas satış faktları), Products (məhsul detalları), Customers (müştəri məlumatları), Regions (coğrafi məlumat), Date (tarix cədvəli)<br><strong>Hədəf: </strong>Kateqoriya üzrə satış payı, aylıq trend, ən çox satılan məhsullar, il-üzrə artım faizini göstərən bir dashboard qurmaq.</p><h3>Bölmə 1 — Power BI Desktop İnterfeysi</h3><p>Power BI Desktop-u ilk açdığınızda sizi bir neçə əsas görünüş (view) qarşılayır. Bu görünüşləri tanımaq, işinizin hansı mərhələsində olduğunuzu bilmək üçün vacibdir.</p><h4>1.1 Views</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/765/1*g-dXwJ1RpWskJBHDLXNtuw.png" /></figure><h4>1.2 Ribbons — Ən Çox İstifadə Edilən Menyular</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0J9tM8O1W00fSD3sQBufFg.png" /></figure><h3>Bölmə 2 — Get Data &amp; Power Query</h3><p>Hər analitik iş məlumatı əldə etməkdən başlayır. Power BI, <strong>100-dən çox məlumat mənbəyini </strong>dəstəkləyir: Excel faylları, SQL Server, PostgreSQL, SharePoint, Web saytları, JSON faylları, Google Sheets, Salesforce, REST API-lər və daha çoxu. Məlumatı daxil etmək prosesi — sadəcə bir klik deyil; düzgün mənbəni seçmək, sütunları, tipləri, filtirləri qərar vermək deməkdir.</p><h4>2.1 Məlumat Yükləmə Prosesi</h4><ol><li><strong>Home tab</strong> → <strong>Get Data</strong> düyməsini klikləyin.</li><li>Açılan pəncərədə mənbəni seçin. Bizim nümunəmizdə <strong>Excel Workbook</strong> seçirik, çünki satış datamız Excel-dədir.</li><li>Fayl yolunu seçin → <strong>Open</strong> düyməsini basın. <strong>Navigator</strong> pəncərəsi açılır — bu pəncərədə fayldakı bütün sheet-lər görünür. Hansılarını yükləmək istədiyinizi seçin.</li></ol><p>Diqqət: <strong>Load</strong> düyməsini <strong>basmayın!</strong> Əvvəlcə <strong>Transform Data</strong> seçin. Bunun niyə vacib olduğunu aşağıda izah edirik.</p><h4>2.2 Transform Data — Power Query Editor</h4><p>Transform Data düyməsi sizə <strong>Power Query Editor </strong>açır. Bu, Power BI-ın daxilinə qurulmuş bir ETL (Extract, Transform, Load) alətidir. Burada məlumatları yükləmədən əvvəl <strong>təmizlər, dəyişdirir, birləşdirirsiz.</strong> Power Query-nin ən böyük üstünlüyü odur ki, etdiyiniz hər əməliyyat <strong>Applied Steps </strong>panelində yadda saxlanır — sanki makros yazırsınız. Data dəyişsə belə, siz sadəcə <strong>Refresh </strong>edirsiz və bütün addımlar avtomatik yenidən icra olunur.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5rbAyfNrfx8bnUUirT0EeA.png" /></figure><h4>2.3 Data Types — Sütun Tipləri</h4><p>Power Query bəzən sütunların tipini yanlış təyin edir məsələn, qiymət sütununu <strong>Text </strong>kimi yükləyir. Bu, hesablamaları <strong>tamamilə səhv olmasına səbəb olur.</strong> Hər sütunun tipi düzgün olmalıdır.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IAXEzUY4-R_4wYaFHe97BQ.png" /></figure><p><strong>Tipi necə dəyişirik? </strong>Sütun başlığının sol tərəfindəki kiçik ikonaya klikləyin (məsələn, ABC = Text, 123 = ədəd). Açılan menyudan düzgün tipi seçin. Yaxud sütun başlığını sağ klik → <strong>Change Type</strong> seçin.</p><h4>2.4 Ən Çox İstifadə Edilən Power Query Əməliyyatları</h4><h4>2.4.1 Null Dəyərlərlə İş</h4><p>Real dünyada datanın böyük hissəsi natamamdır. <strong>Null </strong>dəyərlər — yəni boş xanalar — hesablamalarınıza ciddi zərər vura bilər. Power Query bu məsələ ilə başa çıxmaq üçün bir neçə üsul təqdim edir:</p><ul><li><strong>Remove Rows → Remove Blank Rows: </strong>Bütün sütunları boş olan sətirləri silir.</li><li><strong>Replace Values: </strong>Sütunu seçin → sağ klik → Replace Values → ‘null’ yerinə 0 və ya ‘Unknown’ yazın.</li><li><strong>Fill Down / Fill Up: </strong>Birləşdirilmiş xanalardakı kimi boşluqları yuxarıdakı və ya aşağıdakı dəyərlə doldurur.</li><li><strong>Remove Rows → Remove Rows with Errors: </strong>Tip uyuşmazlığından yaranan xətalı sətirləri çıxarır.</li></ul><p>Bizim nümunə datamızda: <strong>CustomerCity</strong> sütununda bəzi müştərilərin şəhər məlumatı yoxdur. Bu null dəyərləri <strong>‘Unknown’</strong> ilə əvəz edirik ki, hesablamalarımız pozulmasın.</p><h4>2.4.2 Sütunların Parçalanması — Split Column</h4><p>Bəzən bir sütunda iki məlumat birlikdə saxlanır. Məsələn, <strong>FullName</strong> sütununda ‘Aytən Həsənova’ yazır. Bunu iki ayrı sütuna bölmək üçün: Sütunu seçin → <strong>Home → Split Column → By Delimiter</strong> → ayırıcı simvolu seçin (məsələn, boşluq). Power BI <strong>FullName.1</strong> (ad) və <strong>FullName.2</strong> (soyad) sütunları yaradır.</p><h4>2.4.3 Custom Column</h4><p><strong>Add Column → Custom Column</strong> vasitəsilə mövcud sütunlara əsaslanaraq yeni bir sütun yaratmaq olar. Məsələn,</p><p><strong>TotalRevenue = [Quantity] * [UnitPrice]</strong></p><p>Bu düstur hər sətir üçün Quantity × UnitPrice hesablayır. DAX-da da bunu edə bilərsiniz (Calculated Column kimi), amma Power Query-də etmək daha səmərəlidir çünki data model-ə yüklənmədən əvvəl işlənir.</p><h4>2.4.4 Unpivot Columns</h4><p>Bu, imtahanlarda ən çox soruşulan mövzulardan biridir. Tutaq ki, datanız aşağıdakı kimi <strong>wide formatdadır:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/995/1*YsMf67qtzgHkOS8uaUJnuw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/990/1*-xY4kzLpL24ampBfdGziJA.png" /></figure><p>Bu format pivot cədvəlinə bənzəyir — BI alətləri üçün ideal deyil, çünki hər yeni ay üçün yeni sütun əlavə edilməlidir. Bunun əvəzinə <strong>long (uzun) format </strong>lazımdır:</p><ol><li>Sabit qalacaq sütunları seçin (məsələn, yalnız ‘Məhsul’ sütunu)</li><li>Digər (ay) sütunlarını seçin → sağ klik → <strong>Unpivot Columns</strong></li><li>Power Query ‘Attribute’ (ay adları) və ‘Value’ (satış rəqəmləri) adlı iki yeni sütun yaradacaq. Bunları istədiyiniz kimi adlandırın.</li></ol><h4>2.4.5 Merge Queries — Cədvəlləri Birləşdirmək (JOIN)</h4><p><strong>Home → Merge Queries</strong> — iki cədvəli ortaq bir açar (key) sütun üzrə birləşdirir. SQL-dəki JOIN əməliyyatının ekvivalentidir. Məsələn, Sales cədvəlindəki ProductID ilə Products cədvəlini birləşdirməklə məhsul adını satış datanıza əlavə edirsiniz.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/985/1*Z3xoW1XHsvjfroy56nKpiw.png" /></figure><h4>2.4.6 Append Queries — Cədvəlləri Alt-Alta Qoymaq (UNION)</h4><p><strong>Home → Append Queries</strong> — eyni strukturlu iki (və ya daha çox) cədvəli alt-alta birləşdirir. Məsələn, 2022, 2023 və 2024 illərinə aid ayrı-ayrı Excel sheet-lərimizdə saxlanmış satış datalarını bir cədvəldə toplamaq üçün Append istifadə edirik.</p><p><strong>Merge vs Append<br>Merge </strong>= yeni <strong>sütunlar </strong>əlavə edir (JOIN) — kənar cədvəldən məlumat gətirirsən. <strong>Append </strong>= yeni <strong>sətirlər </strong>əlavə edir (UNION) — eyni tip datanı uzadırsın.</p><h4>2.5 Close &amp; Apply — Power Query-dən Çıxmaq</h4><p>Bütün əməliyyatları tamamladıqdan sonra <strong>Home → Close &amp; Apply</strong> düyməsini basın. Power Query kapanır, bütün əməliyyatlar icra edilir və data Power BI Data Model-ə yüklənir. Bu proses çox böyük datalar üçün bir neçə saniyə çəkə bilər.</p><h3>Bölmə 3 — Data Modeling (Məlumat Modelləşdirmə)</h3><p>Data Modeling, yüklənmiş cədvəllər arasında <strong>münasibətlər (Relationship) </strong>qurmaq deməkdir. Bu, Power BI-ın beynini formalaşdıran hissədir. Düzgün qurulmuş bir model olmadan DAX formullarınız yanlış nəticə verəcək, filterlər düzgün axmayacaq, vizuallar sizə yalan danışacaq.</p><h4>3.1 Star Schema</h4><p>Power BI-da data modelləşdirmənin qızıl standartı <strong>Star Schema</strong>-dır. Bu sxemdə mərkəzdə bir <strong>Fact Table </strong>(hadisə cədvəli), ətrafında isə bir neçə <strong>Dimension Table </strong>(kontekst cədvəli) var. Bu quruluş insan zehninin bir ulduzu tanıması qədər intuitiv olduğu üçün bu adı almışdır.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/990/1*bQFtAMRC-RwpFRCwPjtXpw.png" /></figure><h4>3.2 Fact Table vs Dimension Table</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/984/1*bWITX7Dj4AaqRLDR2oeUWg.png" /></figure><p>Prinsip sadədir: əgər bir sütunu <strong>SUM </strong>edəcəksinizsə — o sütun Fact Table-dadır. Əgər bir sütuna görə <strong>filter </strong>edəcəksinizsə — o sütun Dimension Table-dadır.</p><h4>3.3 Relationship Qurmaq</h4><p><strong>Model View</strong>-ə keçin (sol paneldə şəbəkə ikonu). Bütün cədvəlləri görəcəksiniz. Bir cədvəldəki sütunu (məsələn, Dim_Product-dakı ProductID) tutub digər cədvəlin üzərinə (Sales-dakı ProductID) sürükləyin. Power BI avtomatik olaraq Relationship yaradır.</p><h4>3.3.1 Cardinality</h4><p>Relationship pəncərəsindəki Cardinality seçimi, iki cədvəl arasındakı münasibətin tipini müəyyən edir:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/987/1*W8B9LpeHZ41LD_RRu4IqRQ.png" /></figure><h4>3.3.2 Cross-filter Direction — Filterin Axış İstiqaməti</h4><p>Bu, imtahanlarda çox soruşulan bir mövzudur. Cross-filter direction, filterin hansı istiqamətdə axacağını müəyyən edir.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/986/1*iPlz8OwPTzaXwMKoHE33sw.png" /></figure><h4>3.4 Active vs Inactive Relationships</h4><p>İki cədvəl arasında birdən çox tarix sütunu ola bilər — məsələn, Sales cədvəlində həm <strong>OrderDate</strong> həm də <strong>ShipDate</strong> var. Power BI iki cədvəl arasında yalnız bir active relationship saxlaya bilər; digəri inactive (qırıq xətt ilə göstərilir) olur.</p><p>Inactive relationship-i istifadə etmək üçün DAX-da <strong>USERELATIONSHIP</strong> funksiyasını çağırırsınız:</p><blockquote><strong><em>ShipDate Sales = CALCULATE(SUM(Sales[TotalAmount]), USERELATIONSHIP(Sales[ShipDate], Dim_Date[Date]))</em></strong></blockquote><h3>Bölmə 4 — DAX (Data Analysis Expressions)</h3><p>DAX, Power BI-ın hesablama dilidir. Excel formullarına bənzər, amma <strong>cədvəl-əsaslı </strong>düşünür — hər hesablama bir filter kontekstinə görə icra olunur. DAX öyrənmək, yalnız funksiyaları əzbərləmək deyil; filter kontekstinin necə işlədiyini <strong>anlamaq</strong>-dır. Bu bölüm həm fundamental fərqləri, həm də vacib funksiyaları real nümunələrlə əhatə edir.</p><h4>4.1 Calculated Column vs Measure</h4><p>Bu fərqi bilmədən DAX yazmaq — gözünüzü bağlı sürücülük etmək kimidir. Hər ikisi DAX istifadə edir, amma <strong>tamamilə fərqli məntiqə</strong> malikdir.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/992/1*HT9XpOkeLFdptThuULrSXw.png" /></figure><p>İkincisi <strong>daha güclüdür </strong>— çünki slicer-də 2024-ü seçsəniz, Total Profit avtomatik yalnız 2024 məlumatları üzrə hesablanır. Calculated Column isə həmişə tam cədvəlin dəyərini göstərir.</p><h4>4.2 Measure Yaratmaq</h4><ol><li><strong>Modeling tab → New Measure</strong> klikləyin (və ya Fact cədvəlinə sağ klik → New Measure)</li><li>Formula bar-da DAX formulunuzu yazın</li><li><strong>Enter</strong> basın</li><li>Measure-ı Fields panelindəki sütun kimi visual-a sürükləyə bilərsiniz</li></ol><p>Tövsiyə: bütün Measure-larınızı <strong>ayrı bir boş cədvəldə (Measure Table)</strong> saxlayın. Modeling tab → New Table → <strong>_Measures = ROW(“x”, 1)</strong> yazın. Bu boş cədvəl yalnız Measure-larınızı qruplaşdırmağa kömək edir, heç bir hesablamaya qarışmır.</p><h4>4.3 Əsas DAX Funksiyaları</h4><h4>4.3.1 SUM, MIN, MAX, AVERAGE, COUNT, DISTINCTCOUNT</h4><p>Ən sadə aggregasiya funksiyalarıdır:</p><ul><li><strong><em>Total Sales = SUM(Sales[TotalAmount]</em></strong></li><li><strong><em>Avg Order Value = AVERAGE(Sales[TotalAmount])</em></strong></li><li><strong><em>Max Sale = MAX(Sales[TotalAmount])</em></strong></li><li><strong><em>Unique Customers = DISTINCTCOUNT(Sales[CustomerID])</em></strong></li></ul><p><strong>DISTINCTCOUNT</strong> — xüsusilə vacibdir. Normal <strong>COUNT</strong> sütundakı dolu xanaları sayır; <strong>DISTINCTCOUNT</strong> isə unikal (təkrarlanmayan) dəyərləri sayır. Neçə fərqli müştərinin sifariş verdiyini öyrənmək üçün DISTINCTCOUNT lazımdır.</p><h4>4.3.2 CALCULATE — DAX-ın Ən Güclü Funksiyası</h4><p><strong>CALCULATE</strong> bir hesablamani <strong>dəyişdirilmiş filter kontekstində </strong>icra edir. Yəni: ‘bu hesablamı apar, amma bu şərtlər daxilində’. Sintaksis:</p><p><strong>CALCULATE ( ifadə, filter1, filter2, … )</strong></p><p>Nümunələr:</p><ul><li><strong><em>Yalnız 2024-ün satışı: Sales 2024 = CALCULATE(SUM(Sales[TotalAmount]), Sales[Year] = 2024)</em></strong></li><li><strong><em>Yalnız ‘Electronics’ kateqoriyası: Electronics Sales = CALCULATE(SUM(Sales[TotalAmount]), Dim_Product[Category] = “Electronics”)</em></strong></li><li><strong><em>Birdən çox şərt: Q1 Electronics = CALCULATE(SUM(Sales[TotalAmount]), Dim_Date[Quarter] = 1, Dim_Product[Category] = “Electronics”)</em></strong></li></ul><h4>4.3.3 ALL — Filterləri Silmək</h4><p><strong>ALL</strong> funksiyası müəyyən bir cədvələ və ya sütuna tətbiq olunan bütün filter-ləri silir. Bu, ümumi toplam hesablamalarında — xüsusilə <strong>faiz payı </strong>hesablamalarında — həyati əhəmiyyət daşıyır:</p><p><strong><em>Sales Share % = DIVIDE( SUM(Sales[TotalAmount]), CALCULATE(SUM(Sales[TotalAmount]), ALL(Dim_Product)) )</em></strong></p><p>Bu formula: ‘cari məhsulun satışı ÷ bütün məhsulların ümumi satışı’ hesabını verir. Slicer-də hər hansı məhsulu seçsəniz belə, <strong>ALL(Dim_Product)</strong> sayəsində məxrəc həmişə bütün məhsulların cəmini göstərəcək.</p><h4>4.3.4 FILTER — Şərtli Cədvəl Qaytarmaq</h4><p><strong>FILTER</strong> funksiyası bir cədvəl qaytarır — amma yalnız şərtə uyğun sətirləri. Tək başına nadir istifadə olunur; adətən CALCULATE içində işlənir:</p><p><strong><em>High Value Sales = CALCULATE( SUM(Sales[TotalAmount]), FILTER(Sales, Sales[TotalAmount] &gt; 1000) )</em></strong></p><p>Bu formulda <strong>FILTER(Sales, Sales[TotalAmount] &gt; 1000)</strong> ifadəsi yalnız 1000-dən böyük sifariş sətrlərini götürür; CALCULATE isə bu kiçik çalışma üzərindən SUM edir.</p><h4>4.3.5 RELATED — Digər Cədvəldən Dəyər Gətirmək</h4><p><strong>RELATED</strong> — Calculated Column içində, qurulmuş Relationship üzərindən başqa cədvəlin sütunundan dəyər oxuyur. SQL-dəki <strong>JOIN </strong>əməliyyatına bənzər, amma yalnız bir sətir üçün:</p><p><strong>ProductCategory = RELATED(Dim_Product[Category])</strong></p><p>Bu sütun Sales cədvəlinə əlavə edilərsə, hər satış sətri üçün həmin məhsulun kateqoriyasını Dim_Product cədvəlindən oxuyacaq. RELATED yalnız Calculated Column-da işlənir, Measure-da işləmir.</p><h4>4.3.6 DIVIDE</h4><p>Sıfıra bölmə xətasının qarşısını almaq üçün <strong>DIVIDE</strong> istifadə edin:</p><p><strong><em>Profit Margin % = DIVIDE( [Total Profit], [Total Sales], 0 )</em></strong></p><p>Üçüncü arqument (burada 0) — məxrəc sıfır olarsa nə qaytarılsın? Adətən 0 istifadə olunur, bəzən BLANK() istifadə edilir.</p><h4>4.3.7 IF, SWITCH</h4><p><strong>IF</strong>: Sadə şərtli ifadə. <strong>Sales Category = IF([Total Sales] &gt; 50000, “High”, “Low”)<br>SWITCH</strong>: Çox şərtli vəziyyətlər üçün IF-IF-IF-in xoş alternatividir:<br><strong>Region Zone = SWITCH( Dim_Region[Country], “Azerbaijan”, “Caucasus”, “Turkey”, “MENA”, “Germany”, “Europe”, “Other” )</strong></p><h4>4.3.8 RANKX — Sıralama</h4><p><strong>RANKX</strong> — bir ölçüyə (Measure) görə elementlərini sıralayır:<br><strong><em>Product Rank = RANKX( ALL(Dim_Product[ProductName]), [Total Sales], , DESC, DENSE )<br></em></strong>Bu formula hər məhsulu toplam satışına görə azalan sıra ilə rəqəmləndirir. <strong>DENSE</strong> seçimi bərabər dəyərlər olduqda sıralamada boşluq buraxmır.</p><h3>Bölmə 5 — Time Intelligence</h3><p>Biznes analizinin ən vacib suallarından biri zamana bağlıdır: <strong>‘Bu ay keçən aydan necə fərqlənir? Bu il ötən illə müqayisədə necədir? İlin əvvəlindən bu günə qədər nə qədər satdıq?’</strong> Bu suallara cavab vermək üçün DAX-da xüsusi Time Intelligence funksiyaları var. Lakin bu funksiyalar yalnız düzgün qurulmuş bir <strong>Date Table</strong> ilə işləyir.</p><h4>5.1 Date Table (Calendar Table) — Niyə Vacibdir?</h4><p>Power BI-ın Time Intelligence funksiyaları daxilən zaman boyu <strong>fasiləsiz bir tarix sırasına</strong> ehtiyac duyur — ilin hər gününü, satış olsun ya olmasın. Əgər Fact cədvəlinizdəki tarix sütununu birbaşa istifadə etsəniz, satış olmayan günlər modeldə yoxdur və hesablamalar yanlış çıxacaq.</p><h4>5.1.1 Date Table Yaratmaq</h4><p><strong>Modeling → New Table</strong> seçin və aşağıdakı formulunu yazın:</p><p><strong><em>Dim_Date = CALENDAR(DATE(2022, 1, 1), DATE(2024, 12, 31))</em><br></strong>Bu, 2022-ci ilin 1 Yanvarından 2024-cü ilin 31 Dekabrına qədər hər günü içərən bir cədvəl yaradır. İndi bu cədvələ lazımi sütunları Calculated Column olaraq əlavə edirik:</p><ul><li><strong><em>Year = YEAR(Dim_Date[Date])</em></strong></li><li><strong><em>Quarter = QUARTER(Dim_Date[Date])</em></strong></li><li><strong><em>Month = MONTH(Dim_Date[Date])</em></strong></li><li><strong><em>MonthName = FORMAT(Dim_Date[Date], “MMMM”)</em></strong></li><li><strong><em>MonthShort = FORMAT(Dim_Date[Date], “MMM”)</em></strong></li><li><strong><em>Week = WEEKNUM(Dim_Date[Date])</em></strong></li><li><strong><em>DayOfWeek = WEEKDAY(Dim_Date[Date], 2)</em></strong></li><li><strong><em>IsWeekend = IF(WEEKDAY(Dim_Date[Date], 2) &gt;= 6, TRUE, FALSE)</em></strong></li></ul><h4>5.1.2 Date Table-ı Qeyd Etmək</h4><p>Date Table yaratdıqdan sonra onu Power BI-a rəsmi olaraq tanıtmaq lazımdır. <strong>Dim_Date</strong> cədvəlini seçin → <strong>Table Tools tab → Mark as Date Table → Mark as Date Table</strong> → Açılan pəncərədə <strong>Date</strong> sütununu seçin → OK. Bu addım olmadan Time Intelligence funksiyaları düzgün işləməyəcək.</p><h4>5.2 Time Intelligence Funksiyaları</h4><h4>5.2.1 TOTALYTD — Cari İlin Başından Bu Günə</h4><p><strong>TOTALYTD</strong> (Year-To-Date) — ilin 1 Yanvarından cari tarixə qədər kumulativ (birikən) cəm verir:<br><strong>YTD Sales = TOTALYTD( SUM(Sales[TotalAmount]), Dim_Date[Date] )<br></strong>Bu measure grafik üzərindəki hər ay üçün o ayın sonundakı kumulativ cəmi göstərir. Mart ayında görürsünüzsə — bu Yanvar + Fevral + Martın cəmidir. Bu tipli hesablama kumulativ büdcə izləmə üçün çox istifadə olunur.<br>Bunun quarterly versiyası da var: <strong>TOTALQTD( SUM(Sales[TotalAmount]), Dim_Date[Date] )</strong> — rübün əvvəlindən bu günə kumulativ cəm.</p><h4>5.2.2 SAMEPERIODLASTYEAR — Keçən İlin Eyni Dövrü</h4><p><strong>SAMEPERIODLASTYEAR</strong> — cari filterdə seçilmiş dövrdən tam bir il geriyə gedir:<br><strong>LY Sales = CALCULATE( SUM(Sales[TotalAmount]), SAMEPERIODLASTYEAR(Dim_Date[Date]) )<br></strong>Qrafik üzərindəki Mart 2024 üçün bu measure, Mart 2023-ün satışını göstərəcək. İki measure yanı-yana qoyanda istifadəçi birbaşa müqayisə görür.</p><h4>5.2.3 YoY Growth — İllik Artım Faizi</h4><p>İki yuxarıdakı measure-ı birləşdirərək illik artımı faizlə göstərə bilərsiniz:</p><p><strong>YoY Growth % = DIVIDE( [Total Sales] — [LY Sales], [LY Sales] )</strong></p><p>Bu measure müsbət rəqəm göstərirsə artım var, mənfi rəqəm göstərirsə azalma var. Sonra bu measure-ı conditional formatting ilə <strong>yaşıl/qırmızı rəngləndirib</strong> daha oxunaqlı edə bilərsiniz.</p><h4>5.2.4 DATEADD</h4><p><strong>DATEADD</strong> — istənilən tarix intervalını irəli-geri hərəkət etdirməyə imkan verir:</p><ul><li><strong><em>Prev Month Sales = CALCULATE(SUM(Sales[TotalAmount]), DATEADD(Dim_Date[Date], -1, MONTH))</em></strong></li><li><strong><em>Prev Quarter Sales = CALCULATE(SUM(Sales[TotalAmount]), DATEADD(Dim_Date[Date], -1, QUARTER))</em></strong></li><li><strong><em>Next Year Forecast = CALCULATE(SUM(Sales[TotalAmount]), DATEADD(Dim_Date[Date], 1, YEAR))</em></strong></li></ul><h3>Bölmə 6 — Visualization</h3><p>Güclü bir model qurmaq — işin yalnız yarısıdır. Digər yarısı, <strong>düzgün vizualı seçib, aydın, yanıltıcı olmayan bir şəkildə təqdim etməkdir.</strong> Bu bölmədə hansı vizualın hansı sual üçün uyğun olduğunu, slicer-lərin necə qurulduğunu və interaksiyanın necə idarə edildiyini öyrənəcəksiniz.</p><h4>6.1 Əsas Vizuallar və İstifadə Halları</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/865/1*fNsx0U0pXYa09QR8JKLGOw.png" /></figure><h4>6.2 Visual Əlavə Etmək</h4><ol><li><strong>Report View</strong>-də boş bir canvas sahəsinə klikləyin</li><li><strong>Visualizations paneli</strong>-ndən istədiyiniz vizualı seçin (sağ paneldə ikonlar sırası)</li><li><strong>Fields paneli</strong>-ndən sütunları vizualın Axis, Values, Legend kimi bölmələrinə sürükləyin</li><li>Məsələn, Line Chart üçün: <strong>Axis</strong> → Dim_Date[MonthName]; <strong>Values</strong> → [Total Sales] Measure-ı</li><li><strong>Format paneli</strong> (fırça ikonu) ilə rəng, başlıq, lejand, ox etiketlərini nizamlayın</li></ol><h4>6.3 Slicer-lər — İnteraktiv Filter</h4><p><strong>Slicer</strong> vizualı, report-dakı bütün digər vizuallara filter tətbiq edən interaktiv bir elementdir. İstifadəçi özü datanı kəsib-biçə bilər.</p><h4>6.3.1 Slicer Yaratmaq</h4><ol><li>Visualization panelindən Slicer ikonunu seçin</li><li>Fields panelindən filter etmək istədiyiniz sütunu (məsələn, Dim_Date[Year]) Slicer-ə sürükləyin</li><li>Slicer seçili ikən Format paneli → Slicer settings → Style bölməsindən görünüşü seçin: <strong>List</strong> (yuxarıdan aşağı siyahı), <strong>Dropdown</strong> (açılan menyü), <strong>Tile</strong> (düymə kimi), <strong>Between</strong> (tarix/rəqəm aralığı üçün sürgü)</li></ol><h4>6.3.2 Slicer Sync — Birdən Çox Səhifə</h4><p>Əgər report-unuzda çox sayda səhifə (page) var və hər səhifədə eyni slicer-in seçimini görmək istəyirsinizsə:<strong> View tab → Sync Slicers</strong>. Açılan paneldə hər slicer-in hansı səhifələrə sinxron olacağını seçirsiniz.</p><h4>6.4 Visual Interactions — Vizuallar Arası Əlaqəni İdarə Etmək</h4><p>Default olaraq, bir visual-a klikləndikdə həmin vizual bütün digər vizualları filter edir. Bu bəzən istəmədiyiniz nəticə verə bilər. <strong>Edit Interactions</strong> funksiyası ilə bu əlaqəni tənzimləyirsiniz.</p><ol><li>Filter etmək istədiyiniz visual-ı seçin (məsələn, Product Category bar chart)</li><li><strong>Format tab → Edit Interactions</strong> düyməsini basın</li><li>Digər visual-ların yuxarısında üç kiçik ikon görünür:</li></ol><ul><li><strong>Huni ikonu (Filter): </strong>Bu visual, həmin digər visual-ı filter etsin</li><li><strong>Vurğulama ikonu (Highlight): </strong>Filter etmə yox, yalnız seçili hissəni vurğulasın</li><li><strong>Xaç ikonu (None): </strong>Heç bir əlaqə olmasın — bu visual o digərini etkiləməsin</li></ul><p>Lazımi seçimi etdikdən sonra <strong>Edit Interactions</strong> düyməsini yenidən basaraq rejimdən çıxın</p><h4>6.5 Conditional Formatting</h4><p>Table və ya Matrix içindəki dəyərləri dəyərin böyüklüyünə görə rəngləndirib ‘heat map’ effekti yaratmaq mümkündür. Bunun üçün: Visual seçili ikən Format paneli → <strong>Cell elements</strong> → <strong>Background color</strong> → <strong>Conditional formatting</strong> açın. Minimum-maximum rəng aralığını seçin.</p><p>Bu xüsusilə Matrix visual-ında müxtəlif kateqoriyaların müqayisəsi üçün çox effektivdir — ən yüksək satışlı xanalar daha tünd görünür, ən aşağılar solğun.</p><h4>6.6 Tooltips —Əlavə Məlumat</h4><p>Hər vizualın üzərinə gedəndə görünən kiçik popup məlumat qutusuna <strong>Tooltip</strong> deyilir. Bunu özelleştirə bilərsiniz: <strong>Format paneli → Tooltips → Report page</strong> seçin, sonra ayrıca hazırladığınız bir səhifəni tooltip olaraq təyin edin. Bu, çox zəngin interaktiv detay göstərmək üçün güclü bir texnikadır.</p><h3>Bölmə 7 — Düzgün Dashboard Qurmaq</h3><p>Düzgün bir dashboard — yalnız gözəl görünmür; <strong>sualları cavablandırır, qərar qəbuletmə prosesini sürətləndirir.</strong> Bu bölmə, bizim nümunə ssenarisi üzrə tam bir dashboard-un necə qurulduğunu addım-addım izah edir.</p><h4>7.1 Dashboard Dizayn Prinsipləri</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/867/1*LSEg40iuOu7uN-27XCLU7A.png" /></figure><h4>7.2 Bizim Dashboard-un Quruluşu</h4><p>Nümunə ssenarisi üzrə dashboard-umuzu üç səhifəyə bölürük:</p><h4>Səhifə 1 — Executive Summary</h4><ul><li><strong>4 Card visual (yuxarıda): </strong>Ümumi Satış, Ümumi Mənfəət, Unikal Müştəri Sayı, Orta Sifariş Dəyəri</li><li><strong>1 Line Chart: </strong>Aylıq satış trendi (cari il vs keçən il — iki xətt)</li><li><strong>1 Bar Chart: </strong>Kateqoriyaya görə satış (üst 5)</li><li><strong>1 Donut Chart: </strong>Kateqoriya üzrə satış payı (%)</li><li><strong>3 Slicer: </strong>Year, Region, Category — sol tərəfdə şaquli</li></ul><h4>Səhifə 2 — Product Analysis</h4><ul><li><strong>Matrix: </strong>Məhsul × Ay × Satış (conditional formatting ilə)</li><li><strong>Scatter Chart: </strong>Qiymət vs Satış miqdarı (hər məhsul bir nöqtə)</li><li><strong>Bar Chart: </strong>Ən çox satılan 10 məhsul (RANKX ile)</li><li><strong>Treemap: </strong>Kateqoriya → Alt-kateqoriya → Məhsul payı</li></ul><h4>Səhifə 3 — Regional &amp; Time Analysis</h4><ul><li><strong>Filled Map: </strong>Ölkəyə görə satış rəngli xəritə</li><li><strong>Column Chart (Stacked): </strong>Rüblərə görə Region üzrə satış payı</li><li><strong>KPI Visual: </strong>YTD satış vs büdcə hədəfi</li><li><strong>Line Chart: </strong>YoY artım faizi — aylıq</li></ul><h3>Bölmə 8 — Publish &amp; Power BI Service</h3><p>Dashboard-unuzu tamamladıqdan sonra onu <strong>Power BI Service</strong>-ə (bulud versiyasına) yayımlamaq (publish) lazımdır. Beləliklə, komandanızdakı digər insanlar da bu hesabatı brauzerdən görə bilər, siz isə avtomatik yeniləmə (scheduled refresh) qura bilərsiniz.</p><h4>8.1 Publish Etmək</h4><ol><li><strong>Home tab → Publish</strong> düyməsini klikləyin</li><li>Hansı workspace-ə yayımlamaq istədiyinizi seçin (şirkətin workspace-i və ya şəxsi ‘My workspace’)</li><li><strong>Select</strong> düyməsini basın. Yayımlama proses tamamlanır.</li><li>Verilən linkdən birbaşa Power BI Service-də hesabatı aça bilərsiniz</li></ol><h4>8.2 Scheduled Refresh — Avtomatik Yeniləmə</h4><p>Data mənbəniz bir server, SharePoint, yaxud bulud xidməti dirsə, Power BI Service-dən avtomatik yeniləmə tənzimləyə bilərsiniz. Bunun üçün ilk öncə <strong>Data Gateway</strong> qurmaq lazım ola bilər (yerli server məlumatları üçün).</p><p>Power BI Service → dataset üzərinə klikləyin → <strong>Settings → Scheduled Refresh</strong> → günaşırı, hər gün, saatlıq kimi periodluğu seçin.</p><h3>8.3 Row-Level Security (RLS)</h3><p>Şirkətin müxtəlif region menecerlərinin yalnız öz regionlarının məlumatını görməsi lazımdırsa, <strong>Row-Level Security (RLS)</strong> qurun. Bunun üçün:</p><ol><li><strong>Modeling tab → Manage Roles</strong> klikləyin</li><li><strong>Create</strong> → rol adı daxil edin (məsələn, ‘North Region Manager’)</li><li>Dim_Region cədvəlinə DAX filter tətbiq edin: <strong>[RegionName] = “North”</strong></li><li>Sonra Power BI Service-də həmin rola istifadəçilər əlavə edin</li></ol><h3>Bölmə 9 — Praktik Məsləhətlər &amp; Ümumi Səhvlər</h3><h4>9.1 Ən Çox Edilən Səhvlər</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/865/1*ZbREYp3Zr70cfhMH2x9mSw.png" /></figure><h4>9.2 Performance — Sürəti Artırmaq Üçün</h4><ul><li>Calculated Column-lardan mümkün qədər qaçın — bu sütunlar yaddaşı doldurur. Çox vaxt Measure ilə eyni nəticəyə nail olmaq mümkündür.</li><li>Power Query-də lazımsız sütunları yükləməzdən əvvəl silin — sütun sayı azaldıqca model sürəti artır.</li><li>Çox böyük string sütunlarını (açıqlamalar, uzun textlər) modeldən çıxarın — bunlar yaddaşda böyük yer tutur.</li><li>Report-u yayımlamadan əvvəl View → Performance Analyzer ilə hər vizualın yüklənmə müddətini ölçün.</li><li>DAX Studio-dan (pulsuz xarici alət) istifadə edərək yavaş measure-ları profil edin.</li></ul><h4>9.3 Klaviatura Qısayolları</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/866/1*8fie53b2irRANvWlZqBhOw.png" /></figure><h3>Xülasə — Bütün Mərhələlər</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/566/1*dFYvjr_9pq7bQ3Kki4zKrA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/950/1*psjwgSiO3fYXrnGLu2TgvA.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2c6c6a8b82df" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[WUF13-ə Doğru: Dayanıqlı Şəhər Mobilliyi üçün Kinetix AI Layihəsi]]></title>
            <link>https://gurbanali.medium.com/wuf13-%C9%99-do%C4%9Fru-dayan%C4%B1ql%C4%B1-%C5%9F%C9%99h%C9%99r-mobilliyi-%C3%BC%C3%A7%C3%BCn-kinetix-ai-layih%C9%99si-62f4d5335ca6?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/62f4d5335ca6</guid>
            <category><![CDATA[hackaton]]></category>
            <category><![CDATA[ai-engineering]]></category>
            <category><![CDATA[urbanism]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Mon, 16 Mar 2026 00:14:44 GMT</pubDate>
            <atom:updated>2026-03-16T11:52:24.153Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9ug0IZNDknCIOrj7.jpeg" /></figure><p>Qubanın təmiz havası, 130 yaradıcı gənc, 29 komanda və fasiləsiz 48 saatlıq gərgin iş… <strong>“Urban Hackathon 2026”</strong> sadəcə bir yarışma deyil, həm də şəhərlərimizin gələcəyini daha dayanıqlı və rəqəmsal etmək üçün atılan mühüm bir addım idi. Azərbaycan Respublikasının Gənclər və İdman Nazirliyi, “Bir Könüllü” Tələbələrin Əməkdaşlığı İctimai Birliyi və SABAH.Hub-ın dəstəyi ilə keçirilən bu marafonun mərkəzində bizim üçün bir sual dayanırdı: <em>Süni intellekt Bakı Metropolitenində və avtobuslarda sərnişin sıxlığını necə təxmin edə bilər, ictimai nəqliyyatı necə hər kəs üçün daha əlçatan edə bilərik?</em></p><p>Məhz bu sualın cavabı olaraq <strong>Kinetix AI</strong> layihəsini ərsəyə gətirdik.</p><p>Bu yazıda daha çox Bakı metropolitenində sərnişin sıxlığını necə təxmin etmək ola bilər bu suala fokuslanasıyıq, çünki AYNA avtobuslarla, onların gündəlik istifadəsi ilə bağlı hələlik hər hansı bir data paylaşmayıb. Ona görə indilik avtobus dataları ilə işləyə bilmirik.</p><p>Hər hansı bir Maşın Öyrənməsi (Machine Learning) modelini ərsəyə gətirmək üçün atılacaq ilk və ən həlledici addım doğru məlumatların tapılması və toplanmasıdır. Necə ki, bir avtomobilin hərəkət etməsi üçün yanacaq lazımdır, ML modellərinin də “öyrənməsi” və doğru qərarlar verə bilməsi üçün keyfiyyətli tarixçəyə (historical data) ehtiyacı var.</p><p>Hər hansı bir Maşın Öyrənməsi (Machine Learning) modelini ərsəyə gətirmək üçün atılacaq ilk və ən həlledici addım <strong>doğru məlumatların (data) tapılması və toplanmasıdır</strong>. Çünki necə ki, bir avtomobilin hərəkət etməsi üçün yanacaq lazımdır, ML modellərinin də “öyrənməsi” və doğru qərarlar verə bilməsi üçün keyfiyyətli tarixçəyə ehtiyacı var.</p><p>Bəs bu proses praktikada necə işləyir?</p><p>Maşın Öyrənməsi modelləri, əslində, illərin təcrübəsini qısa müddətdə analiz edə bilən yorulmaz bir mütəxəssis kimi davranır. Sistem işə düşdükdə aşağıdakı məntiqi ardıcıllığı izləyir:</p><ul><li><strong>Keçmişdən öyrənmə:</strong> Model ilk olaraq əvvəlki aylara və illərə aid böyük həcmli sərnişin məlumatlarını oxuyur. O, bu rəqəmlər arasındakı gizli qanunauyğunluqları, təkrarlanan trendləri və statistik asılılıqları kəşf edir.</li><li><strong>Xüsusiyyətlərin (Features) təhlili:</strong> Sıxlıq sadəcə quru rəqəmlərdən ibarət deyil. Model öyrənir ki, həftənin günləri, saatlar, hava şəraiti, bayram və ya iş günləri sərnişin axınına necə təsir göstərir.</li><li><strong>Proqnozlaşdırma:</strong> Keçmişin “təcrübəsini” tam mənimsədikdən sonra model artıq bu günə fokuslanır. Mövcud vəziyyəti (hazırkı saatı, günü və s.) dəyərləndirərək, statistik hesablamalar əsasında real zamanlı bir nəticə çıxarır.</li></ul><p>Məhz bu zəncirvari prosesin sayəsində sistem yüksək dəqiqliklə təxmin edə bilir ki: <em>“Bu gün, bu saatda, filan stansiyada sərnişin sıxlığı və yüklənmə səviyyəsi necə olacaq?”</em></p><p>Kinetix AI layihəsi üzərində işə başlayarkən ilk və ən vacib addımımız doğru məlumatları (datanı) tapmaq idi. Bakı öz nəqliyyat infrastrukturu, sərnişin yüklənməsi və insanların nəqliyyat vərdişləri baxımından olduqca unikal bir şəhərdir. Buna görə də qlobalda mövcud olan hər hansı standart bir məlumat dəstini (dataset) götürüb layihəmizə tətbiq etmək effektiv olmazdı. Azərbaycan reallığında sərnişinlərin davranış modelini yalnız yerli və real məlumatlar dəqiq əks etdirə bilərdi.</p><p>Sırf Bakı Metropoliteninə uyğun məlumat axtarışımız uğurla nəticələndi. Belə ki, İnnovasiya və Rəqəmsal İnkişaf Agentliyinin idarə etdiyi <a href="http://opendata.az"><strong>opendata.az</strong></a> (Açıq Məlumatlar Portalı) üzərindən “Bakı Metropoliteni” QSC tərəfindən yerləşdirilmiş rəsmi məlumat dəstini əldə etdik. Bu məlumat dəsti 2025-ci ilin əvvəlindən 2026-cı ilin 1 mart tarixinədək olan dövrdə stansiyalar üzrə gündəlik sərnişin axınını tam əhatə edir.</p><p><strong>Məlumatların Təbiəti və Toplanma Metodologiyası</strong></p><p>Bəs bu rəqəmlər necə formalaşır və nələri ifadə edir?</p><p>Gediş sayları sərnişinlərin metro stansiyalarının giriş turniketlərində etdikləri ödənişlər — həm fiziki kartlar, həm də mobil cihazlar vasitəsilə edilən NFC əsaslı təmassız ödənişlər əsasında qeydə alınır. Lakin burada nəzərə alınmalı vacib bir nüans var: hazırda Bakı Metrosunun çıxış turniketlərində təkrar identifikasiya (kart oxudulması) aparılmır.</p><p>Bu səbəbdən, əlimizdəki məlumatlar sərnişinlərin tam səfər zəncirini (A nöqtəsindən B nöqtəsinə getdiyini) deyil, sırf stansiyalar üzrə <strong>giriş intensivliyini və formalaşan ilkin yüklənməni</strong> göstərir.</p><p><strong>Məlumat Dəstinin (Dataset) Texniki Profili:</strong></p><p>İstifadə etdiyimiz məlumat dəstinin əsas göstəriciləri bunlardır:</p><ul><li><strong>Əhatə dairəsi:</strong> Bakı şəhəri</li><li><strong>İştirakçı / Mənbə:</strong> “K Group” MMC (BakıKart)</li><li><strong>Yenilənmə tezliyi:</strong> Ayda 1 dəfə</li><li><strong>Məlumatın strukturu (Sütunlar):</strong></li><li><strong>Tarix:</strong> <a href="http://xn--Gn-xka.ay.il">Gün.ay.il</a> formatında qeyd olunmuş zaman.</li><li><strong>Stansiya:</strong> Bakı Metropoliteninə aid stansiyanın adı.</li><li><strong>Gündəlik gediş sayı:</strong> Verilmiş gün ərzində həmin stansiyadan daxil olan sərnişinlərin ümumi sayı.</li></ul><h3>Məlumatların İşlənməsi və Hazırlıq Mərhələsi (Data Preprocessing)</h3><p>Uyğun məlumat mənbəyini müəyyən etdikdən sonra qarşımızda duran növbəti əsas məqsəd bu datanın işçi mühitə yüklənməsi, xətaların təmizlənməsi, manipulyasiyası və nəhayət, maşın öyrənməsi modeli üçün tam hazır hala gətirilməsi idi.</p><p>Açıq Məlumatlar Portalı məlumatları əldə etmək üçün bizə iki fərqli imkan təklif edirdi: API (Application Programming Interface) vasitəsilə sistemə birbaşa qoşulmaq və ya məlumatları ənənəvi CSV faylı şəklində yükləmək.</p><p><strong>API-dən CSV-yə Keçid: Texniki Qərarımız</strong> İlkin yanaşma olaraq, məlumat axınını maksimal dərəcədə avtomatlaşdırmaq məqsədilə datanı API vasitəsilə birbaşa portaldan çəkdik və üzərində ilkin əməliyyatlara başladıq. Lakin layihənin daha mürəkkəb mərhələsi olan “Feature Engineering” (yeni xüsusiyyətlərin yaradılması) prosesinə keçdikdə, API-nin dinamik təbiəti bəzi ləngimələr və struktur uyğunsuzluqları yaratmağa başladı.</p><p>Modelimizin daha stabil, sürətli və tam nəzarət edilə bilən bir infrastrukturda öyrədilməsini təmin etmək üçün praktik bir addım atdıq. API bağlantısını kənara qoyaraq, datanı statik CSV formatında endirdik. Ardından, prosesi Jupyter Notebook mühitinə daşıyaraq Python-un məlumat analizi alətləri vasitəsilə faylı oxutduq və datanı asanlıqla manipulyasiya edə biləcəyimiz strukturlaşdırılmış bir <em>DataFrame</em> halına gətirdik. Artıq məlumat dəstimiz ən dərin analizlər və modelin qurulması üçün tam etibarlı vəziyyətdə idi.</p><h3>Məlumatların Təmizlənməsi və Standartlaşdırılması (Data Cleaning)</h3><p>Məlumatları (dataset) işçi mühitimizə yüklədikdən sonra dərhal model qurmağa keçə bilməzdik. Çünki xam (raw) məlumatlar adətən daxilində xətalar, boşluqlar və fərqli formatlar barındırır. Buna görə də, növbəti mərhələmiz Kinetix AI-ın başa düşəcəyi qüsursuz və standartlaşdırılmış bir struktur yaratmaq oldu.</p><p>Yazdığımız xüsusi alqoritm (kod) vasitəsilə bu təmizləmə prosesini bir neçə addımda avtomatlaşdırdıq:</p><p><strong>1. Sütun Adlarının Standartlaşdırılması</strong></p><ul><li><strong>Nə etdik?</strong> Məlumat dəstindəki sütun adlarındakı böyük-kiçik hərfləri, lazımsız boşluqları və xüsusi simvolları təmizləyərək vahid bir formata (alt xəttli və kiçik hərflərlə) gətirdik. Həmçinin, sistemin sütun adlarını (İngilis və ya Azərbaycan dilində olmasından asılı olmayaraq) avtomatik tanıması üçün xüsusi axtarış məntiqi qurduq.</li><li><strong>Niyə etdik?</strong> Gələcəkdə portaldan yeni datalar çəkilərkən sütun adlarında ola biləcək hər hansı format dəyişikliyinin (məsələn, “Gediş Sayı” əvəzinə “gedis sayi” yazılması) sistemimizi çökdürməsinin qarşısını almaq üçün.</li></ul><p><strong>2. Data Tiplərinin Doğrulanması (Formatting)</strong></p><ul><li><strong>Nə etdik?</strong> Tarix sütununu sistemin anlaya biləcəyi rəsmi datetime (zaman) formatına çevirdik. Stansiya adlarının ətrafındakı görünməyən boşluqları kəsib atdıq. Sərnişin sayını isə sırf riyazi əməliyyatlar aparıla bilməsi üçün ədədi (numeric) formata keçirdik.</li><li><strong>Niyə etdik?</strong> Maşın öyrənməsi modelləri riyazi məntiqə əsaslanır. Tarixin mətn kimi yox, zaman kimi, sərnişin sayının isə sırf rəqəm kimi oxunması zaman oxu (time-series) üzrə analizlər aparmaq üçün ən vacib şərtdir.</li></ul><p><strong>3. Boşluqların Ağıllı Bərpası (Linear Interpolation)</strong></p><ul><li><strong>Nə etdik?</strong> Məlumatları əvvəlcə stansiyalar və tarixlər üzrə xronoloji ardıcıllıqla sıraladıq. Daha sonra əgər hər hansı bir stansiyada hansısa gün üzrə məlumat qeydə alınmayıbsa (boşluq varsa), bu boşluğu “Xətti İnterpolyasiya” (Linear Interpolation) metodu ilə doldurduq.</li><li><strong>Niyə etdik?</strong> Boş (NaN) dəyərlər süni intellekt modellərinin ən böyük düşmənidir və hesablamanı pozur. İnterpolyasiya vasitəsilə boş qalan günü sıfırla doldurmaq və ya silmək əvəzinə, sistemə həmin gündən əvvəlki və sonrakı günlərin sərnişin sayına baxaraq ən məntiqi rəqəmi riyazi olaraq təxmin edib yerinə yazmağı öyrətdik. Bu, datanın ümumi trendinin pozulmasının qarşısını aldı.</li></ul><p>Nəticə etibarilə, bu təmizləmə əməliyyatından sonra əlimizdə Kinetix AI-ın öyrənmə prosesi (model training) və yeni xüsusiyyətlərin çıxarılması (feature engineering) üçün tam hazır, xətasız və riyazi cəhətdən dayanıqlı bir Dataframe formalaşdı.</p><h3>Exploratory Data Analysis (EDA)</h3><p><strong>1. Məlumatların Strukturlaşdırılması (Canonicalization)</strong></p><p>Kodun ilk hissəsində biz fərqli mənbələrdən gələ biləcək sütun adlarını (məsələn: “tarix”, “date”, “stansiya”, “station”) vahid bir formata gətirdik.</p><ul><li><strong>Nə etdik?</strong> column_map vasitəsilə sütunları <strong>date</strong>, <strong>station_name</strong> və <strong>passenger_count</strong> olaraq standartlaşdırdıq.</li><li><strong>Niyə etdik?</strong> Kodun universal olması üçün. Datasetin sütun adları dəyişsə belə, bu məntiq onları tanıyır və analizi davam etdirir. Həmçinin, hour_of_day, day_name və month kimi yeni <strong>temporal</strong> sütunlar yaradaraq datanı daha detallı analiz üçün hazırladıq.</li></ul><p><strong>2. Basic Data Profiling (Statistik Xülasə)</strong></p><p>Çıxışdakı statistik rəqəmlər bizə Bakı metrosunun ümumi mənzərəsini göstərir:</p><ul><li><strong>Mean (23,014):</strong> Orta hesabla hər stansiyadan gündəlik 23 min sərnişin keçir.</li><li><strong>Max (77,392):</strong> Ən pik nöqtədə bir stansiyadan gün ərzində 77 mindən çox sərnişin daxil olub.</li><li><strong>Outlier Check:</strong> <strong>IQR (Interquartile Range)</strong> metodu ilə anomal sıçrayışları yoxladıq. Nəticədə 109 minlik limitdən yuxarı heç bir kəskin anomal sıçrayış tapılmadı, bu da datanın real və etibarlı olduğunu göstərir.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LxtyuZuMMnjiVIQDsY77Hw.png" /><figcaption><strong>Baku Metro Seasonality Analysis</strong></figcaption></figure><p>Bu iki qrafik sərnişin axınının həftəlik və aylıq ritmini izah edir.</p><ul><li><strong>Sol tərəf (Day of Week):</strong> Ən çox yüklənmə Çərşənbə axşamı (Tuesday) müşahidə olunur. Bazar günü (Sunday) isə sərnişin sayı kəskin şəkildə azalır (təxminən 25 mindən 15 minə düşür).</li><li><strong>Sağ tərəf (Month):</strong> Oktyabr və Dekabr ayları ən gərgin aylardır. Avqust ayı isə ilin ən sakin ayıdır. Bu məlumat modelin <strong>seasonality</strong> trendlərini öyrənməsi üçün təməl bazadır.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*f8JFSVmlKB7VoJdhgyb36w.png" /><figcaption><strong>Station Traffic Comparison</strong></figcaption></figure><p>Bu qrafik stansiyalar arasındakı “güc nisbətini” göstərir.</p><ul><li><strong>Top 10 Busiest:</strong> <strong>Koroğlu</strong>, <strong>28 May</strong> və <strong>20 Yanvar</strong> stansiyaları şəhərin əsas yüklənmə mərkəzləridir. Koroğlu stansiyası gündəlik 55 min+ sərnişinlə liderdir.</li><li><strong>Bottom 10 Least Busy:</strong> <strong>Memar Əcəmi-2</strong> və <strong>Bakmil</strong> stansiyaları ən az giriş edilən stansiyalardır.</li><li><strong>Məntiq:</strong> Bu fərqlilik modelə hər stansiya üçün fərdi çəki dərəcəsi (<strong>weight</strong>) təyin etməyə imkan verir.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ced01DzbCs-5XUCTgT2LkQ.png" /></figure><p><strong>1. Monthly Usage Trend (Yuxarı Sol: Bar Chart)</strong></p><p>Bu qrafik metronun il ərzindəki makro-ritmini göstərir.</p><ul><li><strong>Nəyi göstərir:</strong> Hər ay üzrə cəmi sərnişin sayını.</li><li><strong>Analiz:</strong> Qrafikdə <strong>“Summer Drop”</strong> (Yay düşüşü) və <strong>“Winter Peaks”</strong> (Qış zirvələri) aydın görünür. İyun, İyul və Avqust aylarında sərnişin sayı minimuma düşür. Bu, dərslərin bitməsi, insanların məzuniyyətə getməsi və şəhərin boşalması ilə izah olunur.</li><li><strong>Nəticə:</strong> Sentyabr ayından etibarən başlayan kəskin artım <strong>Academic Season</strong> (təhsil mövsümü) faktorunun model üçün nə dərəcədə həlledici olduğunu sübut edir.</li></ul><p><strong>2. Day of Week Usage (Yuxarı Sağ: Box Plot)</strong></p><p>Bu qrafik həftənin günləri üzrə sərnişin paylanmasını və məlumatın <strong>variance</strong> (dəyişkənlik) dərəcəsini göstərir.</p><ul><li><strong>Nəyi göstərir:</strong> Hər gün üzrə sərnişin sayının medianını, kvartillərini və kənar sapmalarını (<strong>outliers</strong>).</li><li><strong>Analiz:</strong> İş günləri (Bazar ertəsi — Cuma) bir-birinə çox yaxın və yüksək yüklənmə ilə xarakterizə olunur. Lakin Şənbə və xüsusilə Bazar günü sərnişin sayı kəskin aşağı düşür.</li><li><strong>Nəticə:</strong> Qrafikdəki “qutuların” (boxes) ölçüsü bizə göstərir ki, iş günlərində sərnişin axını daha stabil və proqnozlaşdırıla biləndir, həftəsonları isə bir az daha fərqli (müxtəlif) ola bilir.</li></ul><p><strong>3. Average Passenger Density: Month vs. Day of Week (Aşağı Sol: Heatmap)</strong></p><p>Bu layihənin ən granular (detallı) vizuallaşdırmasıdır.</p><ul><li><strong>Nəyi göstərir:</strong> Ayların və həftənin günlərinin kəsişməsində orta sərnişin sayını.</li><li><strong>Analiz:</strong> Rəng nə qədər tünd qırmızıdırsa, sıxlıq bir o qədər yüksəkdir. Göründüyü kimi, Dekabr və Noyabr aylarının iş günləri (təqvim üzrə 11 və 12-ci aylar) sistemin ən pik nöqtələridir (təxminən 30,000+ sərnişin/stansiya).</li><li><strong>Nəticə:</strong> Bu <strong>Heatmap</strong> bizə imkan verir ki, ilin hansı spesifik günlərində metronun ən yüksək təzyiq altında olduğunu dəqiq müəyyən edək. Məsələn, Avqust ayının Bazar günü ilin ən sakin vaxtıdır.</li></ul><p><strong>4. Anomaly Detection: Total Daily Passengers (Aşağı Sağ: Time-Series Line Chart)</strong></p><p>Bu qrafik sistemin “sağlamlıq yoxlamasıdır”.</p><ul><li><strong>Nəyi göstərir:</strong> Gündəlik sərnişin sayını, 7 günlük sürüşən ortalamanı (<strong>7-Day Rolling Avg</strong>) və Z-score əsaslı anomaliyaları.</li><li><strong>Analiz:</strong> Göy xətt kəskin dalğalanmaları, qırmızı qırıq xətt isə ümumi trendi göstərir. Qırmızı nöqtələr isə <strong>Z-score &gt;= 2.5</strong> olan günləri, yəni statistik olaraq gözlənilməz, qeyri-adi dərəcədə yüksək və ya aşağı sərnişin axını olan günləri işarələyir.</li><li><strong>Nəticə:</strong> Bu anomaliyalar adətən fövqəladə hallar, kütləvi tədbirlər və ya bayram tətilləri ilə üst-üstə düşür. Bu, Kinetix AI modelinə öyrədir ki, hansı günləri “normal” qəbul etməli, hansılarını isə “istisna” (special case) kimi dəyərləndirməlidir.</li></ul><p><strong>Yekun Nəticə</strong></p><p>Bu EDA mərhələsi bizə sübut etdi ki, Bakı metrosunun datası həm <strong>temporal</strong> (zamanla bağlı), həm də <strong>spatial</strong> (stansiya ilə bağlı) çox güclü qanunauyğunluqlara malikdir. Biz artıq bilirik ki:</p><ol><li>Yay və təhsil mövsümü arasındakı fərq kəskindir.</li><li>Bazar günü tamamilə fərqli bir rejimdir.</li><li>Koroğlu və 28 May kimi stansiyalar model üçün prioritetdir.</li></ol><p>İndi biz tam əminliklə növbəti mərhələyə <strong>Feature Engineering</strong> və <strong>Model Training</strong> hissəsinə keçə bilərik, çünki datanın bizə nə demək istədiyini artıq vizual olaraq başa düşmüşük.</p><h3>Feature Engineering</h3><p>Təmizlənmiş data modelin işləməsi üçün yetərli olsa da, yüksək dəqiqlik (accuracy) əldə etmək üçün kifayət deyildi. Süni intellektə sərnişinlərin davranış modelini, şəhərin ritmini və təkrarlanan vərdişləri başa salmaq lazım idi. Bu məqsədlə xüsusi bir KinetixFeatureEngineer alqoritmi (sinfi) yazaraq datamızı aşağıdakı məntiqi amillərlə zənginləşdirdik:</p><p><strong>1. Zaman və Təqvim Xüsusiyyətlərinin Çıxarılması (Temporal Features)</strong></p><ul><li><strong>Nə etdik?</strong> Sadə “Tarix” sütununu parçalayaraq yeni sütunlar yaratdıq: həftənin hansı günüdür, ayın neçəsidir, iş günüdür yoxsa həftəsonu.</li><li><strong>Niyə etdik?</strong> Çünki Bakı metrosunda bazar ertəsi səhər saatlarındakı axınla bazar gününün axını tamamilə fərqlidir. Model bu fərqi artıq riyazi olaraq görə bilir.</li></ul><p><strong>2. Yerli Kontekst və Təhsil Mövsümü (Local Context)</strong></p><ul><li><strong>Nə etdik?</strong> Kodun içinə xüsusi olaraq Azərbaycandakı rəsmi qeyri-iş günlərini (Novruz tətili, Yeni il və s.) və ölkəmizin akademik təqvimini (payız və yaz semestrləri) daxil etdik.</li><li><strong>Niyə etdik?</strong> Sərnişin axınının böyük bir qismi tələbələrdən ibarətdir. Modelin tətildə olan günlərlə dərs günlərini ayırd etməsi qəfil sıxlıq düşüşlərini və ya artışlarını doğru təxmin etməsi üçün kritik əhəmiyyət daşıyır.</li></ul><p><strong>3. Stansiyaların Xarakteristikası (Station Typology)</strong></p><ul><li><strong>Nə etdik?</strong> Bütün stansiyaları eyni tərəziyə qoymadıq. Alqoritmə öyrətdik ki, “28 May” və ya “Memar Əcəmi” tranzit/keçid (transfer hub), “Elmlər Akademiyası” və “Gənclik” isə tələbə mərkəzli (student hub) stansiyalardır.</li><li><strong>Niyə etdik?</strong> Bu təsnifat modelə hər stansiyanın spesifik yüklənmə səbəbini anlamağa və fərdi ssenarilər qurmağa kömək edir.</li></ul><p><strong>4. Keçmişin Yaddaşı və Gecikmə Xüsusiyyətləri (Lag &amp; Rolling Features)</strong></p><ul><li><strong>Nə etdik?</strong> Ən vacib ML gedişlərimizdən birini edərək “Zaman Sıraları” (Time-Series) məntiqini tətbiq etdik. Modelə hər gün üçün 3 yeni sualın cavabını əlavə etdik:</li><li><em>Dünən eyni vaxtda sərnişin sayı nə qədər idi? (lag_1_day)</em></li><li><em>Düz 1 həftə əvvəl eyni gündə vəziyyət necə idi? (lag_7_days)</em></li><li><em>Son 3 günün orta axın trendi nədir? (rolling_mean_3_days)</em></li><li><strong>Niyə etdik?</strong> Süni intellekt bu “keçmişə baxış” rəqəmlərini oxuyaraq bugünkü sərnişin sayını daha inamla proqnozlaşdırır. Məsələn, əgər son 3 gündə artım trendi varsa, model bugünü də o trendə uyğun hesablayır.</li></ul><p><strong>5. Maşın Dili üçün Rəqəmsallaşdırma (Encoding)</strong></p><ul><li><strong>Nə etdik?</strong> Modellər hərfləri və sözləri deyil, rəqəmləri anlayır. Ona görə də stansiya adlarını xüsusi kodlaşdırma (One-hot encoding) vasitəsilə sıfır və birlərdən (0, 1) ibarət riyazi matrislərə çevirdik.</li></ul><p><strong>Yekun Nəticə:</strong> Bu prosesin sonunda bizim əlimizdə sadəcə “Tarix” və “Gediş Sayı” olan kasıb bir cədvəl yox, Kinetix AI-ın hər bir sərnişinin addımını və şəhərin nəbzi ilə ayaqlaşan qaydalarını anlaya biləcəyi 14 fərqli xüsusiyyətdən ibarət çox zəngin bir <strong>“Öyrənmə Matrisi” (Feature Matrix)</strong> formalaşdı.</p><h3>Chronological Train-Test Split</h3><p>Süni intellekt modelinin (Kinetix AI) öyrənmə prosesinə başlamazdan əvvəl, əlimizdəki zənginləşdirilmiş məlumat dəstini iki hissəyə ayırmalı idik: Modelin keçmiş təcrübələrdən “öyrənməsi” üçün <strong>Təlim (Train)</strong> və öyrəndiklərini gələcək üzərində sınaması üçün <strong>Test</strong> məlumatları.</p><p>Bu mərhələdə standart təsadüfi bölünmə (random split) yerinə, sırf zaman ardıcıllığına əsaslanan çox qəti bir xronoloji bölünmə (Strict Chronological Split) arxitekturası qurduq:</p><p><strong>1. Qəti Zaman Sıralaması (Strict Temporal Sorting)</strong></p><ul><li><strong>Nə etdik?</strong> Bütün məlumatları ilk gündən son günə (və saata) qədər xronoloji ardıcıllıqla düzdük.</li><li><strong>Niyə etdik?</strong> Zaman sıralı (Time-series) məlumatlarda keçmiş gələcəyə təsir edir. Məlumatların qarışmaması və ardıcıllığın qorunması sistemin düzgün trend tutması üçün şərtdir.</li></ul><p><strong>2. Hədəfin və Öyrənmə Matrisinin Ayrılması (Target &amp; Feature Matrix)</strong></p><ul><li><strong>Nə etdik?</strong> Təxmin etmək istədiyimiz əsas hədəfi — sərnişin sayını (y) sistemdən ayırdıq. Yerdə qalan bütün məlumatlardan isə modelin riyazi olaraq anlaya bilməyəcəyi mətn tipli sütunları (orijinal tarix, stansiya adları) sildik və yalnız əvvəlki mərhələdə hazırladığımız rəqəmsal xüsusiyyətləri (X) saxladıq.</li><li><strong>Niyə etdik?</strong> Modelə “cavabı” (y) və &quot;ipuçlarını&quot; (X) ayrı-ayrı verməliyik ki, o, ipuçlarına baxaraq cavabı tapmağı öyrənsin. Həmçinin, alqoritmlər yalnız rəqəmlərlə işlədiyi üçün təmizlənmiş bir &quot;riyazi matris&quot; formalaşdırmaq məcburidir.</li></ul><p><strong>3. Xronoloji 80/20 Bölünməsi (Index-Based Splitting)</strong></p><ul><li><strong>Nə etdik?</strong> Məlumatları təsadüfi olaraq deyil, indeks (zaman) oxu üzrə kəsdik. İlk 80%-lik xronoloji hissəni modelin öyrənməsi (Train), son 20%-lik hissəni (gələcəyi) isə modelin imtahan edilməsi (Test) üçün ayırdıq.</li><li><strong>Niyə etdik? (Data Leakage-in qarşısının alınması):</strong> Əgər datanı təsadüfi bölsəydik, model gələcəkdəki bir hadisənin məlumatını alıb keçmişi proqnozlaşdırmaq üçün istifadə edə bilərdi. Buna Data Science-da “Məlumat sızması” (Data Leakage) deyilir. Xronoloji bölünmə ilə biz modelin qətiyyən “gələcəyə baxmasının” qarşısını aldıq. Kinetix AI yalnız keçmişi görərək gələcəyi təxmin etməyə məcbur edildi.</li></ul><p><strong>4. Validasiya və Yoxlanış (Validation Check)</strong></p><ul><li><strong>Nə etdik?</strong> Kodun sonuna xüsusi bir yoxlanış bloku əlavə etdik. Bu blok Təlim məlumatlarının bitdiyi tarixlə Test məlumatlarının başladığı tarixi müqayisə edərək aralarında heç bir kəsişmənin olmadığını (Strict non-overlap check) təsdiqlədi.</li></ul><p><strong>Yekun Nəticə:</strong> Artıq əlimizdə tam təhlükəsiz, zaman məntiqinə zidd olmayan, gələcəyə sızma ehtimalı sıfıra endirilmiş mükəmməl bir öyrənmə mühiti (Train) və görünməz sınaq mühiti (Test) var. Model artıq öyrədilməyə (Training) tam hazırdır.</p><h3>Model Selection — Why XGBoost?</h3><p><strong>Preprocessing</strong> və <strong>Feature Engineering</strong> mərhələlərindən sonra qarşımızda duran ən kritik sual bu idi: Hansı alqoritm Bakı metrosunun bu mürəkkəb sərnişin axınını ən dəqiq şəkildə proqnozlaşdıra bilər? Müxtəlif klassik və müasir yanaşmaları analiz etdikdən sonra <strong>XGBoost (Extreme Gradient Boosting)</strong> modelini seçdik. Bu seçimin arxasında duran əsas səbəblər bunlardır:</p><p><strong>1. Handling Non-linear Relationships</strong> Bakı metrosundakı sərnişin sıxlığı sadə, xətti bir artımla baş vermir. Məsələn, “Yağışlı hava + Monday + Academic Season” kombinasiyası sərnişin sayına qeyri-adi dərəcədə təsir edə bilər. XGBoost bu cür mürəkkəb və bir-biri ilə kəsişən faktorlar arasındakı <strong>non-linear</strong> əlaqələri tutmaqda dünyada ən uğurlu alqoritmlərdən biri hesab olunur.</p><p><strong>2. Robust Performance for Time-Series Data</strong> XGBoost, bizim hazırladığımız <strong>lag features</strong> və <strong>rolling means</strong> xüsusiyyətlərini çox effektiv emal edir. O, keçmişdəki trendləri (məsələn, <strong>lag_7_days</strong>) indiki zamanla müqayisə edərək proqnozlarını maksimum dərəcədə stabilləşdirir.</p><p><strong>3. Protection Against Overfitting</strong> Zəif modellər çox vaxt keçmiş məlumatları sadəcə “əzbərləyir” və yeni, görülməmiş məlumatlarda səhv proqnozlar verir. XGBoost isə daxili <strong>Regularization</strong> (L1 və L2) mexanizmləri sayəsində datanı əzbərləmir, onun məntiqini öyrənir. Bu da Kinetix AI-ın real dünyada, yəni <strong>test set</strong> üzərində daha stabil nəticələr göstərməsini təmin edir.</p><p><strong>4. Speed and Resource Efficiency</strong> Metrodakı <strong>real-time</strong> sıxlıq proqnozları saniyələr içində hesablanmalıdır. XGBoost həm <strong>training</strong>, həm də <strong>inference</strong> sürətinə görə rəqib alqoritmlərdən (məsələn, Random Forest və ya Deep Learning modellərindən) qat-qat sürətlidir. Bu da tətbiqimizin gələcəkdə “real-time” işləməsi üçün bizə böyük üstünlük qazandırır.</p><p><strong>5. Model Interpretability (Feature Importance)</strong> XGBoost-un bizə təqdim etdiyi ən böyük üstünlük şəffaflıqdır. <strong>Feature Importance</strong> analizi vasitəsilə o, bizə proqnoz verərkən hansı faktorun (məsələn, həftənin günü, yoxsa keçən həftəki sərnişin sayı) daha çox rol oynadığını göstərir. Bu, Kinetix AI-ın sadəcə bir “black box” deyil, hər qərarını izah edə bilən ağıllı bir sistem olmasını təmin edir.</p><p><strong>Yekun Nəticə:</strong> XGBoost seçimi ilə biz Kinetix AI-ın həm <strong>accuracy</strong>, həm sürət, həm də <strong>reliability</strong> göstəricilərini sığortalamış olduq. Bu model Bakı metrosunun mürəkkəb sərnişin xəritəsini rəqəmlərlə oxuyan ən peşəkar analitik mexanizmdir.</p><p>(Burada bir şey qeyd edə bilərəm ki, Kinetix AI həmçinin anlıq hava haqqında proqnoza da baxaraq, hansı günlərdə, hansı hava şəraitlərində ictimai nəqliyyatda sıxlığın necə olduğunu predict edə bilsin)</p><h3>Model Training &amp; Intelligence Optimization</h3><p>Hazırladığımız bütün datanı <strong>XGBoost</strong> modelinə təqdim etdik və ona Bakı metrosu üçün ən doğru təxminləri necə verəcəyini öyrətdik. Bu proses sadəcə bir düyməyə basmaq deyildi; biz modelin hər bir addımını, yəni <strong>Hyperparameter Configuration</strong> hissəsini xüsusi bir strategiya ilə qurduq:</p><p><strong>1. “Tələsmədən Öyrən” Strategiyası (Learning Rate &amp; Estimators)</strong></p><p>Modelə 1000 fərqli qərar vermə imkanı (<strong>n_estimators=1000</strong>) tanıdıq, lakin ona bir tapşırıq verdik: “Hər bir addımda çox kiçik öyrənmə sürəti ilə hərəkət et (<strong>learning_rate=0.05</strong>)”.</p><ul><li><strong>Niyə?</strong> Çünki süni intellekt tələsdikdə məlumatdakı təsadüfi “küy”ləri (<strong>noise</strong>) əsl trendlərlə qarışdırır. Kiçik addımlarla öyrənmək modelin daha dərindən düşünməsinə və sərnişin axınındakı incə detalları (məsələn, yağışlı bir bazar ertəsi ilə günəşli bir bazar ertəsi arasındakı fərqi) daha yaxşı tutmasına kömək edir.</li></ul><p><strong>2. Dərinlik və Sabitlik Balansı (Complexity Control)</strong></p><p>Hər bir qərar ağacının dərinliyini 6 səviyyə ilə məhdudlaşdırdıq (<strong>max_depth=6</strong>). Eyni zamanda, modelə hər dəfə öyrənərkən məlumatın və xüsusiyyətlərin yalnız 80%-ni görməyə icazə verdik (<strong>subsample</strong> &amp; <strong>colsample_bytree = 0.8</strong>).</p><ul><li><strong>Nəticə:</strong> Bu, modelin “əzbərçi” olmasının qarşısını alır. O, eyni şeyi təkrar-təkrar görmək əvəzinə, fərqli ssenarilərə baxa-baxa daha dayanıqlı (<strong>Robust</strong>) bir məntiq inkişaf etdirir. Biz buna <strong>Data Science</strong> dilində <strong>Overfitting</strong>dən qorunmaq deyirik.</li></ul><p><strong>3. Early Stopping: Modelin “Pik” Nöqtəsini Tapmaq</strong></p><p>Layihənin ən “ağıllı” addımlarından biri <strong>early_stopping_rounds=50</strong> əmrini vermək oldu.</p><ul><li><strong>Necə işlədi?</strong> Model öyrənməyə başladı və hər addımda özünü həm <strong>Train Set</strong>, həm də daha öncə görmədiyi <strong>Validation Set</strong> üzərində test etdi. O gördü ki, 116-cı addımdan (<strong>best_iteration=116</strong>) sonra artıq yeni bir şey öyrənmir, əksinə, datanı əzbərləməyə başlayaraq xəta payını artırır.</li><li><strong>Qərar:</strong> Sistem özü avtomatik olaraq orada dayandı. Bu, bizə həm zaman qənaəti təmin etdi, həm də modelin real həyatda səhv etmə ehtimalını minimuma endirdi.</li></ul><p><strong>4. Uğur Göstəricisi: 2,331 RMSE Nəyi İfadə Edir?</strong></p><p>Nəticədə əldə etdiyimiz <strong>2,331 RMSE (Root Mean Squared Error)</strong> skoru modelimizin “imtahan qiyməti”dir.</p><ul><li>Bu rəqəm bizə deyir ki, Kinetix AI hər bir stansiya üzrə minlərlə sərnişin axınını təxmin edərkən orta hesabla cəmi 2,331 nəfərlik bir sapma ilə işləyir.</li><li>Metronun ümumi sərnişin həcmini nəzərə alsaq, bu, modelin olduqca yüksək dəqiqliklə (<strong>Accuracy</strong>) Bakı metrosunun nəbzini tutduğunu sübut edir.</li></ul><p>Model artıq təkcə öyrədilməyib, həm də öz imtahanından uğurla keçib. Cəmi 1934 fərqli ssenari üçün proqnozlar (<strong>Predictions</strong>) artıq hazırdır. Kinetix AI artıq sadə bir proqram deyil, Bakı metrosundakı sərnişin sıxlığını saatlar, günlər öncədən hiss edə bilən peşəkar bir “analitik”dir.</p><h3>Model Evaluation &amp; Performance Analytics</h3><p><strong>1. Evaluation Metrics:</strong></p><p>Modelin performansını ölçmək üçün istifadə etdiyimiz üç əsas metrik Kinetix AI-ın nə dərəcədə etibarlı olduğunu göstərir:</p><ul><li><strong>MAE (Mean Absolute Error) — 1,170.431:</strong> Bu göstərici proqnozlaşdırılan sərnişin sayı ilə real sərnişin sayı arasındakı orta mütləq fərqi ifadə edir. Bakı metrosunun bəzi stansiyalarında gündəlik gediş sayının 60,000-dən çox olduğunu nəzərə alsaq, orta hesabla cəmi 1,170 sərnişin yanılma payı modelin <strong>High Precision</strong> (yüksək dəqiqlik) ilə işlədiyini sübut edir.</li><li><strong>RMSE (Root Mean Squared Error) — 2,331.786:</strong> RMSE böyük xətaları daha ağır cəzalandıran bir metrikdir. RMSE-nin MAE-dən yüksək olması o deməkdir ki, bəzi spesifik saatlarda (məsələn, gözlənilməz pik saatlarda) xəta payı ortalamadan bir qədər yüksək ola bilir. Lakin bu rəqəmin 2,300 ətrafında sabitlənməsi modelin <strong>Overfitting</strong> (əzbərləmə) etmədiyini və <strong>Generalization</strong> qabiliyyətinin yüksək olduğunu göstərir.</li><li><strong>R² (R-Squared) — 0.9859:</strong> Bu, modelin ən uğurlu göstəricisidir. 0.9859 o deməkdir ki, Bakı metrosundakı sərnişin axınındakı dəyişkənliyin (<strong>Variance</strong>) <strong>98.6%-i</strong> Kinetix AI tərəfindən tam dəqiqliklə izah olunur. Bu, zaman sıraları proqnozlaşdırılmasında çox nadir və yüksək nəticə hesab olunur.</li></ul><p><strong>2. Feature Importance:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1Qh3akwO_lDsRV8Y0JEkKg.png" /><figcaption>Kinetix AI: Top 15 Decision Factors for passenger density</figcaption></figure><p>Bu qrafik bizə modelin sərnişin sayını təxmin edərkən hansı faktorlara üstünlük verdiyini göstərir:</p><ul><li><strong>Əsas Faktor (rolling_mean_3_days):</strong> Model sərnişin sayını müəyyən edərkən 36.1% payla ən çox son 3 günün ortalama trendinə güvənir. Bu, sistemin qısamüddətli dinamikaya dərhal uyğunlaşdığını göstərir.</li><li><strong>Mövsümi Təsir (lag_7_days):</strong> 17.3% payla ikinci yerdə keçən həftənin eyni gününün göstəricisi gəlir. Bu, modelin həftəlik <strong>Seasonality</strong> (mövsümilik) trendini çox güclü şəkildə mənimsədiyini sübut edir.</li><li><strong>Spesifik Stansiya Təsiri (station_28_May):</strong> Maraqlıdır ki, “28 May” stansiyası özlüyündə bir faktor kimi 16.3% əhəmiyyət kəsb edir. Bu, modelin şəhərin mərkəzi tranzit qovşağındakı (<strong>Transfer Hub</strong>) spesifik yüklənmə modelini digər stansiyalardan fərqləndirdiyini göstərir.</li><li><strong>Local Context:</strong> Bayram günləri (is_holiday_az) və akademik mövsümün (is_academic_season) də modelin qərarlarına birbaşa təsir etməsi Kinetix AI-ın yerli reallıqları nəzərə alan bir <strong>Context-Aware</strong> model olduğunu təsdiqləyir.</li></ul><p><strong>3. Actual vs. Predicted:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bh4LFQEIiBG75iKi7v-TOg.png" /><figcaption>Baku Metro: Real-time actual vs Predicted Passanger Flow</figcaption></figure><p>Bu qrafik modelin real həyatdakı sınağını vizual olaraq əks etdirir:</p><ul><li>Göy (Actual) və narıncı (Predicted) xətlər demək olar ki, sinxron hərəkət edir. Model sərnişin sayındakı kəskin artışları (peaks) və azalma nöqtələrini (troughs) tam vaxtında tutur.</li><li><strong>Trend Analizi:</strong> Diqqət etsəniz, model hətta kəskin sıçrayışların baş verdiyi günlərdə belə trayektoriyanı itirmir. Bu, modelin <strong>Time-Series Alignment</strong> (zaman sırası düzləndirilməsi) məsələsini mükəmməl həll etdiyini və real-time rejimdə işləməyə hazır olduğunu göstərir.</li></ul><p><strong>4. Residual Analysis: Xətaların Paylanması</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8Z21YK0wDplMaxZLFScAeA.png" /><figcaption>Kinetix Error Distribution</figcaption></figure><p>Xətaların analizi (<strong>Residuals Analysis</strong>) modelin “sağlamlığını” yoxlamaq üçün ən texniki üsuldur:</p><ul><li><strong>Normal Distribution:</strong> Xətaların paylanması qrafiki tam bir “zəngvari” (<strong>Bell Curve</strong>) forma yaradır və mərkəzi “0” nöqtəsindədir.</li><li><strong>Unbiased Prediction:</strong> Xətaların mərkəzinin 0-da olması modelin <strong>Unbiased</strong> (qərəzsiz) olduğunu sübut edir. Yəni model nəticələri sistematik olaraq nə yuxarı, nə də aşağı yuvarlaqlaşdırmır; səhvlər tamamilə təsadüfidir və minimaldır.</li><li><strong>Error Density:</strong> Xətaların böyük əksəriyyətinin -2500 ilə +2500 aralığında sıxlaşması (minlərlə sərnişin axını daxilində) sistemin stabil işlədiyini təsdiq edir.</li></ul><p>Bu texniki analizlər sübut edir ki, Kinetix AI artıq sadəcə bir proqnozlaşdırma aləti deyil, Bakı metrosunun sərnişin axınını <strong>98.6%</strong> dəqiqliklə anlayan və təsvir edən güclü bir <strong>Analitik İnfrastruktur</strong>dur.</p><p>Növbəti mərhələdə bu proqnozları stansiya tutumları (<strong>Station Capacity</strong>) ilə kəsişdirərək, sərnişinlər üçün real-zamanlı “Sıxlıq Xəritəsi” (Density Heatmap) və “Komfort Səviyyəsi” (Comfort Band) hesabatlarını hazırlamağa tam hazırıq.</p><h3>Bunlara baxın:</h3><ol><li><a href="https://www.kaggle.com/models/qurbanlifeyzullayev/baku-metro-passenger-flow-forecasting-model">https://www.kaggle.com/models/qurbanlifeyzullayev/baku-metro-passenger-flow-forecasting-model</a></li><li><a href="https://github.com/qurbaneliii/kinetix-flow/blob/main/Kinextix_AI_baku_metro.ipynb">https://github.com/qurbaneliii/kinetix-flow/blob/main/Kinextix_AI_baku_metro.ipynb</a></li><li><a href="https://opendata.az/en/@baki-metropoliteni/stansiyalar-uzre-gundelik-sernisin-gedislerinin-sayi">https://opendata.az/en/@baki-metropoliteni/stansiyalar-uzre-gundelik-sernisin-gedislerinin-sayi</a></li><li><a href="https://github.com/qurbaneliii/kinetix-flow">https://github.com/qurbaneliii/kinetix-flow</a></li><li><a href="https://github.com/telebehub/kinetix">https://github.com/telebehub/kinetix</a></li><li><a href="https://github.com/qurbaneliii">https://github.com/qurbaneliii</a></li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=62f4d5335ca6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why the Same GPT Feels Smarter in Codex Than in Copilot]]></title>
            <link>https://gurbanali.medium.com/why-the-same-gpt-feels-smarter-in-codex-than-in-copilot-e4754ecb7eb7?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/e4754ecb7eb7</guid>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[chatgpt]]></category>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <category><![CDATA[github-copilot]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Fri, 09 Jan 2026 16:15:32 GMT</pubDate>
            <atom:updated>2026-01-09T16:15:32.239Z</atom:updated>
            <content:encoded><![CDATA[<p>For the last few years, GitHub Copilot has become a non-negotiable part of how I write code. The reason is straightforward: as a student, I can comfortably benefit from the student perks GitHub offers for Copilot. And Copilot especially with Claude Opus 4.5 and earlier Claude models, has rarely disappointed me. Claude’s coding ability, the quality of what it produces, and its general problem-solving style tend to satisfy most people who use it. Even when I’m working in an IDE like Antigravity, Claude Opus 4.5 can deliver genuinely strong results in vibe-coding mode.</p><p>Of course, Copilot’s lineup isn’t only Claude. It also includes models like GPT-5, GPT-5.1, GPT-5.2, and even older options such as GPT-4.1, and I’ve used them on and off as well. But if I’m being honest, GPT inside Copilot never fully matched my expectations. I assumed it wasn’t a “the model is bad” problem it felt more like an implementation and integration problem.</p><h4>An unexpected discovery</h4><p>Today, I ran into something I didn’t expect. I installed the ChatGPT Codex extension for VS Code (available to ChatGPT Plus subscribers) and gave it a real test. At first, it looked ordinary: same GPT models, same VS Code environment, same kinds of tasks. Then the results hit differently.</p><p>Even though the GPT models I used in Copilot and the ones I selected in ChatGPT Codex were, on paper, the same, the performance gap was obvious. This wasn’t a tiny nuance. Codex’s GPT output was consistently, noticeably better than what I was getting from Copilot.</p><h4>Quick experiment: Same prompt, same model, different result</h4><p>I didn’t want to overreact to a one-off impression, so I ran a small experiment. I tested the same coding problem, the same prompt, and the same GPT model (GPT-5) on both platforms. The results were more interesting than I expected.</p><p><strong>Test setup</strong></p><ul><li>Same task: building a complex pandas data transformation + visualization pipeline in a Data Science context</li><li>Same prompt: clear instructions and the same context</li><li>Same model: GPT-5</li><li>Different platforms: GitHub Copilot vs ChatGPT Codex</li></ul><p>In GitHub Copilot, the solution leaned generic more like a template and sometimes drifted away from my actual context. The pandas operations it suggested were basic, and they didn’t line up cleanly with my dataset’s structure. ChatGPT Codex, on the other hand, produced code that felt more tailored, more optimized, and more aligned with how I’d actually use it in a data science workflow. Code quality, data-handling best practices, error handling, and even the style (matching a Jupyter notebook flow) were clearly stronger in Codex.</p><p>That pushed me to dig deeper and do a bit of investigation.</p><h4>So what’s driving the performance gap?</h4><p>Here are the main differences I ended up focusing on:</p><p><strong>Model optimization and fine-tuning:</strong> It’s plausible that OpenAI tunes or configures models inside ChatGPT Codex more specifically for coding. In Copilot, the same models may be set up in a more general way. Because Codex runs inside OpenAI’s own product stack, they likely have more direct control over how the model behaves end-to-end.</p><p><strong>API implementation and system architecture:</strong> The two platforms may differ in how they reach and run the model. Codex is part of OpenAI’s ecosystem, so it can interact with the model in a more “native” way. Copilot, operating inside Microsoft’s infrastructure, can introduce extra layers latency, routing, transformations; that can subtly affect how prompts and context are processed. Those layers can also introduce small context losses or prompt reshaping.</p><p><strong>Context window and token management:</strong> One detail that stood out is context handling. Codex seems to manage context in a smarter way for understanding code and intent open files, project structure, and potentially even repo-level signals can be packaged more effectively. In Copilot, similar signals may reach the model in a more limited or compressed form.</p><p><strong>Prompt engineering and system instructions:</strong> This may be the most important factor. The system-level instructions behind Codex appear geared specifically for coding: fewer hallucinations, better adherence to conventions, and stronger error handling. Inside Copilot, GPT may be operating under more general instructions, which can lead to more generic output.</p><p><strong>Response behavior and caching:</strong> The way responses are produced and reused can matter. If Codex uses more aggressive or smarter caching and retrieval for similar contexts, it can improve perceived consistency and quality. Copilot’s approach may be more conservative.</p><p><strong>Model versioning and deployment:</strong> Even under the same model name (for example, GPT-5.2), there can be different deployed variants. OpenAI may ship the freshest, most optimized deployments to Codex first. Copilot, due to partnership constraints and additional safety/compliance requirements, could sometimes be a step behind or run a slightly adjusted build.</p><h4>Practical takeaways</h4><p>My main conclusion is this: <strong>the same AI model can behave very differently across platforms, and the gap isn’t just “small implementation details” — it can come from the full stack.</strong></p><p>A few lessons I’m taking with me:</p><p><strong>Platform–model fit matters:</strong> Choosing the model matters, but how and where that model is deployed matters even more. When OpenAI runs its own models inside its own environment, it naturally has an advantage; technically and product-wise.</p><p><strong>Abstraction layers have a cost:</strong> Copilot’s extra layers don’t just affect latency. They can influence context delivery, prompt shaping, and overall model behavior. Even if those layers are invisible, they show up in the output.</p><p><strong>Why Claude feels so strong in Copilot:</strong> This experience also made one thing clearer: Claude’s success inside Copilot likely isn’t random. It may reflect stronger optimization between Anthropic and Microsoft or simply that Claude is more robust in this kind of IDE workflow.</p><p>After seeing these results, I’m going to lean even harder into a hybrid setup.</p><h4>Recommendations</h4><p>This isn’t just “which tool is better?” It’s a strategy question.</p><p><strong>My current approach</strong></p><ul><li><strong>GitHub Copilot + Claude</strong> for my main workflow: the Microsoft ecosystem experience, GitHub integration, and Claude’s reliable code quality. For refactoring, architectural decisions, and complex problem solving, Claude is hard to replace.</li><li><strong>ChatGPT Codex + GPT-5/5.1</strong> for specific situations: tasks where OpenAI models shine, experimental work, or very fast prototyping — Codex feels like the most natural home for GPT in those moments.</li></ul><p><strong>Practical advice for other developers</strong></p><ul><li>Prefer “native” pairings when possible: OpenAI models on OpenAI’s platform; Claude in Copilot or directly via Claude.ai.</li><li>Test the same model across platforms. Simple experiments can reveal surprising gaps. In practice, what looks best “on paper” often behaves differently in real workflows.</li><li>Pay attention to context management. Understand what your tool actually sends: open files, project structure, workspace settings — all of it can shift output quality.</li><li>Factor in tool-switching overhead. Switching costs time and mental energy. Sometimes 80% solved in one place beats switching; other times switching is worth it to land the full 100%.</li></ul><p><strong>Looking ahead</strong><br>This space is moving fast, and these gaps may change. Copilot may improve GPT integration, and new model architectures will keep showing up.</p><p>Personally, I don’t think the future is one monolithic coding assistant. I think it’s <strong>smart orchestration </strong>systems that combine multiple models and select the right one based on context.</p><h4>Conclusion</h4><p>When choosing AI coding tools, “which model is stronger?” is not the whole question. In the real world, the equation looks more like this:</p><p><strong>Model + Platform + Implementation = Performance</strong></p><p>This experience showed me that even with the same prompt and the same model, outcomes can differ sharply between platforms. The stronger results I saw from GPT inside ChatGPT Codex compared to “the same GPT” inside Copilot suggest that invisible factors system architecture, prompt design, context management, and deployment strategy matter a lot.</p><p>My advice is simple: don’t get stuck on a single viewpoint. Instead of committing blindly to one tool or model, run small experiments in your real workflow, compare results, and stick with what actually performs best for you. Sometimes the best answer isn’t the most powerful model it’s the platform where that model is integrated and optimized the best.</p><p>As developers, our job isn’t only to write code. It’s also to choose the right tools, configure them well, and squeeze real value out of them. Tech is full of things that look great in a chart but behave differently in practice. That’s why the most reliable benchmark isn’t marketing or comparison tables, it’s real testing, real usage, and real experience.</p><h4>References:</h4><p>1. Supported AI models in GitHub Copilot — <a href="https://docs.github.com/copilot/reference/ai-models/supported-models">https://docs.github.com/copilot/reference/ai-models/supported-models</a><br>2. About Copilot auto model selection — <a href="https://docs.github.com/copilot/concepts/auto-model-selection">https://docs.github.com/copilot/concepts/auto-model-selection</a><br>3. Changing the AI model for GitHub Copilot Chat — <a href="https://docs.github.com/en/copilot/how-tos/use-ai-models/change-the-chat-model">https://docs.github.com/en/copilot/how-tos/use-ai-models/change-the-chat-model</a><br>4. AI model comparison (Copilot) — <a href="https://docs.github.com/en/copilot/reference/ai-models/model-comparison">https://docs.github.com/en/copilot/reference/ai-models/model-comparison</a><br>5. Hosting of models for GitHub Copilot Chat — <a href="https://docs.github.com/en/copilot/reference/ai-models/model-hosting">https://docs.github.com/en/copilot/reference/ai-models/model-hosting</a><br>6. Provide context to GitHub Copilot — <a href="https://docs.github.com/en/copilot/how-tos/provide-context">https://docs.github.com/en/copilot/how-tos/provide-context</a><br>7. Concepts for providing context to GitHub Copilot — <a href="https://docs.github.com/en/copilot/concepts/context">https://docs.github.com/en/copilot/concepts/context</a><br>8. Adding repository custom instructions for GitHub Copilot — <a href="https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot">https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot</a><br>9. Prompt files — <a href="https://docs.github.com/en/copilot/tutorials/customization-library/prompt-files">https://docs.github.com/en/copilot/tutorials/customization-library/prompt-files</a><br>10. Use custom instructions in VS Code — <a href="https://code.visualstudio.com/docs/copilot/customization/custom-instructions">https://code.visualstudio.com/docs/copilot/customization/custom-instructions</a><br>11. GitHub Changelog: Auto model selection GA — <a href="https://github.blog/changelog/2025-12-10-auto-model-selection-is-generally-available-in-github-copilot-in-visual-studio-code/">https://github.blog/changelog/2025-12-10-auto-model-selection-is-generally-available-in-github-copilot-in-visual-studio-code/</a><br>12. OpenAI Codex (developer docs) — <a href="https://developers.openai.com/codex/">https://developers.openai.com/codex/</a><br>13. Codex IDE extension (OpenAI docs) — <a href="https://developers.openai.com/codex/ide/">https://developers.openai.com/codex/ide/</a><br>14. Codex extension (VS Code Marketplace) — <a href="https://marketplace.visualstudio.com/items?itemName=openai.chatgpt">https://marketplace.visualstudio.com/items?itemName=openai.chatgpt</a><br>15. OpenAI Help: install Work with Apps extension — <a href="https://help.openai.com/en/articles/10128592-how-to-install-the-work-with-apps-visual-studio-code-extension">https://help.openai.com/en/articles/10128592-how-to-install-the-work-with-apps-visual-studio-code-extension</a><br>16. SWE-bench (arXiv) — <a href="https://arxiv.org/abs/2310.06770">https://arxiv.org/abs/2310.06770</a><br>17. Introducing SWE-bench Verified (OpenAI) — <a href="https://openai.com/index/introducing-swe-bench-verified/">https://openai.com/index/introducing-swe-bench-verified/</a><br>18. InstructGPT / RLHF paper — <a href="https://arxiv.org/abs/2203.02155">https://arxiv.org/abs/2203.02155</a><br>19. Attention Is All You Need (PDF) — <a href="https://papers.neurips.cc/paper/7181-attention-is-all-you-need.pdf">https://papers.neurips.cc/paper/7181-attention-is-all-you-need.pdf</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e4754ecb7eb7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“ChatGPT” hər yerdə eyni deyil: Copilot və Codex-in real fərqi]]></title>
            <link>https://gurbanali.medium.com/chatgpt-h%C9%99r-yerd%C9%99-eyni-deyil-copilot-v%C9%99-codex-in-real-f%C9%99rqi-3cf256f6bd89?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/3cf256f6bd89</guid>
            <category><![CDATA[chatgpt]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <category><![CDATA[github-copilot]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Fri, 09 Jan 2026 16:02:42 GMT</pubDate>
            <atom:updated>2026-01-09T16:16:40.976Z</atom:updated>
            <content:encoded><![CDATA[<p>Təqribən bir neçə ildir ki, GitHub Copilot mənim kod yazma prosesimdə əvəzolunmaz bir alətə çevrilib. Səbəbi də məlumdur, tələbə olduğum üçün Github Copilotun tələbələr üçün təqdim etdiyi imtiyazlardan rahatlıqla yararlana bilirəm. Github Copilot xüsusilə Claude Opus 4.5 və əvvəlki Claude modellərinin performansı sayəsində məni heç vaxt məyus etməyib. Claude-un kod yazma qabiliyyəti, yazdığı kodun keyfiyyəti, problemi həll etməsi, ümumilikdə Claude kod performansı istifadə edənlərin bir çoxunu qane edir. İDE olaraq Antigravity-ni istifadə edəndə belə Claude Opus 4.5 modeli vibe codingdə həqiqətən çox yaxşı nəticələr verir.</p><p>Əlbəttə ki, GitHub Copilot-un portfelində yalnız Claude yox, GPT-5, GPT-5.1, GPT- 5.2, və keçmiş versiya olan GPT-4.1 kimi modellər də mövcuddur. Mən bunlardan da vaxtaşırı istifadə edirdim. Lakin düzünü desəm, Copilot daxilində GPT modellərinin performansı məni tam qane etmirdi. Bu, modellərin özü ilə deyil, daha çox onların implementasiyası və inteqrasiyası ilə bağlı olduğunu güman edirdim.</p><h4>Gözlənilməz kəşf</h4><p>Ancaq bu gün gözlənilməz bir təcrübə yaşadım. ChatGPT Plus abunəçiləri üçün təqdim edilən ChatGPT Codex extension-unu VS Code-a yükləyib sınadım. İlk baxışda hər şey adi görünürdü; eyni GPT modelləri, eyni VS Code mühiti, eyni problemlər. Lakin nəticə məni heyrətə gətirdi.</p><p>GitHub Copilot daxilində istifadə etdiyim GPT modelləri ilə ChatGPT Codex-də seçdiyim GPT modelləri texniki cəhətdən eyni olsa da, performansda əhəmiyyətli fərq var idi. Bu fərq sadəcə kiçik nüanslar deyildi Codex-in GPT modelləri GitHub Copilot-dakına nisbətdə kəskin şəkildə daha yaxşı nəticələr verirdi.</p><h4>Eksperiment: Eyni prompt, eyni model, fərqli nəticə</h4><p>Təsadüfi müşahidə ilə kifayətlənmədim və kiçik bir eksperiment aparmağa qərar verdim. Eyni kod problemi, eyni prompt və eyni GPT modelini (GPT-5) hər iki platformada sınadım. Nəticə gözlədiyimdən də daha maraqlı çıxdı.</p><p><strong>Testi aşağıdakı qaydalara uyğun olacaq şəkildə apardım:</strong></p><ul><li>Eyni kod tapşırığı: Data Science kontekstində pandas ilə kompleks data transformation və visualization pipeline yaratmaq</li><li>Eyni prompt məzmunu: dəqiq təlimat və kontekst</li><li>Eyni model: GPT-5</li><li>Fərqli platform: GitHub Copilot vs ChatGPT Codex</li></ul><p>GitHub Copilot-da aldığım həll daha ümumi, şablon xarakterli və bəzən kontekstdən kənar idi. Təklif etdiyi pandas əməliyyatları bazis səviyyədə idi və mənim data strukturuma tam uyğun deyildi. ChatGPT Codex isə daha kontekstə uyğun, optimallaşdırılmış və mənim konkret data science istifadə halıma uyğun kod təklif etdi. Kod keyfiyyəti, data handling best practices-ə riayət, error handling və hətta kod stilinin layihəmdəki Jupyter notebook flow-una uyğunluğu Codex-də daha yüksək idi.</p><p>Bu eksperiment məni daha dərin araşdırmağa sövq etdi və kiçik bir tədqiqat apardım.</p><h4>Niyə performans fərqi var?</h4><p>Araşdırmam zamanı aşkar etdiyim əsas fərqlər aşağıdakılar kimidir:</p><p><strong>Model optimizasiyası və fine-tuning:</strong> OpenAI, ChatGPT Codex üçün öz modellərini kod yazma tapşırıqlarına daha spesifik şəkildə optimallaşdırmış ola bilər. GitHub Copilot-da isə eyni modellər daha ümumi məqsədlər üçün konfiqurasiya edilmiş ola bilər. Araşdırmam zamanı aşkar etdim ki, Codex-in arxasında duran sistem OpenAI-ın birbaşa nəzarəti altında olduğu üçün model parametrlərinə və inference pipeline-a daha dərindən müdaxilə imkanı var.</p><p><strong>API implementasiyası və sistem arxitekturası:</strong> Məlum oldu ki, hər iki platformanın modellərə müraciət etmə üsulu fundamental fərqlər daşıyır. ChatGPT Codex, OpenAI-ın öz ekosistemi olduğu üçün modellərlə daha native səviyyədə ünsiyyət qurur. GitHub Copilot isə Microsoft-un infrastrukturu üzərindən OpenAI API-na qoşulur ki, bu da əlavə latency və potensial data transformation layerləri yaradır. Bu aralıq təbəqələr bəzən kontekst itkisinə və ya prompt transformasiyasına səbəb ola bilir.</p><p><strong>Context window və token idarəetməsi strategiyaları:</strong> Araşdırmam zamanı maraqlı bir nüans aşkar etdim: Codex, kod kontekstini və istifadəçi niyyətini anlamaq üçün daha ağıllı context management sistemi istifadə edir. VS Code-un açıq faylları, layihə strukturu və hətta Git tarixçəsi Codex tərəfindən daha effektiv şəkildə işlənir. GitHub Copilot-da isə eyni kontekst məlumatı daha məhdud şəkildə modelə çatdırılır.</p><p><strong>Prompt engineering və system instructions:</strong> Ən maraqlı kəşfim bu oldu: ChatGPT Codex-in arxasında duran sistem promptları kod yazma üçün xüsusi optimallaşdırılıb. OpenAI-ın Codex üçün istifadə etdiyi system instructions modelə daha spesifik kod yazma davranışları öyrədir məsələn, daha az “hallucination”, daha çox kod konvensiyalarına riayət, daha yaxşı error handling. GitHub Copilot-da isə GPT modelləri daha ümumi system instructions ilə işləyir.</p><p><strong>Response time və caching strategiyaları:</strong> İki platformanın caching və cavab təqdim etmə strategiyaları təkcə sürət deyil, keyfiyyət baxımından da fərqlidir. Codex daha agresiv və ağıllı semantic caching istifadə edir ki, bu da bənzər kontekstlərdə daha yaxşı nəticələr əldə etməyə imkan verir. Copilot-un caching strategiyası isə daha konservativdir.</p><p><strong>Model versiyası və deployment pipeline:</strong> Digər vacib fərq: eyni model adı (məsələn, GPT-5.2) altında fərqli deployment versiyaları ola bilər. OpenAI, Codex üçün öz modellərinin ən son və ən optimallaşdırılmış versiyalarını birbaşa deploy edir. GitHub Copilot isə tərəfdaş münasibətinə görə bəzən bir neçə versiya geri qala bilər və ya Microsoft-un öz compliance və təhlükəsizlik tələblərinə uyğunlaşdırılmış versiyalar istifadə edə bilər.</p><h4>Praktik nəticələr və texniki detallar</h4><p>Bu təcrübə və araşdırmadan çıxardığım əsas nəticə budur: <strong>eyni AI modeli fərqli platformalarda fərqli performans göstərə bilər və bu fərq sadəcə implementasiya detallarına deyil, bütöv sistem arxitekturasına bağlıdır</strong>.</p><p>Mənim üçün bu kəşf bir neçə vacib dərsi özündə ehtiva edir:</p><p><strong>Platform-model simbiozunun əhəmiyyəti:</strong> Model seçimi vacibdir, lakin həmin modelin hansı platformada necə işlədiyi daha da kritikdir. OpenAI-ın öz modellərini öz platformasında istifadə etməsi təbii üstünlük yaradır, bu sadəcə texniki deyil, həm də ekosistem üstünlüyüdür.</p><p><strong>Abstraction layerlərin gizli dəyəri:</strong> GitHub Copilot-un Microsoft infrastrukturu üzərindən işləməsi sadəcə latency problemi deyil, həm də kontekst, prompt transformasiyası və model davranışı baxımından məhdudiyyətlər yaradır. Bu abstraction layerləri istifadəçidən gizli qalsa da, nəticəyə birbaşa təsir edir.</p><p><strong>Claude-un Copilot-dakı uğuru:</strong> İndi daha yaxşı başa düşürəm ki, GitHub Copilot-da Claude modellərinin niyə bu qədər yaxşı performans göstərməsi təsadüfi deyil. Anthropic və Microsoft arasında daha yaxşı optimallaşdırma və ya Claude-un özünün daha robust arxitekturaya malik olması bu uğurun arxasında dayanır.</p><p>Bu araşdırma və əldə etdiyim bu nəticələrdən sonra çalışacam ki, daha hibrid şəkildə yanaşım.</p><h4>Eksperimentdən sonra nə düşünürəm:</h4><p>Developer kimi bizim üçün bu kəşf maraqlı və praktik bir seçim problemi yaradır. Sadəcə “hansı alət daha yaxşıdır?” sualı bəs eləmir, bu bilavasitə daha dərin bir strategiya məsələsidir.</p><p><strong>Mənim hazırki strategiyam:</strong></p><p><em>GitHub Copilot + Claude</em> kombinasiyası əsas workflow üçün optimal qalır — Microsoft ekosisteminin verdiyi seamless təcrübə, GitHub inteqrasiyası və Claude-un etibarlı, yüksək keyfiyyətli kod təklifləri. Xüsusilə refactoring, arxitektura qərarları və kompleks problem həlli üçün Claude əvəzolunmazdır.</p><p><em>ChatGPT Codex + GPT-5/5.1</em> isə konkret hallar üçün: OpenAI modellərinə ehtiyac duyulan spesifik tapşırıqlar, eksperimental feature-lar və ya çox sürətli prototyping hallarında. Codex-in GPT-ləri burada məhz öz evində olur və maksimal performans göstərir.</p><h4><strong>Developer-lər üçün praktik tövsiyələr:</strong></h4><p>Platformaların native modellərinə üstünlük verin — OpenAI modellərini OpenAI platformasında, Claude modelini Copilot-da və ya birbaşa Claude.ai-da istifadə etmək daha yaxşı nəticələr verir.</p><p>Eyni modeli fərqli platformalarda test edin, mənim kimi sadə eksperimentlər sizi gözlənilməz kəşflərə apara bilər. Elmi praktikama əsaslanaraq rahatlıqla deyə bilərəm ki, “kağız üzərində” olan həll, real praktikada bir çox hallarda tamamilə fərqli nəticələr verir.</p><p>Kontekst idarəetməsinə diqqət yetirin, hansı platformadan istifadə edirsinizsə, o platformanın konteksti necə qəbul etdiyini başa düşmək kritikdir. VS Code-dakı açıq faylların, layihə strukturunun və workspace settings-in təsirini qiymətləndirin.</p><p>Tool switching overhead-ni hesablayın, iki alət arasında keçid etmək vaxt və mental enerji tələb edir. Bəzən 80% həll bir platformada, 100% həll üçün isə platform dəyişmək məntiqli ola bilər.</p><h4><strong>Gələcəyə baxış:</strong></h4><p>AI-powered coding tools bazarı sürətlə inkişaf edir və bu performans fərqləri zamanla dəyişə bilər. GitHub Copilot öz GPT implementasiyasını təkmilləşdirə bilər və ya tamamilə yeni model arxitekturaları meydana çıxa bilər.</p><p>Mənim fikrimdə, gələcək monolit AI coding assistant-lərdə deyil, smart orchestration-dadır müxtəlif modellərin güclü tərəflərini birləşdirən, kontekstə uyğun olaraq ən uyğun modeli seçən sistemlər.</p><h4><strong>Nəticə:</strong></h4><p>AI-powered coding tool-lar seçərkən sadəcə “hansı model daha güclüdür?” sualına cavab kifayət etmir. Real dünyada, <strong>model + platform + implementasiya = performans</strong> tənliyi işləyir.</p><p>Bu araşdırma mənə göstərdi ki, eyni prompt və eyni model ilə belə, fərqli platformalarda əldə etdiyiniz nəticə radikal şəkildə fərqli ola bilər. ChatGPT Codex-in GPT modelləri ilə əldə etdiyim superior performans, eyni GPT-nin GitHub Copilot-da göstərdiyi nəticədən kəskin şəkildə fərqlənirdi və bu fərqin kökündə sistem arxitekturası, prompt engineering, context management və deployment strategiyaları kimi görünməyən amillərin böyük rolu var imiş.</p><p>Mənim tövsiyəm sadədir: qəti fikrə ilişib qalmayın. Bir alətə və ya modelə kor-koranə bağlanmaq əvəzinə, öz real istifadə ssenarilərinizdə kiçik eksperimentlər edin, nəticələri müqayisə edin və sizin üçün ən yaxşı işləyən kombinasiyanı seçin. Bəzən “ən yaxşı” həll ən güclü model olmur, həmin modelin ən düzgün inteqrasiya edildiyi, ən yaxşı optimizasiya olunduğu platforma olur.</p><p>Developer kimi bizim işimiz təkcə kod yazmaq deyil. Eyni zamanda doğru alətləri seçmək, onları düzgün qurmaq və maksimum fayda çıxarmaq da işin bir parçasıdır. Bu təcrübə mənə bir daha göstərdi ki, texnologiya dünyasında kağız üzərində yaxşı görünən şeylər real şəraitdə fərqli nəticə verə bilər. Ona görə də ən etibarlı meyar reklam və müqayisə cədvəlləri deyil, real test, real istifadə və real təcrübədir.</p><h4>Araşdırmaya davam etmək üçün bu mənbələrə baxın:</h4><p>1. Supported AI models in GitHub Copilot — <a href="https://docs.github.com/copilot/reference/ai-models/supported-models">https://docs.github.com/copilot/reference/ai-models/supported-models</a><br>2. About Copilot auto model selection — <a href="https://docs.github.com/copilot/concepts/auto-model-selection">https://docs.github.com/copilot/concepts/auto-model-selection</a><br>3. Changing the AI model for GitHub Copilot Chat — <a href="https://docs.github.com/en/copilot/how-tos/use-ai-models/change-the-chat-model">https://docs.github.com/en/copilot/how-tos/use-ai-models/change-the-chat-model</a><br>4. AI model comparison (Copilot) — <a href="https://docs.github.com/en/copilot/reference/ai-models/model-comparison">https://docs.github.com/en/copilot/reference/ai-models/model-comparison</a><br>5. Hosting of models for GitHub Copilot Chat — <a href="https://docs.github.com/en/copilot/reference/ai-models/model-hosting">https://docs.github.com/en/copilot/reference/ai-models/model-hosting</a><br>6. Provide context to GitHub Copilot — <a href="https://docs.github.com/en/copilot/how-tos/provide-context">https://docs.github.com/en/copilot/how-tos/provide-context</a><br>7. Concepts for providing context to GitHub Copilot — <a href="https://docs.github.com/en/copilot/concepts/context">https://docs.github.com/en/copilot/concepts/context</a><br>8. Adding repository custom instructions for GitHub Copilot — <a href="https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot">https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot</a><br>9. Prompt files — <a href="https://docs.github.com/en/copilot/tutorials/customization-library/prompt-files">https://docs.github.com/en/copilot/tutorials/customization-library/prompt-files</a><br>10. Use custom instructions in VS Code — <a href="https://code.visualstudio.com/docs/copilot/customization/custom-instructions">https://code.visualstudio.com/docs/copilot/customization/custom-instructions</a><br>11. GitHub Changelog: Auto model selection GA — <a href="https://github.blog/changelog/2025-12-10-auto-model-selection-is-generally-available-in-github-copilot-in-visual-studio-code/">https://github.blog/changelog/2025-12-10-auto-model-selection-is-generally-available-in-github-copilot-in-visual-studio-code/</a><br>12. OpenAI Codex (developer docs) — <a href="https://developers.openai.com/codex/">https://developers.openai.com/codex/</a><br>13. Codex IDE extension (OpenAI docs) — <a href="https://developers.openai.com/codex/ide/">https://developers.openai.com/codex/ide/</a><br>14. Codex extension (VS Code Marketplace) — <a href="https://marketplace.visualstudio.com/items?itemName=openai.chatgpt">https://marketplace.visualstudio.com/items?itemName=openai.chatgpt</a><br>15. OpenAI Help: install Work with Apps extension — <a href="https://help.openai.com/en/articles/10128592-how-to-install-the-work-with-apps-visual-studio-code-extension">https://help.openai.com/en/articles/10128592-how-to-install-the-work-with-apps-visual-studio-code-extension</a><br>16. SWE-bench (arXiv) — <a href="https://arxiv.org/abs/2310.06770">https://arxiv.org/abs/2310.06770</a><br>17. Introducing SWE-bench Verified (OpenAI) — <a href="https://openai.com/index/introducing-swe-bench-verified/">https://openai.com/index/introducing-swe-bench-verified/</a><br>18. InstructGPT / RLHF paper — <a href="https://arxiv.org/abs/2203.02155">https://arxiv.org/abs/2203.02155</a><br>19. Attention Is All You Need (PDF) — <a href="https://papers.neurips.cc/paper/7181-attention-is-all-you-need.pdf">https://papers.neurips.cc/paper/7181-attention-is-all-you-need.pdf</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3cf256f6bd89" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[IDE və Mətn Redaktoru (Text editor) Arasındakı Fərq]]></title>
            <link>https://gurbanali.medium.com/ide-v%C9%99-m%C9%99tn-redaktoru-text-editor-aras%C4%B1ndak%C4%B1-f%C9%99rq-c3bdfc25a90c?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/c3bdfc25a90c</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[vscode]]></category>
            <category><![CDATA[text-editor]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Sat, 08 Nov 2025 03:11:06 GMT</pubDate>
            <atom:updated>2025-11-08T03:34:22.929Z</atom:updated>
            <content:encoded><![CDATA[<p>Proqramlaşdırmaya yeni başlayanlar üçün ən çaşdırıcı suallardan biri budur: “IDE ilə mətn redaktoru arasında nə fərq var? Hər ikisində kod yazmıram?” Bəli, hər ikisində kod yazırıq, amma aralarındakı fərq elədə kiçik deyil. Gəlin bunu sadə dillə açıqlayaq.</p><h4>Mətn redaktoru nədir?</h4><p>Mətn redaktoru adından da göründüyü kimi, mətn yazmaq üçün olan bir vasitədir. Notepad, Sublime Text, VS Code, Atom kimi vasitələr mətn redaktorlarıdır. Onların əsas vəzifəsi sadədir: sən kod yazırsan, o da onu qeyd edir.</p><p><em>Mətn redaktorları yüngüldür, tez işləyir və minimal resurs sərf edir. Sən sadəcə bir fayl açırsan, kodunu yazırsan və saxlayırsan.</em> Bəzi müasir mətn redaktorları (məsələn, VS Code) artıq o qədər güclü “plugin”lərlə gəlir ki, demək olar IDE-yə çevrilib, ancaq hələ də əsasən mətn redaktoru minimalist bir yanaşmadır.</p><h4>IDE Nədir?</h4><p>IDE — Integrated Development Environment, yəni İnteqrasiya Olunmuş İnkişaf Mühiti. Burda açar söz “inteqrasiya olunmuş”dur. <strong><em>IDE sadəcə mətn redaktoru deyil, bütöv bir iş mühitidir.</em></strong></p><p><em>IDE-də sən kod yazanda, o kodun sintaksisini yoxlayır, səhvləri dərhal göstərir, avtomatik tamamlama təklif edir, kodunu “debug” edir, testlər yazırsan, verilənlər bazasına qoşulursan və hətta proyekti yerləşdirmək (deploy) üçün alətlər verir.</em> Bir sözlə, proqramçıya lazım olan hər şey bir yerdə toplanıb.</p><p>Visual Studio, IntelliJ IDEA, PyCharm, Eclipse; bunlar IDE-lərə misaldır.</p><h3>Əsas Fərqlər</h3><h4>1. Funksionallıq</h4><p>Mətn redaktoru “yalın” və sadədir - mətn yaz, saxla, get. IDE isə kompleksdir; kod yaz, test et, debug et, run et, deploy et. Hamısı bir yerdə.</p><h4>2. Resurs istifadəsi</h4><p>Mətn redaktorları “yüngüldür”, tez açılır. IDE-lər isə ağırdır, çoxlu RAM və CPU istifadə edir. Məsələn, IntelliJ IDEA-nı açanda kompüterin fanın səsi bütün otağı götürür, fanın səsi adamın başına düşür (One of those typical Windows user problems :) ), Notepad++ açanda heç nə olmur.</p><h4>3. Layihə idarəetməsi</h4><p>IDE-də layihə konsepsiyası var. Sən bir proyekti açırsan və o proyektə aid olan bütün fayllar, strukturlar, ayarlar bir yerdə saxlanılır. Mətn redaktorunda isə sadəcə fayllar açırsan, proyektin mənası yoxdur (yaxud çox məhduddur).</p><h4>4. Kod analizi</h4><p><em>IDE kodunu davamlı analiz edir. Səhvləri göstərir, optimallaşdırma təklifləri verir, istifadə olunmayan dəyişənləri tapır. </em>Mətn redaktorunda bu funksiyalar ya yoxdur, ya da plaginlərlə əlavə olunmalıdır.</p><h4>5. Debugging</h4><p><em>IDE-də inteqrasiya olunmuş debugger var. Breakpoint qoyursan, dəyişənlərin dəyərlərini görürsən, addım-addım kodu icra edirsən. </em>Mətn redaktorunda debugging üçün ayrıca alətlərə ehtiyac var.</p><h4>Hansını Seçməli?</h4><p>Bu, tamamilə sənin ehtiyaclarından asılıdır.</p><p><strong>Mətn redaktoru istifadə etməlisən əgər:</strong></p><ul><li>Kiçik scriptlər yazırsansa</li><li>Sürətli bir şey test etmək istəyirsənsə</li><li>Yüngül və tez işləyən vasitə lazımdırsa</li><li>Bir neçə müxtəlif dildə işləyirsən və universal redaktor istəyirsənsə.</li></ul><p><strong>IDE istifadə et əgər:</strong></p><ul><li>Böyük proyektlər üzərində işləyirsənsə</li><li>Komanda halında işləyirsənsə</li><li>Kod keyfiyyəti və refactoring vacibdirsə</li><li>Debug prosesi mühümdürsə</li><li>Framework və kitabxanalarla çox işləyirsənsə.</li></ul><h4>Mənim fikrim:</h4><p>Mən şəxsən hər iki yanaşmanı istifadə edirəm. Kiçik işlər, konfiqurasiya faylları, markdown yazıları üçün VS Code istifadə edirəm. Devoloperlər çox vaxt böyük Java və ya Python proyektləri üçün IntelliJ IDEA və ya PyCharm-a keçir. Hərəsinin öz yeri var.</p><p>Əvvəllər “əsl proqramçılar” Vim və ya Emacs istifadə edərdilər, IDE istifadə etməyi “tənbəllik” sayırdılar, amma bu anlayış artıq köhnəlib. Müasir proqramlaşdırma mühiti o qədər mürəkkəbdir ki, IDE-nin təklif etdiyi avtomatlaşdırma və yardım funksiyaları vaxt qazandırır və səhvləri azaldır.</p><h4>Nəticə</h4><p><em>IDE və mətn redaktoru arasındakı fərq; Ferrari ilə Toyota Corolla arasındakı fərq kimidir. Hər ikisi səni məqsədə çatdırır, amma fərqli vəziyyətlər üçün nəzərdə tutulub. Gərək biləsən, hansı alət hansı iş üçün uyğundur.</em></p><p>Əgər yeni başlayırsansa, sadə mətn redaktorundan başla, proqramlaşdırmanın əsaslarını öyrən. Sonra təbii olaraq IDE-yə ehtiyac duyacaqsan və keçid edəcəksən. Bu proses tamamilə normaldır.</p><p>Ən əsası hansı alətdən istifadə etməyin deyil, nə qədər yaxşı kod yazdığındır. Alətlər sadəcə vasitədir, əsil məharət sənin koduna aiddir.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c3bdfc25a90c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Proqramlaşdırma Dilləri Necə İşləyir?]]></title>
            <link>https://gurbanali.medium.com/proqramla%C5%9Fd%C4%B1rma-dill%C9%99ri-nec%C9%99-i%CC%87%C5%9Fl%C9%99yir-4450475db18c?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/4450475db18c</guid>
            <category><![CDATA[programming-languages]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[python-programming]]></category>
            <category><![CDATA[data-science]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Thu, 06 Nov 2025 03:59:59 GMT</pubDate>
            <atom:updated>2025-11-06T04:02:01.215Z</atom:updated>
            <content:encoded><![CDATA[<p>Səhər kofemi içib kompüterimin qarşısında əyləşəndə, ağlıma gəldi: biz hər gün kod yazırıq, amma heç düşünmüşükmü ki, bu yazdığımız şeylər əslində necə işləyir? Məsələn, mən “print(‘Salam dünya’)” yazıram, enter basıram və ekranda yazı görünür, amma… necə?</p><p>Bildiyiniz kimi, kompüterlər yalnız 0 və 1-i başa düşür. Bizsə onlara ingiliscə sözlər yazırıq. Ortada nə baş verir?</p><h4>Tərcüməçi</h4><p>Təsəvvür edin ki, siz yalnız azərbaycan dilində danışırsınız, qarşınızdakı isə yalnız çin dilində bilir. Söhbət etmək üçün tərcüməçi lazımdır, elədi? Ya da süni intellekt…</p><p>Proqramlaşdırma dilləri məhz bu tərcüməçi rolunu oynayır. Biz normal danışıq dilinə yaxın bir şey yazırıq, o isə bunu kompüterin anladığı dilə çevirir. Bu qədər sadədi əslində hər şey. (sözdə sadədi, əməldə çətin)</p><h4>Səviyyə söhbəti var</h4><p><em>“Dillərin müxtəlif səviyyələri olur”.</em></p><p>Python, JavaScript kimi dillərdə biz demək olar ki, adi danışıq dili kimi yazırıq. Məsələn, “if age &gt; 18” — oxuduqca başa düşülür. Bunlara yüksək səviyyəli dillər deyil, çünki bizim düşüncə tərzimizə yaxındır.</p><p>Amma aşağıda başqa dillər də var. Məsələn, Assembly dilində eyni şeyi yazmaq üçün yaddaş ünvanları, registrlər və s. haqqında düşünməlisən, bir sözlə kompüter kimi düşünməlisən. Bu daha çətindir, amma kompüterə daha yaxındır.</p><p>Hərdən maraq üçün “C++” a filan baxıram. Pythona şükür edirəm. Yaxşı ki, python var, python olmasa mən nə edərdim.</p><h4>Kodumu kompüter necə başa düşür?</h4><p>İndi ən maraq doğuran hissə. Siz kod yazırsınız, enter basırsınız, nəsə baş verir, amma işin arxa fonunda nə baş verir?</p><p>Bəzi dillər (məsələn, C++) bütün kodunuzu bir dəfə oxuyur, başdan-sona tərcümə edir və “maşının” dilinə çevirir. Sonra o hazır tərcümə işə düşür. <em>Buna </em><strong><em>kompilyasiya</em></strong><em> deyirlər. elə bil ki, kitabı bir dəfə tərcümə edirsən, sonra istədiyin qədər oxuyursan.</em></p><p>Python və JavaScript kimi dillərsə fərqlidir. Onlar sətir-sətir oxuyub icra edir. Hər dəfə proqramı işə salanda kod yenidən tərcümə olunur. Sanki sinxron tərcüməçi danışanı danışdıqca tərcümə edir.</p><p>İkisinin də yaxşı və pis tərəfləri var. Birinci sürətlidir, ikincisi çevik.</p><h4>Pythonun sirri</h4><p>Maraqlı bir şey var. Python faylınız yanında bəzən <strong>pycache</strong> qovluğu və .pyc faylları yaranır. Nədir bunlar?</p><p><em>Python əslində tamamilə sətir-sətir tərcümə etmir. Əvvəlcə kodu aralıq bir formata çevirir </em><strong><em>bytecode </em></strong><em>deyilən bir şeyə. Sonra onu icra edir. Bu .pyc faylları məhz o bytecode-dur</em>. Mən bunu hər dəfə yeni dataset yükləyəndə görürəm, ilk yükləmə bir az gec olur, amma sonrakılar daha sürətli işləyir. Səbəb məhz bu bytecode cache-ləməsidir.</p><h4>İkisinin qarışığı</h4><p>Son illərdə yeni bir üsul çıxıb: <strong>Just-In-Time</strong> kompilyasiya. Qısa adı<strong> JIT. </strong>Julia dilində və ya Python-un PyPy implementasiyasında bu texnologiya istifadə olunur. <strong><em>Kod işləyə-işləyə təhlil edilir və tez-tez istifadə olunan hissələr “maşın” koduna çevrilir.</em></strong></p><p>Bu nədir? Təsəvvür edin ki, proqram işləyir və özü özünü müşahidə edir. Görür ki, bu hissə çox işlənir. Deyir: “Yaxşı, bu hissəni indi “maşın” dilinə çevirirəm ki, daha sürətli işləsin”.</p><h4>Yaddaş məsələsi</h4><p>Python-da dəyişən yaradanda “x = 5” yazırsan və qurtarır, amma arxada çox şey baş verir.</p><p><em>Python avtomatik yaddaşa qoyur, istifadə edəndə götürür, lazım olmayanda təmizləyir.</em> Buna <strong>Garbage Collection</strong> deyirlər. Bizim əlimizdən nə götürür? Çox şey.</p><p><em>C dilində isə öz əlinlə yaddaşı idarə etməlisən</em>. Yaddaş ayır, işin bitəndə azad et. Unutsan, problem yaranar. Unutdunsa proqram get-gedə yaddaşı yeyir, axırda kompüter donur.</p><h4>Azadlıq?</h4><p>Python-da yaza bilərsən:</p><pre>x = 5<br>x = &quot;salam&quot;<br>x = [1, 2, 3]</pre><blockquote><strong><em>Eyni dəyişənə istədiyin tip yaza bilərsən. Buna dinamik tipləndirmə</em></strong> deyirlər, amma <strong><em>Java və ya C++ kimi dillərdə</em></strong> belə olmur. <em>Əvvəlcədən elan etməlisən ki, </em><strong><em>bu dəyişən rəqəmdir, bu mətndir</em></strong><em>. Sonra </em><strong><em>dəyişə bilməzsən.</em></strong></blockquote><blockquote>Hansı daha yaxşıdır? Hər ikisinin öz yeri var. Python çevikdir, tez yazırsan. Java və C++ isə daha etibarlıdır, böyük layihələrdə xətaları erkən görür.</blockquote><h4>Niyə Bu Qədər Çox Dil Var?</h4><p>Düşünmüsünüzmü, niyə bir dil yoxdur, yüzlərlə var?</p><p>Çünki hər iş üçün yaxşı alət fərqlidir. Bıçağında fərqli növləri varda, buna oxşayır. Meyvə bıçağıyla ət doğramaq olur?<br>Mən data ilə işləyirəm, mənim üçün Python idealdır pandas, numpy və digər kitabxanalar çox güclüdür.</p><p>Amma vebsayt quranda JavaScript lazımdır. Mobil tətbiq yazmaqda Swift və ya Kotlin. Oyun yazmaqda C++. Hər dil müəyyən problemləri həll etmək üçün yaradılıb.</p><h4>Nəticələr</h4><p>Proqramlaşdırma dilləri əslində inanılmaz mühəndislik əsərləridir. Onlar bizim düşüncələrimizi kompüterin başa düşəcəyi formata çevirirlər. Hər dəfə “import pandas as pd” yazdığımda, arxada minlərlə sətir kod işə düşür, yüzlərlə funksiya hazır vəziyyətə gəlir.</p><p>Əgər siz də mənim kimi kod yazmağı sevirsinizsə, bəzən bir anlığa dayanıb arxada baş verənləri düşünün. Bu, sizə kodunuzu daha yaxşı başa düşməyə və daha effektiv proqramlar yazmağa kömək edəcək.</p><p>Unutmayın, hər bir “Hello World” arxasında insan zehininin və mühəndislik düşüncəsinin onilliklərinin əməyi var və bu, həqiqətən, möhtəşəmdir.</p><h3>Oxumağa davam et:</h3><ul><li>How Python Runs Programs: <a href="https://www.oreilly.com/library/view/learning-python-5th/9781449355722/">https://www.oreilly.com/library/view/learning-python-5th/9781449355722/</a></li><li>Understanding JIT Compilation: <a href="https://www.ibm.com/docs/en/sdk-java-technology/8">https://www.ibm.com/docs/en/sdk-java-technology/8</a></li><li>Stack Overflow Developer Survey: <a href="https://survey.stackoverflow.co/">https://survey.stackoverflow.co/</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4450475db18c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Understanding Datasets: A 5-Minute Guide]]></title>
            <link>https://gurbanali.medium.com/understanding-datasets-a-5-minute-guide-38c03ef19053?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/38c03ef19053</guid>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Sat, 06 Sep 2025 23:14:30 GMT</pubDate>
            <atom:updated>2025-09-06T23:54:21.893Z</atom:updated>
            <content:encoded><![CDATA[<p>We’ve all probably heard this term at least once — read it, seen it, encountered it frequently lately. The reason? Artificial intelligence. Despite hearing it often, most of us still haven’t fully grasped what it actually means. At first glance, it seems very technical, like some complex computer science topic that’s hard to understand. But my goal is to explain this term in 5 minutes in a way everyone can understand.</p><p>Here’s a spoiler: your Spotify playlists are datasets. The posts that appear in your social media feeds are datasets. These platforms’ algorithms know what and how much you’ll engage with, so they create custom, specific datasets for you, and you spend hours scrolling. Now let’s break it down and really understand it.</p><h4>What is a Dataset?</h4><p>To understand the term, let’s start with the word itself. “DataSet” is clearly a compound word made up of “Data” and “Set.” Let’s figure out what each part means and how they come together.</p><p><strong>Data</strong> — This is simply raw information or facts. Here’s the key distinction many people miss: “data” and “information” aren’t the same thing. Data is the raw material — like individual letters on a page. Information is what you get when that data becomes meaningful to you. For example, I’m writing this using letters from the English alphabet. Each letter by itself is just a symbol (data), but when you read and understand what these symbols spell out together, that becomes information for you. If you tried to read Chinese characters without knowing Chinese, you’d see the data (the visual symbols) but gain no information from them — at most, you might notice their artistic shapes. So “data” is essentially raw facts or elements, regardless of whether they mean anything to you personally.</p><p><strong>Set</strong> — This is a mathematical concept you probably remember from elementary school — those Venn diagrams with circles and intersections. In mathematics, a “set” is simply a collection of distinct objects or elements that share some common characteristic. Think of it like a group: the set of all students in your class, the set of all red cars in a parking lot, or the set of all songs in your music library.</p><p>I’ve seen “Dataset” sometimes called “Data Collection,” but I think this can create confusion with “Database.” A database is an organized collection of data that’s stored and accessed electronically using management systems. Small databases live in file systems, while large ones are housed in computer clusters or cloud storage.</p><p>So what exactly is a dataset? A <strong>dataset</strong> is a collection of information gathered, stored, and processed through various methods for a specific purpose. This information is presented in a unified format and can contain various types of data — numbers, text, images, audio, you name it. A dataset is essentially structured information organized for analysis, modeling, or other data-driven processes.</p><p>You might be thinking, “Okay, but what does this actually mean?” Fair point. A dataset is basically a pile of information collected about some topic for a specific reason. Don’t overthink it — you don’t even need to create one yourself to see them in action.</p><p>Take Instagram Reels, where many of us spend hours scrolling. Instagram analyzes your behavior and serves up a dataset of reels you’re likely to watch, essentially saying “here, scroll endlessly through these.” When you create a Spotify playlist, that’s the same process — you’re categorizing songs based on your current mood or situation. Maybe you have a “sad songs” playlist or a “workout mix.” That’s your personal dataset right there.</p><p>Think about a grocery store: all the product names, prices, expiration dates, and manufacturers together form a dataset. Each product is a “data point,” and its characteristics (price, brand, etc.) are its “attributes.”</p><p>Imagine you want to teach AI to recognize the color red. You’d need to show it pictures of red objects — tomatoes, strawberries, red apples, red cars, and so on. Each image is a data point, and its properties (color, shape, name) are the attributes.</p><h3>Creating a Dataset</h3><p>Creating a dataset is actually easier than you might think. There are two main approaches:</p><h4>1. Data Collection</h4><p>Data collection is the first and most crucial step in creating any dataset. You can do this several ways:</p><p><strong>Manual collection</strong> is the most straightforward approach. You go out and talk to people, conduct surveys, do library research. If you’re studying education trends, you might survey people from different age groups and record their responses. You’ve probably seen those stress-level questionnaires for college students — that’s manual data collection. It works great for smaller projects.</p><p><strong>Web scraping</strong> means automatically gathering information using the internet’s power. Say you want to compare phone prices across different retailers. Instead of visiting each website individually, you can write programs to automatically collect this information and build your dataset. This is invaluable for handling large volumes of data.</p><p><strong>Using existing datasets</strong> is often the most practical route. Frequently, the information you need has already been collected and shared by someone else. Platforms like Kaggle and Google Dataset Search offer thousands of datasets covering everything from economics to medicine. This saves tremendous time and effort.</p><p><strong>Sensor and device collection</strong> is increasingly common today. Weather stations collecting temperature and humidity data, fitness trackers monitoring your steps and heart rate, even your phone’s GPS data — all of these create valuable datasets. This data flows in continuously and automatically.</p><h4>2. Data Cleaning and Formatting</h4><p>Once you’ve collected your data, the next step is getting it into working condition. This process is crucial because, as they say, “garbage in, garbage out.”</p><p>The <strong>cleaning process</strong> involves fixing all the problems in your dataset. For instance, in an online store’s product catalog, some prices might be entered incorrectly, some product names might be missing, or the same item might be listed multiple times. You need to find and fix or remove these issues. Otherwise, your analysis will produce unreliable results.</p><p><strong>Formatting</strong> means standardizing all your information. Let’s say you’ve gathered date information from various sources — some use 3/15/2024, others use March 15, 2024, and still others use 2024–03–15. You need to convert everything to one consistent format (like MM/DD/YYYY). The same goes for text — it’s usually better to standardize everything as either uppercase or lowercase.</p><p>Skipping these steps and trying to analyze messy data will give you seriously flawed results. That’s why investing proper time in this stage is absolutely essential.</p><h4>The Bottom Line</h4><p>As you can see, datasets are everywhere in our daily lives and play a fundamental role in technological advancement. They’re the foundation that allows computers to understand our world and offer us smarter solutions. I hope this brief explanation helped clarify what datasets are all about.</p><p>Next time you see an app recommending something to you, remember there’s a massive dataset and lots of hard work behind that suggestion. And once you understand this, you’ll probably realize just how much information these platforms collect about you to make those recommendations — what you look at, for how long, what you like, what you comment on. Social media algorithms know us better than we know ourselves.</p><p>Their main goal? Keep you glued to your screen, which helps them show advertisers that people are highly engaged. How do they prove this? By showing data: “Look how interested people are, look how much time they spend on our platform.” Remember the golden rule: if a product is free, you’re probably the product being sold. Social networks are free, but the companies paying for ads are the real customers, and they’re buying your time, attention, and focus.</p><p>Now that I’ve shared that wake-up call, I’ll wrap this up. Thanks for reading!</p><h3>References:</h3><ul><li>National University LibGuides. (2025). Datasets — The Research Process.</li><li>University of Michigan Library Citation Help &amp; Oregon State University Research Data Services.</li><li>Wikipedia contributors. (2025). Data set. In Wikipedia, The Free Encyclopedia.</li><li>Kim, H., et al. (2024). A Reference Paper Collection System Using Web Scraping. Electronics, 13(14), 2700.</li><li>Renear, A. H., Sacchi, S., &amp; Wickett, K. M. (2010). Definitions of dataset in the scientific and technical literature. Proceedings of the American Society for Information Science and Technology, 47(1), 1–4.</li><li>University of Wisconsin-Madison Research Data Services. (2019). An Introduction to Web Scraping for Research.</li><li>Gregory, K., et al. (2023). How and Why Do Researchers Reference Data? A Study of Rhetorical Features and Functions of Data References in Academic Articles. Data Science Journal, 22(1).</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=38c03ef19053" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[5 Dəqiqədə Dataset (Verilənlər Toplusu) Nədir və Necə Yaradılır?]]></title>
            <link>https://gurbanali.medium.com/5-d%C9%99qiq%C9%99d%C9%99-dataset-veril%C9%99nl%C9%99r-toplusu-n%C9%99dir-v%C9%99-nec%C9%99-yarad%C4%B1l%C4%B1r-02914276bebc?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/02914276bebc</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[dataset]]></category>
            <category><![CDATA[data]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Sat, 06 Sep 2025 23:07:43 GMT</pubDate>
            <atom:updated>2025-09-07T03:31:35.424Z</atom:updated>
            <content:encoded><![CDATA[<p>Yəqin ki, bu termini hərbirimiz azı bir dəfə də olsun eşitmişik, oxumuşuq, görmüşük, son zamanlar tez-tez qarşılaşdığımız terminlərdi, səbəbi də elə süni intellektdi. Tez-tez eşitməyimizə baxmayaraq bu terminin mahiyyətini hələdi tam olaraq dərk edə bilmirik, ilk baxışdan çox texniki görünən, sanki sadəcə kompüter elmlərinə aid qəliz, başa düşmək üçün çətin olan mövzuya bənzəyir, ancaq məqsədim hər kəsin anlayacağı şəkildə bu termini 5 dəqiqədə izah etməkdi. İndi keçək parçalamağa, yeməyə və həzm etməyə. Spoiler verim məsələn “Spotify-ın arxasında milyonlarla istifadəçi davranışından toplanmış böyük dataset var.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/980/1*YrNzgpDFw8thxnUQ6K-XTQ.jpeg" /></figure><h4>Dataset Nədir?</h4><p>Termini başa düşmək üçün, məncə ilk növbədə sözün özündən danışmaq lazımdı, “DataSet” görünür ki, bu mürəkkəb sözdü. Hissələrə ayırdığımız zaman ingiliscə iki sözlə qarşılaşırıq, “Data” və “Set” sözləri ilə. Gəlin ilk növbədə başa düşməyə çalışaq ki, data nədi, set nədi və onların birləşib yaratdığı dataset nədi. <br>Data — sözünü Azərbaycan dilində məlumat, informasiya və ya verilən olaraq ifadə edirlər. Əslində Dataset termininin tərkibində olan data sözü informasiya, məlumat yox, “Data” sözünü Azərbaycan dilində “verilən” kimi ifadə etmək daha uyğundur. Çox vaxt “verilən” ilə “informasiya” qarışdırılır. Halbuki fərq ondadır ki, verilən sadəcə faktlar və ya simvollardır, informasiya isə insana məna və dəyər çatdıran verilənlərdir. Məsələn, mən burda müxtəlif simvollardan istifadə edərək yazıram. Bu yazını oxuyan Azərbaycanlı üçün bu — <strong>informasiya</strong>, amma latın qrafikasını bilməyən ərəb üçün isə sadəcə <strong>verilən</strong>dir.</p><p>“Set” sözünü “Çoxluq” termini kimi tərcümə etmək olar. “Çoxluq” bildiyimiz riyaziyyatdakı çoxluq, 4–5-ci siniflərdə, birləşmə və kəsişmə işarələrini qarışdırdığımız həmin mövzu. Termin olaraq <strong>“Çoxluq” sözünə belə izah verilir: </strong>riyaziyyatın əsas anlayışlarından biri; elementləri adlandırılan və hamı üçün ümumi xarakterik bir xüsusiyyətə sahib olan hər hansı bir obyektin dəsti, çoxluğu, toplusu olan riyazi bir obyektdir. Dərsə gedən uşaqlar çoxluğu, evdə yatan uşaqlar çoxluğu, Fransız dili bilən müəllimlər çoxluğu bilirikdə bu nümunələri.</p><p>“Dataset” sözünün bir-iki yerdə “Verilənlər toplusu” olaraq istifadə edildiyini gördüm, məncə bu istifadə qarışıqlıq yarada bilər. “Database” termini “Verilənlər Bazası” olaraq tərcümə olunur. Bu tərcümə bəzən qarışıqlıq yaradır, insanlar verilənlər toplusu və verilənlər bazası terminlərini həm hərfi həm məna olaraq oxşarlığına görə qarışdırır. Dataset — verilənlər toplusu, Database — verilənlər bazasıdır. Dataset adətən bir tədqiqat, analiz və ya model üçün konkret seçilmiş məlumat dəstini ifadə edir, database isə müxtəlif dataset-ləri də saxlayan geniş sistemdir.</p><p>Axır ki, gəlib çıxdım dataset nədir sualına. “Dataset” — müəyyən strukturda saxlanılan <strong>verilənlər toplusudur</strong>. Bu toplular analiz, modelləşdirmə və ya süni intellekt sistemlərində öyrənmə prosesi üçün əsas baza rolunu oynayır.<strong> <br></strong>Deyəcəksiniz a bala mən burdan nə başa düşüm? Düz deyirsiniz, bu dataset dedik, hansısa mövzu haqqında müəyyən məqsədlə toplanan məlumat yığınıdı. Bilirsiniz səhv etmədən, ən yaxşı misalı düşündüm. Ağlıma sosial media gəldi, səbəbi birazda bu yaxınlarda baxdığım bir sənədli filmdi, “The Social Dilemma”. Sosial şəbəkələr istifadəçi davranışları haqqında çox böyük datasetlər yaradır və bu datasetlər sayəsində uğurlu alqoritmlər inkişaf etdirə nəticə də bizi ekrandan aslı vəziyyətə sala bilirlər.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/682/1*joVXohA9tcEwDRc1vTTpHg.png" /><figcaption><a href="https://www.tableau.com/visualization/what-is-data-visualization">https://www.tableau.com/visualization/what-is-data-visualization</a></figcaption></figure><p>Bir marketdəki bütün məhsulların adları, qiymətləri, son istifadə tarixləri, istehsalçıları bunların hamısı bir datasetdir. Hər bir məhsul bir “data nöqtəsi”, onun xüsusiyyətləri isə “atributlar”dır.</p><p>Təsəvvür edin ki, siz süni intellektə qırmızı rəngi öyrətmək istəyirsiniz. Bunun üçün ona qırmızı rəngdə olan obyektlərin şəkillərini göstərməlisiniz. Bu datasetdə pomidorlar, çiyələklər, qırmızı almalar, qırmızı maşınlar və s. kimi qırmızı obyektlərin şəkilləri olacaq. Hər bir şəkil bir data nöqtəsi, onun rəngi, forması, adı isə atributları olacaq.</p><h4><strong>Dataset yaratmaq, əslində düşündüyünüzdən daha asandır. Əsasən iki əsas yanaşma var:</strong></h4><h4>1. Məlumatların Toplanması</h4><p>Məlumat toplama hər hansı bir dataset yaratmağın ilk və ən mühüm mərhələsidir. Bunu müxtəlif üsullarla edə bilərik:</p><p><strong>Əl ilə toplama</strong> ən sadə və birbaşa yoldur. Sadəcə özünüz çıxıb insanlarla danışır, sorğular keçirir, kitabxanalarda araşdırma aparırsınız. Məsələn, təhsil haqqında bir tədqiqat aparırsınızsa, müxtəlif yaş qruplarından insanlara suallar verərək onların cavablarını qeyd edirsiniz. Bəlkə universitet tələbələri üçün stress səviyyəsini ölçən anketlər görmüsünüz — bunlar da bu kateqoriyaya aiddir. Kiçik layihələr üçün kifayət qədər effektivdir.</p><p><strong>Veb-skrapinq</strong> isə internetin gücündən istifadə edərək avtomatik məlumat toplamaq deməkdir. Tutaq ki, müxtəlif mağazalarda telefon qiymətlərini müqayisə etmək istəyirsiniz. Hər saytı tək-tək gəzməkdənsə, xüsusi proqramlar yazaraq bu məlumatları avtomatik toplayıb öz datasetinizi yarada bilərsiniz. Böyük həcmli məlumatlar üçün çox faydalıdır.</p><p><strong>Hazır datasetlərdən istifadə</strong> ən praktik yoldur. Çox vaxt ehtiyacınız olan məlumatlar artıq kimsə tərəfindən toplanmış və paylaşılmış olur. Kaggle, Google Dataset Search kimi platformalarda minlərlə müxtəlif mövzuda dataset tapa bilərsiniz — iqtisadiyyatdan tutmuş tibbə qədər. Bu, vaxtınıza qənaət edir.</p><p><strong>Sensor və cihazlardan toplama</strong> müasir dövrdə getdikcə daha çox yayılır. Hava stansiyalarının temperatur və rütubət məlumatları, smart saatlarınızın addım sayğacı və ürək ritmi ölçüləri, hətta telefonunuzdakı GPS məlumatları — bunların hamısı dəyərli datasetlər yaradır. Bu məlumatlar davamlı və avtomatik toplanır.</p><h4>2. Məlumatların Təmizlənməsi və Formatlanması</h4><p>Məlumatları topladıqdan sonra növbəti mərhələ onları işlək vəziyyətə gətirməkdir. Bu proses həqiqətən çox önəmlidir, çünki atalar demişkən, “Nə əkərsən, onu da biçərsən”.</p><p><strong>Təmizləmə prosesi</strong> datasetinizdəki bütün problemləri həll etmək deməkdir. Məsələn, bir onlayn mağazanın məhsul siyahısında bəzi qiymətlər səhv yazılıb, bəzi yerlərdə məhsulun adı eksikdir, ya da eyni məhsul bir neçə dəfə qeyd olunub. Bunların hamısını tapıb düzəltmək və ya silmək lazımdır. Əks halda analiz zamanı yanlış nəticələr əldə edərsiniz.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/980/1*iwVZ-J8JlIkvwUtLSzrXlA.jpeg" /></figure><p><strong>Formatlama isə</strong> bütün məlumatları vahid standarda gətirmək deməkdir. Tutaq ki, müxtəlif mənbələrdən tarix məlumatları toplamısınız — bəziləri 15/03/2024, bəziləri 15 Mart 2024, bəziləri isə 2024–03–15 formatındadır. Bunları hamısını eyni formata (məsələn, GG.AA.İİİİ) çevirməlisiniz. Eyni şəkildə mətnlərlə işləyirsinizsə, hər şeyi ya böyük hərflə, ya kiçik hərflə yazmaq daha yaxşıdır.</p><p>Bu addımlar olmadan məlumatlarınızı analiz etməyə çalışsanız, çox səhv nəticələr əldə edə bilərsiniz. Ona görə də bu mərhələyə lazımınca vaxt ayırmaq çox vacibdir.</p><h4>Nəticə</h4><p>Gördüyünüz kimi, datasetlər gündəlik həyatımızın hər yerindədir və texnologiyanın inkişafında əvəzsiz rol oynayır. Onlar, kompüterlərin dünyanı öyrənməsi və bizə daha ağıllı həllər təklif etməsi üçün əsas təməldir. Ümid edirəm ki, bu qısa yazı datasetlər haqqında əsas anlayışları sizə çatdıra bildi. Növbəti dəfə bir tətbiqin sizə nəyisə tövsiyə etdiyini görəndə, bilin ki, arxasında böyük bir dataset və onun üzərində aparılan zəhmətli iş dayanır. <em>Birdə ki, başa düşdünüz də yəqin o tövsiyyələr üçün nə qədər sizin haqqınızda məlumat toplamalıdılar, nəyə nə qədər baxdınız, nəyi bəyəndiniz, nəyə fikir bildirdiniz. Sosial media alqoritmləri bizi bizdən yaxşı tanıyır. Tək məqsədləri bizi ekrandan aslı vəziyyətə salmaqdı, hansı ki, onlar reklam üçün pul ödəyən şirkətlərdə bir növ etibar hissi yaratmalıdı axı. Necə yaradırlar, əllərində ki, dataları göstərirlər ki, baxın insanlar bu qədər maraqlanır, bu qədər vaxt məndən istifadə edir falan-filan. </em><strong><em>Unutmayın, əgər nəsə pulsuzdursa, yəqin ki, orda satılan sizsiniz</em></strong><em>. Sosial şəbəkələr də pulsuzdu. Pulunu ödəyən reklam verən şirkətlərdi, alınansa bizim vaxtımız, diqqətimiz, qayğımızdı.</em></p><p>Sosial mesajımıda verdiyimə görə bitirə bilərəm, oxuduğunuz üçün təşəkkürlər!</p><h4>Ədəbiyyat:</h4><ol><li>National University LibGuides. (2025). Datasets — The Research Process.</li><li><a href="https://conncoll.libguides.com/c.php?g=1015547&amp;p=7368878">University of Michigan Library Citation Help &amp; Oregon State University Research Data Services.</a></li><li><a href="https://en.wikipedia.org/wiki/Data_set">Wikipedia contributors. (2025). Data set. In Wikipedia, The Free Encyclopedia.</a></li><li>Kim, H., et al. (2024). A Reference Paper Collection System Using Web Scraping. Electronics, 13(14), 2700.</li><li>Renear, A. H., Sacchi, S., &amp; Wickett, K. M. (2010). Definitions of dataset in the scientific and technical literature. Proceedings of the American Society for Information Science and Technology, 47(1), 1–4.</li><li>University of Wisconsin-Madison Research Data Services. (2019). An Introduction to Web Scraping for Research.</li><li>Gregory, K., et al. (2023). How and Why Do Researchers Reference Data? A Study of Rhetorical Features and Functions of Data References in Academic Articles. Data Science Journal, 22(1).</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=02914276bebc" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Böyük Dil Modelləri (LLM) necə düşünür, necə cavab verir?]]></title>
            <link>https://gurbanali.medium.com/b%C3%B6y%C3%BCk-dil-modell%C9%99ri-llm-nec%C9%99-d%C3%BC%C5%9F%C3%BCn%C3%BCr-nec%C9%99-cavab-verir-74590fbe7c32?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/74590fbe7c32</guid>
            <category><![CDATA[token]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[tokenization]]></category>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Fri, 29 Aug 2025 02:45:28 GMT</pubDate>
            <atom:updated>2025-08-29T02:45:28.843Z</atom:updated>
            <content:encoded><![CDATA[<p>Təsəvvür edin ki, kimsə sizə yarımçıq cümlə deyir: “Səhər tezdən qalxıb bazara…” — beyniniz dərhal bu cümləni tamamlamağa çalışır, elə deyilmi? “getdim”, “getməliyəm” və ya “gedəcəyəm” kimi sözlər ağlınıza gəlir. Məhz <strong>Böyük Dil Modelləri də (LLM)</strong> təxminən eyni işi görür, sadəcə bunu milyardlarla mətn parçasından öyrəndiyi nümunələrə əsasən edir.</p><h3>Token nədir?</h3><p>LLM-lər üçün mətn sadəcə hərflərdən ibarət deyil. Böyük Dil Modelləri (LMM) böyük təxmin modelləridir, ancaq burda təxmin etdikləri şey sözlər yox, “token” adlanan xüsusi hissələrdi. Bu modellər buna görə mətni “token” adlanan kiçik hissələrə bölürlər. Token tam bir söz (“kitab”), sözün bir hissəsi (“-lar” şəkilçisi) və ya hətta tək hərf, rəqəm, hətta hər hansı durğu işarəsi belə ola bilər. Məsələn, “oxuyuram” sözü bəzən “oxu” və “yuram” kimi iki tokenə parçalanır. Bu, modelin necə öyrədilməsindən asılıdır.</p><p>Niyə məhz token? Çünki bu üsul modelin həm “oxumaq”, həm “oxuyuram”, həm də “oxumuşam” sözlərində eyni kökü tanımasına imkan verir. Bu da ona dilin strukturunu daha yaxşı başa düşməyə kömək edir.</p><h3>Sözlərdən rəqəmlərə</h3><p>İnsan beyni sözləri anlayır, kompüterlər isə yalnız rəqəmlərlə işləyir. LLM hər tokeni çoxölçülü bir <strong>vektora</strong> çevirir. Bu vektorlar sözün mənasını, kontekstini və digər sözlərlə əlaqəsini daşıyır. Məsələn, “it” və “pişik” tokenlərinin vektorları bir-birinə yaxın olur, çünki hər ikisi ev heyvanıdır. “Maşın” sözünün vektoru isə bu sözlərin vektorlarından tamamilə fərqli olmalıdı.</p><h3>Hansı söz vacibdir?</h3><p>LLM-lərin ən güclü mexanizmlərindən biri “diqqət mexanizmi”dir (attention mechanism). Bu sistem modelə cümlədə hansı sözlərin bir-biri ilə daha çox əlaqəli olduğunu müəyyən etməyə imkan verir. Məsələn, <strong>“Alma bahadır”</strong> cümləsində “alma” sözünün meyvə, yoxsa “alma” felinin əmr forması olduğunu digər sözə, yəni<strong> “bahadır” </strong>sözünə baxaraq təyin edir.</p><p>Model hər tokeni işləyərkən bütün əvvəlki tokenlərə “baxır” və onların hər birinə fərqli dərəcədə diqqət yetirir. Bu, insanın oxuyarkən vacib sözləri xatırlamasına bənzəyir.</p><p>LLM-in əsas işi növbəti tokeni proqnozlaşdırmaqdır. “Bakı Azərbaycanın…” yazdığınız zaman model düşünür: statistik olaraq bu kontekstdə ən çox hansı söz gələ bilər? “Paytaxtıdır” cavabı 85% ehtimalla, “şəhəridir” 10% ehtimalla, başqa sözlər daha az ehtimalla. Model bu ehtimallardan birini seçir və prosesi davam etdirir.</p><p>Bu proses token-token davam edir. Hər yeni token əvvəlki bütün tokenlərə əsasən seçilir. Beləliklə, model uzun, mənalı cavablar yarada bilir</p><p>LLM-lər internetdən, kitablardan və məqalələrdən toplanmış nəhəng mətn korpusları üzərində təlim keçir. Təlim zamanı model milyardlarla cümlə görür və dilin <strong>qanunauyğunluqlarını</strong> öyrənir: qrammatika qaydaları, faktlar, üslublar, hətta zarafatlar belə.</p><p>Maraqlısı odur ki, heç kim modelə birbaşa “feil budur, isim budur” demir. Model bunları özü kəşf edir, uşağın danışmağı öyrənməsi kimi. Milyonlarla nümunə görəndən sonra “yazmaq” sözündən sonra çox vaxt ya obyekt, ya da feil forması gəldiyini “anlayır”.</p><p>Siz sual verəndə model əslində <strong>düşünmür; </strong>sadəcə mürəkkəb statistik hesablamalar aparır. Sualınızdakı tokenlər onun “yaddaşındakı” milyardlarla <strong>qanunauyğunluqla</strong> müqayisə olunur və ən uyğun cavab token-token qurulur.</p><p><strong>Bəs necə? Gəlin bunu uyğun nümunə ilə izah edək:</strong></p><p><em>“Python neçənci ildə buraxılıb?” sualını nümunə olaraq götürək. Model bu sualı başa düşüb, bu sualdı, mən buna cavab verməliyəm demir. Elədiyi şey bu məqalənində əvvəlində danışdığımız kimi, tamamlamaqdı. Modelə belə bir sual ünvanlananda o “düşünür” belə bir mətnə insanlar nə kimi cavablar yazıb və ya insanlar necə cavab yazardı? Modelin datasetində əzbər olaraq bu sualın cavabı olmasa belə, internetdən əldə etdiyi bu tip məlumatlar var. “1991-ci ildə buraxılıb”, “1991-ci ildə Van Rossum tərəfindən buraxılıb”, “Van Rossum tərəfindən 1991-ci ildə buraxılıb”, “1991-də buraxıldı”. Model bunlardan yola çıxaraq ilk statistik təxminini edir. Göründüyü kimi hər 3 cümlə 1991-lə başlayır, bu suala cavab olaraq yazıla biləcək ən yüksək ehtimallı token 1991 olduğu üçün model öz cavabına 1991-lə başlayır. Model sonrakı tokeni təxmin edir, bu çox vaxt boşluq (space) olur, sonrakı token isə ildə sözü olur, çünki datasetində olan cavablarda daha çox “ildə” sözü işlənib, həmçinin bayaqda qeyd etdiyimiz kimi, model dilin tendensiyalarınıda öyrənmiş olur, minlərlə mətndə tarixlərdən sonra “ildə” (və ya “ilində”) sözünün işləndiyini o artıq öyrənib. Yəni bu öyrənmə təkcə pythonla əlaqəli cavablardan yox, həm də dil miqyasındakı nümunələrlə də bağlıdı. Bu modelin təkcə əzbərləmədiyini, ümumiləşdirdiyini də göstərir. Modelin verəcəyi cavab nəticədə “1991-ci ildə buraxıldı” olardı.</em></p><p>Bu prosesdə “temperatur” adlanan parametr də var — bu, modelin nə qədər “yaradıcı” olacağını müəyyən edir. Aşağı temperaturda model təhlükəsiz, gözlənilən cavablar verir. Yüksək temperaturda isə daha riskli, maraqlı, bəzən də qəribə cavablar yaranır.</p><p>LLM-lər heyrətamizdir, amma onlar “başa düşmür”. Onların “biliyi” statistik <strong>qanunauyğunluqlardır</strong>, real dünya təcrübəsi deyil. “Alma qırmızıdır” deyəndə model qırmızı rəngin necə göründüyünü bilmir sadəcə bu sözlərin tez-tez birlikdə işləndiyini “bilir”.</p><p>Burada önəmli bir nöqtə var bu modellər; niyətini və hisslərini anlamır. Sadəcə bu sualdan sonra insanlar nə yazardı sualına statistiki bir cavab istehsal edir. Buna görə hər dəfəsində bir sonrakı ən yaxşı tokeni təxmin edir, başa düşmür, əsas vermir, sorğulamır, amma çox yaxşı ümumiləşdirir və ona görədə biz bunu sanki “ağıl yürüdür” kimi başa düşürük.</p><p>Buna baxmayaraq, bu texnologiya insan dilini emal etmək və yaratmaq sahəsində inqilabi addımdır. Hər keçən gün daha da təkmilləşir və yeni imkanlar açır. Kim bilir, bəlkə bir gün bu modellər həqiqətən də “anlayacaqlar” — amma hələlik onlar sadəcə çox, çox yaxşı statistiklərdir.</p><p>Beləliklə, LLM-lər milyardlarla mətn nümunəsindən öyrənmiş, sözləri rəqəmlərə çevirən və statistik proqnozlar əsasında cavab yaradan mürəkkəb sistemlərdir. Onlar bizim dilimizi “başa düşmürlər”, amma o qədər yaxşı təqlid edirlər ki, fərqi hiss etmək çətindir. Bu isə süni intellektin gücünü bizə göstərməyə bəs edir.</p><h3>İstinadlar:</h3><ol><li><a href="https://arxiv.org/abs/1706.03762"><strong><em>Vaswani, A. et al. (2017).</em></strong><em> “Attention Is All You Need”</em></a></li><li><a href="https://arxiv.org/abs/1810.04805"><strong>Devlin, J. et al. (2018).</strong> “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”</a></li><li><a href="https://www.researchgate.net/publication/341724146_Language_Models_are_Few-Shot_Learners"><strong>Brown, T. et al. (2020).</strong> “Language Models are Few-Shot Learners”</a></li><li><a href="https://aclanthology.org/P16-1162/"><strong>Sennrich, R. et al. (2016).</strong> “Neural Machine Translation of Rare Words with Subword Units”</a></li><li><a href="https://arxiv.org/abs/1808.06226"><strong>Kudo, T. &amp; Richardson, J. (2018).</strong> “SentencePiece: A simple and language independent subword tokenizer”</a></li><li><a href="https://web.stanford.edu/~jurafsky/slp3/"><strong>Jurafsky, D. &amp; Martin, J.H.</strong> “Speech and Language Processing” (3rd Edition)</a></li><li><a href="https://platform.openai.com/tokenizer"><strong>OpenAI Tokenizer Tool</strong></a></li><li><a href="https://jalammar.github.io/illustrated-transformer/">Jay Alammar’s Blog — “The Illustrated Transformer”</a></li><li><a href="https://github.com/google-research/bert/blob/master/multilingual.md"><strong>Google’s Multilingual BERT</strong></a></li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=74590fbe7c32" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mineral gübrələr zərərlidir?]]></title>
            <link>https://gurbanali.medium.com/mineral-g%C3%BCbr%C9%99l%C9%99r-z%C9%99r%C9%99rlidir-e6bb72e2125f?source=rss-37199c07f911------2</link>
            <guid isPermaLink="false">https://medium.com/p/e6bb72e2125f</guid>
            <dc:creator><![CDATA[Gurbanali Feyzullayev]]></dc:creator>
            <pubDate>Mon, 18 Aug 2025 23:57:36 GMT</pubDate>
            <atom:updated>2025-08-18T23:57:36.352Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Mineral gübrələr zərərlidir?</strong></p><p>İnsanların gübrələr haqqında bir çox müxtəlif fikirlərə sahibdir. Bəziləri gübrələrlə pestisidləri qarışdırır, bəziləri mineral gübrələri “kimyəvi gübrə” adlandırır və sanki bunların istifadəsinin dünyanın sonuymuş kimi qələmə verir, bəziləri də deyir düzünə “peyin”. Bu haqda ümumiyyətlə bir çox fikirlər mövcuddur, bir çox fermer onların əvəz olunmaz olduğunu düşünür, bəziləri zərərli olduğunu, bəziləri istifadəsinin heç nəyi dəyişmədiyini. Gəlin doğru cavabı tapmaq üçün, mineral gübrələrin nə olduğunu elmi aspektdən izah edək. Həm də bir bioloqun səpgisindən. Könül istəyərdi Qarabağ nəğməsiylə, “gübrə meşoğunun” tanıtım çarxıyla başlasın bu yazı. Ancaq bir elm adamına yaraşan istinadlar verərək, statistikanı ortaya qoyaraq şəffaf şəkildə öz araşdırmasını, elmi işini, elmi nəticəsini ortaya qoymaqdı. Ancaq bu səfər konsepti biraz dəyişməli oldum. Elə yazacam ki, nə statistika olsun, nə də termin sıxlığı olacaq, elə ki, eşşək oxusa oda başa düşsün. Yenə də bu yazı, yarım-yapalaq oxunmuş, 6-cı sinif biologiya dərsliyindən öyrənilmiş məlumatları satmağa çalışan, onuda düzgün bacarmayan insanların yazdığı ssenaridən daha çox şey ehtiva edəcək. Gəvəzəlik edərək diqqətinizi çəkdimsə gəlin izah verək;</p><p><strong>Mineral gübrə nədir?</strong></p><p>Mineral gübrələr torpağın məhsuldarlığını artırmaq üçün istifadə olunan qida maddələridir. Onların əsas tərkibində azot, fosfor və kalium olur. Bu elementlərsə öz sırasında təkcə gübrələrdə deyil təbiətin hər yerdə var, Azot nəfəs aldığımız havanın həcmcə 78%-ini təşkil edir. Kalium, fosfor, azot hər üçü onsuzda torpaqda, suda hətta insan orqanizmində də var. Hətta bu elementlər “makroelementdir” və insan orqanizmimizdə baş verən bir çox həyati funksiyanın mərkəzində dayanır; Azot canlılıq üçün ən təməl üzvi maddə olan proteinlərin tərkib hissəsidir. Proteinlər, idmanla məşğul olanların ağlına bu sözü oxuyan saniyə əzələ inkişafı üçün vacib olan “sintetik” məhsul ağıla gəldi. Proteinlərin nə qədər vacib olduğunu dərk etmək üçün gərək bioloq olasan. Azot həm də “DNA və RNA”-nında tərkibində var, (azotlu əsaslar: Adenin, quanin, sitozin, urasil, timin.) bu maddələr olmasa, ümumiyyətlə bu gün nə mən bu mövzunu izah edə bilirdim, nə də siz bunu oxuya bilirdiniz. Kalium elementi olmasaydı, bu mətni nə oxuya bilərdiniz, nə də dərk edə, çünki bu element olmadan sinir impulslarının ötürülməsi mümkün deyil, nə impuls ötürməke, heç nəfəs belə alanmazsınız. Bu element olmadan yaşayanmazsınız. Eynisi Fosfor üçündə keçərlidi, “Hüceyrələrimizin enerji valyutası” hesab olunan ATF-in (Adenozin trifosfat) adından da göründüyü kimi tərkibində fosfor var, əsas məsələ elə fosfordu. Bir sözlə bu elementlər təbiətin hər yerindədir. Başqa sözlə, mineral gübrə tamamilə təbii elementlərin konsentrat halıdır. Yuxarıdan da göründüyü kimi, bu elementlərin nəinki, zərəri var, hətta xeyri var. Əlbəttə hər şey qədərində gözəldi, xeyirlidi. Nizami Gəncəvi demişkən; “Bir inci saflığı varsa da suda, Artıq içiləndə dərd verir o da.”</p><p><strong>Niyə zərərsizdi?</strong></p><p>Əksər insanlar mineral gübrəni kimyəvi dərman və ya zəhər kimi təsəvvür edir. Halbuki, onlar sadəcə bitkinin qidasıdır. Necə ki, insan sağlam qalmaq üçün vitamin və minerallara ehtiyac duyur, bitkilər də böyümək, məhsul vermək üçün əlbəttə müəyyə maddələrə ehtiyac duyur. Bunlarda yuxarıda qeyd etdiyimiz kimi, azot, fosfor və kalium elementləridir və bu elementləri bitki mineral gübrələrdən rahatlıqla mənimsəyə bilir.</p><p>Ən önəmlisi isə budur: düzgün miqdarda istifadə olunduqda mineral gübrələrin nə torpağa, nə məhsula, nə də insan sağlamlığına heç bir mənfi təsiri yoxdur.</p><p><strong>Yanlış düşüncələr haradan yaranır?</strong></p><p>Bəzən televiziyada, sosial şəbəkələrdə, Enactusun finalında filan, “gübrələnmiş məhsullar zərərlidir” kimi məlumatlar yayılır. Əslində, bu iddiaların kökü daha çox yanlış istifadəyə dayanır. Məsələn, əgər fermer ehtiyacdan artıq gübrə verərsə, torpaqda qalıq maddələr arta bilər. Bu isə artıq aqrotexniki səhvdir, gübrənin özündən qaynaqlanan problem deyil. Düzgün normada istifadə edildikdə isə belə bir risk mövcud olmur. Azərbaycan bazarında düzgün gübrələmə prosesi ilə texnoloji həllər təqdim edən bir çox startap var. Məsələn: <a href="https://aqrosphere.com/az/">https://aqrosphere.com/az/</a></p><p><strong>Mineral gübrələrin faydaları</strong></p><ul><li>Məhsuldarlığı artırır, fermerin zəhmətinin qarşılığını almasına kömək edir.</li><li>Bitkiləri gücləndirir, xəstəliklərə qarşı daha davamlı edir.</li><li>Məhsulun dad və keyfiyyət göstəricilərini yaxşılaşdırır.</li><li>Qida təhlükəsizliyi baxımından insanların kifayət qədər məhsul əldə etməsinə imkan yaradır.</li></ul><p><strong>Nəticə</strong></p><p>Mineral gübrələr haqqında deyilən mənfi fikirlərin çoxu mifdən ibarətdir. Onlar təbiətdə onsuz da mövcud olan elementlərin sadəcə bitkiyə əlçatan formada təqdim edilməsidir. Elmi araşdırmalar da göstərir ki, normaya uyğun tətbiq edildikdə mineral gübrələrin insan sağlamlığına heç bir ziyanı yoxdur.</p><p>Əslində, gübrələrsiz kənd təsərrüfatını təsəvvür etmək çətindir. Onlar həm fermerin, həm də istehlakçının dostudur — çünki sağlam məhsulun arxasında məhz düzgün gübrələmə dayanır.</p><p>Uzun sözün qısası, “Qarabağın küləyi güclü, gübrəsi keyfiyyətli olur.”</p><p><strong>İstinadlar:</strong></p><p><strong>1.</strong> <strong>Qarabağ küləyi.</strong></p><p><strong>2.</strong> <strong>Enactus Azərbaycan Milli Çempionatının final mərhələsi.</strong></p><p><strong>3.</strong> <strong>Nizami Gəncəvi, Leyli və Məcnun, Az danışmağın gözəlliyi.</strong></p><p><strong>Gərək Nizami vaxtında yazardı ki, Bilmirsənsə danışma dinmə, burnun girməyəsi yerə bütün bədəninlə girmə.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e6bb72e2125f" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>