O’zbekiston Respublikasi Raqamli texnologiyalar vazirligi
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNALOGIYALARI UNIVERSITETI
KIBERXAVFSIZLIK FAKULTETI
Mashinali o’qitishga kirish
2-Amaliy Ish
Guruh: 710-21
Bajarildi: Saloxiddinov Jaxongirmirzo
Fan o’qituvchisi: Xasanov Umidjon
Logistik regressiyaning maqsadi, har qanday klassifikatorda bo'lgani kabi, xususiyatlarda mavjud bo'lgan ma'lumotlardan foydalanib, ma'lum bir kuzatuv sinfini aniq bashorat qilish uchun ma'lumotlarni ajratishning ba'zi usullarini aniqlashdir.
Logistik regressiya ikkilik sinflashtirish tomayili asosida koʼp sinfli sinflashtirish imkonini beradigan eng sodda algoritm hisoblanadi. Logistik regressiyani asosiy mohiyatini logistik
(sigmoid) funksiya tashkil etadi.
Logistik regressiya tasniflash muammolarini hal qilishga qaratilgan. Buni farqli o'laroq, kategorik natijalarni bashorat qilish orqali amalga oshiradi chiziqli regressiya bu doimiy natijani bashorat qiladi.
Oddiy holatda ikkita natija mavjud, ular binomial deb ataladi, bunga misol o'simta malign yoki benign ekanligini bashorat qilishdir. Boshqa holatlarda tasniflash uchun ikkitadan ortiq natijalar mavjud, bu holda u multinomial deb ataladi. Multinomial logistik regressiya uchun keng tarqalgan misol iris gulining sinfini 3 xil tur o'rtasida bashorat qilishdir.
Bu yerda biz binomial o'zgaruvchini bashorat qilish uchun asosiy logistik regressiyadan foydalanamiz. Bu shuni anglatadiki, u faqat ikkita mumkin bo'lgan natijaga ega.
14-variant
1)import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
Kutubxonalarni import qilish
2)data=np.array([
[70.4,2001,2,650,0], # narxi(k$),ishlab chiqarilgan yili,kabinalar soni,yonilg'i hajmi, sinfi
[80.5,2014,3,800,0],
[95.6,2007,2,700,1],
[80,2005,2,950,0],
[108.4,2010,3,1000,1],
[150,2019,4,1050,1],
[110.2,2011,3,900,1],
[105,2002,4,1100,1],
[85.9,2001,2,600,0],
[97.5,2005,3,780,1],
[100,2013,2,700,1],
[102,2017,4,890,1],
[77.8,2000,4,550,0],
[96,2004,3,850,1],
[101,2009,4,700,0],
[102,2008,3,600,1],
[100,2006,2,650,0],
[107,2004,3,670,1],
[97,2010,2,600,0],
[99,2011,3,690,1],
[112,2011,4,800,0],
[109,2013,3,760,1],
[103.7,2005,4,800,1],
[84.97,2006,2,500,0],
[97.6,2009,3,695,1],
[135.9,2018,4,960,1],
[120.8,2017,3,870,1],
[117.4,2014,3,800,0],
[139.4,2009,4,954,1],
[115.3,2010,3,895,1],
[139.8,2016,3,600,1],
[123,2004,4,790,0],
[100.5,2019,2,590,1],
[97,2003,3,700,0],
[160,2022,4,1100,1],
[126,2014,2,995,1],
[89.3,2004,3,740,0],
[90,2000,3,790,0],
[77.9,2001,2,600,0],
[101,2012,4,800,0]
])
Data_setni qulda kiritip chiqdik
Bu yerda data_set ni chiqarip oldik
3)data_set = pd.DataFrame(data, columns=[
"narxi(k$)",
"ishlab chiqarilgan yili",
"kabinalar soni",
"yonilg'i hajmi",
"sinfi"
])
Bu yerda dataset ustunlarini nomini elon qildik
4)
x= data_set.iloc[:, [0,2]].values
y= data_set.iloc[:, -1].values
Bu yerda x ga 0 va 2 ustunlarni oldik yani narxi bilan kabinalar soni
Y ga esa sinfi olindi
5)plt.figure(figsize=(30, 5))
plt.subplot(131)
plt.scatter(x[:, 0], x[:, 1], c=y, cmap='viridis')
plt.xlabel('X')
plt.ylabel('Y')
plt.title("Ikki o'zgaruvchili ma'lumotlar to'plami")
plt.colorbar()
Bu yerda biz X va Y uchun ikki o’zgaruvchilik ma’lumotlar to’plami grafigni xosil qilamiz
#Ma'lumotlar to'plamini o'quv va test to'plamiga bo'lish.
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=1)
#Xususiyatlarni masshtablash
from sklearn.preprocessing import StandardScaler
st_x= StandardScaler()
x_train= st_x.fit_transform(x_train)
x_test= st_x.transform(x_test)
#Logistik regressiyani o'quv majmuasiga moslashtirish va o'qitish
from sklearn.linear_model import LogisticRegression
sinflashtirish= LogisticRegression(random_state=0)
sinflashtirish.fit(x_train, y_train)
7)train_pred = sinflashtirish.predict(x_train)
#train to'plam uchun
score = sinflashtirish.score(x_train, y_train)
print(score)
test_pred = sinflashtirish.predict(x_test)
#test to'plam uchun
score1 = sinflashtirish.score(x_test, y_test)
print(score)
# Qaror chegarasini chizish
plt.figure(figsize=(30, 5))
plt.subplot(131)
x_min, x_max = x_train[:, 0].min() - 1, x_train[:, 0].max() + 1
y_min, y_max = x_train[:, -1].min() - 1, x_train[:, -1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
np.arange(y_min, y_max, 0.02))
Z = sinflashtirish.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.45)
plt.scatter(x_train[:, 0], x_train[:, -1], c=y_train, cmap='cool')
plt.xlabel('X train')
plt.ylabel('Y train')
plt.title('Qaror chegarasi')
plt.colorbar()
Bu train to’plam uchun
# Qaror chegarasini chizish
plt.figure(figsize=(30, 5))
plt.subplot(131)
x_min, x_max = x_test[:, 0].min() - 1, x_test[:, 0].max() + 1
y_min, y_max = x_test[:, -1].min() - 1, x_test[:, -1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.002),
np.arange(y_min, y_max, 0.002))
Z = sinflashtirish.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.45)
plt.scatter(x_test[:, 0], x_test[:, -1], c=y_test, cmap='cool')
plt.xlabel('X test')
plt.ylabel('Y test')
plt.title('Qaror chegarasi')
plt.colorbar()
Bu test to’plam uchun
9)
import seaborn as sns
from sklearn import metrics
cm = metrics.confusion_matrix(y_test, test_pred)
print(cm)
Test to‘plam uchun tartibsizlik matritsa
|