• BAJARDI:ZOKIRJANOV D TEKSHIRDI : QOBILOV S Toshkent -2023
  • Guruhi talabasining




    Download 1.02 Mb.
    Pdf ko'rish
    Sana22.11.2023
    Hajmi1.02 Mb.
    #103349
    Bog'liq
    mashinalided
    LAB I QISM 2022


    O’ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR 
    VAZIRLIGI MUHAMMAD AL-XORAZIMIY NOMIDAGI 
    TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
    KIBERXAVFSIZLIK FAKULTETI “ 711-21AXO`” GURUHI  
    TALABASINING “MASHINALI OQITISHGA 
    KIRISH‘’FANIDAN 
     

    AMALIY ISHI 
    BAJARDI:ZOKIRJANOV D 
    TEKSHIRDI:
    QOBILOV S
     

    Toshkent -2023 


    REJA 
    1. Chiziqli regressiya tushunchasi. 
    2. Ikkinchi darajali polynomial regressiya tushunchasi. 
    3. y=wx+b va y=w1x2+w2x+b funksiyalardagi og`irliklar va bias qiymatlarini 
    topish.
    4. Gradient pastlash va Loss grafigi. 
     
     


    1. 
    Regressiya bu – ma’lumotlarni intellektual tahlil qilish usullaridan biri bo’lib, obyekt 
    yoki jarayonga tegishli o'zgaruvchilar o'rtasidagi o'zaro bog'liqlikni baholash uchun 
    statistik jarayonlar to'plami hisoblanadi. 
    Chiziqli regressiya tushunchasi 
    Chiziqli regressiya tushunchasi. y=wxfunksiyadagi Gradient (og`irlik) qiymatini topish. 
    Gradient pastlash grafigi va Loss grafigini xosil qilish. 
    y = -x 
    import math 
    import matplotlib.pyplot as plt 
    x = [1, 2, 3] 
    y = [-1, -2, -3] 
    w = [0] 
    a = 0.05 
    loss = [50] 
    for i in range(1, 20) : 
    loss.append(0) 
    t=0 
    for j in range(len(x)):
    loss[i] += math.pow(w[i-1]*x[j]-y[j], 2)
    t+= (w[i-1]*x[j]-y[j])*x[j] 
    loss[i]/=len(x) 
    if loss[i] 
    w.append(w[i-1]-a*(2/len(x))*t) 


    print(loss[i]) 
    print("w = ", w[-1]) 
    plt.plot(loss) 
    plt.show 
    Ikkinchi darajali polynomial regressiya tushunchasi. y=w1x2+w2xnoma’lum 
    koeffitsientlarni toppish. Loss grafigini chiqarish. 
    y = 3x2-3x 
    import math 
    import matplotlib.pyplot as plt 
    x = [1, 2, 3] 
    y = [0, 6, 18] 
    w1 = [4] 
    w2 = [-2] 
    a = 0.001 
    loss = [70] 
    for i in range(1, 200) : 
    loss.append(0) 
    t=0 
    for j in range(len(x)):
    loss[i] += math.pow(w1[i-1]*math.pow(x[j],2)+w2[i-1]*x[j]-y[j], 2)
    t+= (w1[i-1]*math.pow(x[j],2)+w2[i-1]*x[j]-y[j])*x[j] 
    loss[i]/=len(x) 
    if loss[i] 


    w1.append(w1[i-1]-a*(2/len(x))*t) 
    w2.append(w2[i-1]-a*(2/len(x))*t) 
    print("w1 = ", w1[-1])
    print("w2 = ", w2[-1])
    print("y = %dx^2 + %fx" % (round(w1[-1]), round(w2[-1])))
    print("loss = ", loss) 
    plt.plot(loss) 
    plt.show() 
    Regression tahlil chiziqli yoki nochiziqli, o’z navbatida logistik regressiya 
    usullari asosida amalga oshiriladi. 
    Regression tahlil asosan bashorat qilish va prognoz qilish uchun keng
    qo'llaniladi va hozirda ushbu usulning ishlatilishi mashinali o’qitish sohasi bilan mos 
    keladi.
    Regressiya asosida yaratiladigan model ma'lumotlarni berilgan nuqtalardan o'tgan eng 
    yaxshi giper tekislikka (nuqtalar o’rtasidan o’tishiga) moslashtirishga harakat qiladi. 
    Regression tahlilda turli xil modellardan foydalanish mumkin, eng sodda model 
    chiziqli regressiya asosida quriladi. 
    import
    matplotlib.pyplot 
    as
    plt 
    import
    numpy 
    as
    np 
    x = np.ar-
    ray([
    3
    ,
    5
    ,
    7
    ,
    4
    ,
    8
    ,
    9
    ,
    12
    ,
    15
    ,
    17
    ,
    18
    ,
    20
    ]) 
    y = np.ar-
    ray([
    12
    ,
    15
    ,
    17
    ,
    10
    ,
    8
    ,
    19
    ,
    24
    ,
    32
    ,
    28
    ,
    37
    ,
    30
    ]) 
    # Scatter plot of the given data
    plt.scatter(x, y) 
    # Linear regression model
    p = np.polyfit(x, y, 
    1

    # Model predictions
    ym = np.polyval(p, x) 
    # Model evaluation
    print
    (np.col-
    umn_stack((x, y, ym, 
    abs
    (y-ym)))) 
    # Plotting the regression line
    plt.plot(x, ym, 
    'r'

    # Displaying the plot
    plt.show() 


     


    . Chiziqli regressiya tushunchasi. y=wx funksiyadagi Gradient (og`irlik) qiymatini 
    topish. Gradient pastlash grafigi va Loss grafigini xosil qilish.
    import numpy as np
    import matplotlib.pyplot as plt 
    import math
    x = [1,2,3] 
    y = [2,4,6] 
    r = np.zeros(5) 
    for w in range(0,5): 
    loss = 0 
    for j in range(0,3): 
    loss =loss + (w*x[j]-y[j])*(w*x[j]-y[j]) 
    r[w]= loss/3 
    print(f'r[{w}]=',r[w]) 
    2. Ikkinchi darajali polynomial regressiya tushunchasi. y=w1x 2+w2x noma’lum 
    koeffitsientlarni toppish. Loss grafigini chiqarish. 


    import numpy as np
    import matplotlib.pyplot as plt 
    import math
    n = int (input('signal soni = ')) 
    m = int(input('testlaw qiymati = ')) 
    x = [1,2,3] 
    y = [2,4,6] 
    w = np.zeros(n) 
    r = np.zeros(n) 
    w[0]=4 
    a = 0.01 
    for i in range(1,n): 
    for j in range(0,3): 
    w[i]=w[i-1]-a*2*(w[i-1]*x[j]-y[j])*x[j] 
    r[i-1]=(w[i-1]*x[j]-y[j])**2 
    if 0.001z= w[i-1]*m 
    print(z) 
    plt.plot(r) 
    plt.show() 


    2. Sigmoid aktivlash funksiyasi yordamida sinflashtirish 
    Sigmoid aktivatsiya funksiyasi, neyron tarmoqlarida ishlatiladigan bir ak-
    tivatsiya funksiyasidir. Bu funksiya, 0 va 1 oralig'ida qiymatlar qaytaradi va ney-
    ron tarmoqining chiquvchi qiymatini aniqlashda foydalaniladi. Sigmoid funksiyasi 
    quyidagicha ifodalash mumkin:
    Python-da sigmoid funksiyasini quyidagicha yozish mumkin: 
    Sigmoid funksiyasini sinflashtirish uchun, bir nechta o'zgaruvchilarni o'z ichiga olgan 
    ma'lumotlar to'plamini ishlatish mumkin. Misol uchun, quyidagi kodda, "X" va "y" 
    o'zgaruvchilari uchun ma'lumotlar to'plami yaratilgan va "LogisticRegression" kutubx-
    onasi yordamida sinflashtirish amalga oshirilgan: 
     


    Bu kod, "X" va "y" o'zgaruvchilari uchun ma'lumotlar to'plamini yaratadi. 
    "LogisticRegression" kutubxonasi yordamida sinflashtirish modeli yaratiladi va "fit()" 
    yordamida ma'lumotlar to'plamiga mos keladi. "predict()" yordamida esa yangi 
    qiymatlar uchun sinflashtirish aniqlanadi. 
    Logistik regressiya, ikki sinflangan ma'lumotlar uchun ishlatiladigan bir regressiya 
    turi hisoblanadi. Bu regressiya turi, sigmoid aktivatsiya funksiyasidan foydalaniladi. 
    Sigmoid funksiyasi, qiymatlarni 0 va 1 orasida cheklovli qiladi va regressiya natijalari 
    sinflarga bo'linadi. 
    Quyidagi kodda, sklearn kutubxonasi yordamida logistik regressiya modeli yarati-
    ladi va iris ma'lumotlar to'plami uchun sinflandirish amaliyoti bajariladi. Natijalar, 
    matplotlib kutubxonasida chizilgan grafikda ko'rsatiladi: 
    from
    sklearn.datasets 
    import
    load_iris 
    from
    sklearn.linear_model 
    import
    LogisticRegression 
    import
    matplotlib.pyplot 
    as
    plt 
    import
    numpy 
    as
    np 
    # Iris ma'lumotlar to'plami yuklanadi
    iris = load_iris() 
    # Faqat 2 ta xususiyatni olish
    X = iris.data[:, :
    2

    y = iris.target 


    # Logistik regressiya modeli yaratiladi
    clf = LogisticRegression(random_state=
    0
    ).fit(X, y) 
    # Natijalar hisoblanadi
    xx, yy = np.mgrid[
    4
    :
    8
    :
    .01

    2
    :
    4.5
    :
    .01

    grid = np.c_[xx.ravel(), yy.ravel()] 
    probs = clf.predict_proba(grid)[:, 
    1
    ].reshape(xx.shape) 
    # Grafik chiziladi
    f, ax = plt.subplots(figsize=(
    8

    6
    )) 
    contour = ax.contourf(xx, yy, probs, 
    25
    , cmap=
    "RdBu"
    , vmin=
    0
    , vmax=
    1

    ax_c = f.colorbar(contour) 
    ax_c.set_label(
    "$P(y = 1)$"

    ax_c.set_ticks([
    0

    .25

    .5

    .75

    1
    ]) 
    # Ma'lumotlar to'plami chiziladi
    for
    i, color 
    in
    zip
    ([
    0

    1

    2
    ], [
    'blue'

    'red'

    'green'
    ]): 
    idx = np.where(y == i) 
    ax.scatter(X[idx, 
    0
    ], X[idx, 
    1
    ], c=color, label=iris.target_names[i], 
    cmap=
    "RdBu"
    , edgecolor=
    "white"
    , s=
    200

    ax.
    set
    (title=
    "Logistik regressiya"
    , xlabel=
    "X1"
    , ylabel=
    "X2"

    ax.legend() 
    plt.show() 
     


    Ikkinchi darajali polynomial regressiya, o'z nomidan ma'lum bo'lgan bir regressiya turi. 
    Bu, bitta o'zgaruvchili ma'lumotlar (independent variable) bo'yicha ma'lumotlarni 
    boshqa o'zgaruvchili ma'lumotlar (dependent variable) ga moslash uchun ishlatiladi. Bu 
    regressiya turi ikkinchi daraja (kvadratik) funksiyalarni o'rganishda juda foydalaniladi. 
    Ikkinchi darajali polynomial regressiyada umumiy formulani quyidagicha ifodalash 
    mumkin: 
    \[y = \beta_0 + \beta_1x + \beta_2x^2 + \varepsilon\] 
    Bu formulada: 
    - \(y\) - o'zgaruvchili ma'lumot (dependent variable), 
    - \(x\) - boshqa o'zgaruvchili ma'lumot (independent variable), 
    - \(\beta_0\), \(\beta_1\), va \(\beta_2\) - regressiya ko'efitsientlari, 
    - \(x^2\) - \(x\) ning kvadrati
    - \(\varepsilon\) - o'zgaruvchilik (residual) termi (yani, modelning real ma'lumotlardan 
    qancha qat'iy farq qilayotganini ifodalovchi term). 
    Ikkinchi darajali polynomial regressiya esa, o'zgaruvchili ma'lumotlar va ularning 
    kvadratlarini o'z ichiga oladi. Bu, ma'lumotlar o'rtasidagi ikki-bosqichli munosabatni 
    boshqa qismlarda hosil qilish uchun foydalaniladi. Kvadratning qo'shish orqali, 
    regressiya modelining o'zgaruvchili ma'lumotlarga qanday o'zgarishlarga olib kelishi 
    haqida ko'proq ma'lumot olish mumkin. 
    Ikkinchi darajali polynomial regressiya tushunchasini tushuntirishda, ko'rsatkichlar, 
    grafiklar yoki statistik ma'lumotlar yordamida regressiya modelining ma'lumotlarni 
    qanday yaxshi ifodalayotganini tahlil qilish kerak bo'ladi
    Siz "y = wx + b" va "y = w1x2 + w2x + b" funksiyalardagi og'irliklar (weights) va bias 
    qiymatlarni topishni so'ragan bo'lasiz. Bu funksiyalarda \(w\) lar og'irliklarni, \(b\) lar 
    bias qiymatlarini ifodalaydi. 


    Birinchi formulada: 
    \[y = wx + b\] 
    - \(w\) - og'irlik (weight), 
    - \(b\) - bias. 
    Ikkinchi formulada: 
    \[y = w1x2 + w2x + b\] 
    - \(w1\) va \(w2\) - ikki ta og'irlik (weights), 
    - \(b\) - bias. 
    Bu qiymatlarni topish uchun, sizning ma'lumotlar to'plamingizdagi mos keluvchi "y" va 
    "x" qiymatlari bo'lishi kerak. Agar sizda amaliy ma'lumotlar mavjud bo'lsa (masalan, 
    "x" ma'lumotlari va mos keluvchi "y" ma'lumotlari), uning bilan regressiya algoritmini 
    ishlatib, og'irliklar va bias qiymatlarni o'rganishingiz mumkin. 
    Og'irliklar va bias qiymatlari, regressiya algoritmi orqali, masofaviy ta'sir (distance 
    error)ni kamaytirib, yani, "y" ma'lumotlari va regressiya modeli orasidagi farqni 
    minimallashtirishga harakat qilgan holda topiladi. Bu metodlar "Gradient Descent" yoki 
    "Normal Equation" kabi usullar orqali amalga oshiriladi. Har qanday algoritm 
    ishlashida, og'irliklar va bias qiymatlari ma'lumotlarning tezroq konvergensiya 
    ko'rsatkichiga yettiriladi. 
    Bu algoritmalar tushunchalari matematik usullar, statistika va ma'lumotlar analizi bilan 
    bog'liqdir va ularni amalga oshirish uchun matematik dasturlar yordamida ishlab 
    chiqilgan dasturlar va bibliotekalardan foydalanish tavsiya etiladi. 


     

    Download 1.02 Mb.




    Download 1.02 Mb.
    Pdf ko'rish