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.
|