Mashinani o'rganishda regressiya va tasnif nima?

|
Mashinani o'rganishda regressiya va tasnif nima?
|
Sana | 19.11.2023 | Hajmi | 101,12 Kb. | | #101360 |
Bog'liq Mashinani o\'qitish
Mashinani o'rganishda regressiya va tasnif nima?
Ma'lumotlar bo'yicha mutaxassislar katta ma'lumotlardagi naqshlarni aniqlash uchun turli xil mashinalarni o'rganish algoritmlaridan foydalanadilar, bu esa amaliy xulosalarga olib keladi. Yuqori darajada, bu turli xil algoritmlarni bashorat qilish uchun ma'lumotlarni qanday "o'rganish" ga qarab ikki guruhga bo'lish mumkin: boshqariladigan va nazoratsiz o'rganish.
Nazorat ostida mashinani o'rganish: ko'pgina amaliy mashinalarni o'rganish usullari nazorat ostida o'rganishni qo'llaydi. O'qituvchi bilan o'rganish-bu kirish o'zgaruvchilari (x) va chiqish o'zgaruvchisi (Y) bo'lganda va y = f(X) ning kirish-chiqish displey funktsiyasini o'rganish uchun algoritmdan foydalanasiz . Maqsad, displey funktsiyasini juda yaxshi taxmin qilishdir, shuning uchun sizda yangi kirish (x) bo'lsa, ushbu ma'lumotlar uchun chiqish o'zgaruvchilarini (Y) taxmin qilishingiz mumkin.
Boshqariladigan mashinani o'rganish algoritmlari usullariga chiziqli va logistik regressiya , ko'p sinfli tasniflash, qaror daraxtlari va qo'llab-quvvatlovchi vektor mashinalari kiradi.. O'qituvchi bilan o'rganish algoritmni o'rgatish uchun ishlatiladigan ma'lumotlar allaqachon to'g'ri javoblar bilan belgilanishini talab qiladi. Masalan, tasniflash algoritmi hayvonlarning turlari va ba'zi bir aniqlovchi xususiyatlar bilan to'g'ri belgilangan tasvirlar ma'lumotlar to'plamida o'qitilgandan so'ng hayvonlarni aniqlashni o'rganadi.
Nazorat ostidagi o'quv vazifalari qo'shimcha ravishda regressiya va tasniflash vazifalariga birlashtirilishi mumkin . Ikkala muammo ham atribut o'zgaruvchilari asosida bog'liq atribut qiymatini bashorat qila oladigan qisqa modelni yaratishga qaratilgan. Ushbu ikki vazifaning farqi shundaki, bog'liq atribut regressiya uchun raqamli va tasniflash uchun kategorikdir.
Regressiya
Regressiya muammosi chiqish o'zgaruvchisi "ish haqi" yoki "vazn"kabi haqiqiy yoki doimiy qiymat bo'lganda paydo bo'ladi. Ko'p turli xil modellardan foydalanish mumkin, ularning eng osoni chiziqli regressiyadir. U ma'lumotlarni nuqta orqali o'tadigan eng yaxshi giperplane bilan moslashtirishga harakat qiladi.
Regressiya modellarining turlari:
Masalan:
Quyidagilardan qaysi biri regressiya vazifasidir?
* Inson yoshini bashorat qilish
* Inson millatini bashorat qilish
* Ertaga kompaniya aktsiyalari narxi ko'tariladimi yoki yo'qligini bashorat qilish
* Bashorat qilish, hujjat NLO nazorati bilan bog'liqmi?
Yechim: shaxsning yoshini bashorat qilish (bu haqiqiy miqdor bo'lgani uchun, millatni bashorat qilish aktsiyalar narxi diskret ravishda ko'tariladimi yoki yo'qmi — ha/yo'q javob, hujjatning NUJ bilan bog'liqligini bashorat qilish yana diskret — ha/yo'q javob ).
Chiziqli regressiyaga misol keltiring. Bizda uy-joy haqida ma'lumotlar to'plami mavjud va biz uyning narxini taxmin qilmoqchimiz. Quyida buning uchun Python kodi keltirilgan.
# Python code to illustrate
# regression using data set
import matplotlib
matplotlib.use('GTKAgg')
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
import pandas as pd
# Load CSV and columns
df = pd.read_csv("Housing.csv")
Y = df['price']
X = df['lotsize']
X=X.values.reshape(len(X),1)
Y=Y.values.reshape(len(Y),1)
# Split the data into training/testing sets
X_train = X[:-250]
X_test = X[-250:]
# Split the targets into training/testing sets
Y_train = Y[:-250]
Y_test = Y[-250:]
# Plot outputs
plt.scatter(X_test, Y_test, color='black')
plt.title('Test Data')
plt.xlabel('Size')
plt.ylabel('Price')
plt.xticks(())
plt.yticks(())
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(X_train, Y_train)
# Plot outputs
plt.plot(X_test, regr.predict(X_test), color='red',linewidth=3)
plt.show()
|
=>
Yuqoridagi kodning chiqishi quyidagicha bo'ladi:
Ushbu grafikda biz test ma'lumotlarini qo'llaymiz. Qizil chiziq narxni bashorat qilish uchun eng yaxshi chiziqni ko'rsatadi. Chiziqli regressiya modeli yordamida individual prognoz qilish:
print(str(round(regr.predict(5000))) )
Tasniflash
Tasniflash muammosi chiqish o'zgaruvchisi "qizil" yoki "ko'k" yoki "kasallik" va "kasallik yo'qligi"kabi kategoriya bo'lganda paydo bo'ladi. Tasniflash modeli kuzatilgan qiymatlardan bir oz xulosa chiqarishga harakat qiladi. Bir yoki bir nechta kirishni hisobga olgan holda, tasniflash modeli bir yoki bir nechta natijalarning qiymatini taxmin qilishga harakat qiladi.
Masalan, "spam" yoki "spam emas" elektron pochta xabarlarini filtrlashda, "firibgar" yoki "vakolatli"tranzaksiya ma'lumotlarini ko'rishda. Xulosa qilib aytganda, tasniflash sinflarning toifali yorliqlarini bashorat qiladi yoki tasniflash atributlaridagi o'quv to'plami va qiymatlari (sinf teglari) asosida ma'lumotlarni tasniflaydi (model quradi) va yangi ma'lumotlarni tasniflashda foydalanadi. Tasniflashning bir nechta modellari mavjud. Tasniflash modellariga logistik regressiya, qaror daraxti, tasodifiy o'rmon, gradient bilan mustahkamlangan daraxt, ko'p qatlamli perseptron, bir-biriga qarshi usul va sodda Bayes algoritmi kiradi.
Masalan:
Quyidagilardan qaysi biri/tasniflash muammosi(lar)?
* Odamning jinsini uning qo'l yozuvi uslubi bo'yicha bashorat qilish
* Maydonga qarab uy narxini bashorat qilish
* Kelgusi yilda musson normal bo'ladimi yoki yo'qligini bashorat qilish
* Kelgusi oyda musiqiy albomning qancha nusxasi sotilishini taxmin qiling
Yechim: insonning jinsini bashorat qilish kelgusi yil yomg'irli mavsum normal bo'lishini bashorat qilish. Qolgan ikkitasi regressiya.
Tasnifni ba'zi misollar bilan muhokama qilganimizdek. Endi biz python-dagi RandomForestClassifier-dan foydalanib, Iris ma'lumotlar to'plamini tasniflashni amalga oshiradigan tasniflash misoli mavjud. Ma'lumotlar to'plamini bu yerdan yuklab olishingiz mumkin
Ma'lumotlar to'plamining tavsifi
Ism: Iris o'simliklari ma'lumotlar bazasi
Atribut haqida ma'lumot:
1. Sepal uzunligi sm
2. sepalning kengligi sm
3. barg uzunligi sm
4. bargning kengligi sm
5. sinf:
-- Iris Setosa
-- Iris ko'p rangli
-- Iris Virjiniya
Yo'qolgan atribut qiymatlari: yo'q
Sinf taqsimoti: 3 sinfning har biri uchun 33,3%
# Python code to illustrate
# classification using data set
#Importing the required library
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
#Importing the dataset
dataset = pd.read_csv(
'https://archive.ics.uci.edu/ml/machine-learning-'+
'databases/iris/iris.data',sep= ',', header= None)
data = dataset.iloc[:, :]
#checking for null values
print("Sum of NULL values in each column. ")
print(data.isnull().sum())
#separating the predicting column from the whole dataset
X = data.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
#Encoding the predicting variable
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
#Splitting the data into test and train dataset
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size = 0.3, random_state = 0)
#Using the random forest classifier for the prediction
classifier=RandomForestClassifier()
classifier=classifier.fit(X_train,y_train)
predicted=classifier.predict(X_test)
#printing the results
print ('Confusion Matrix :')
print(confusion_matrix(y_test, predicted))
print ('Accuracy Score :',accuracy_score(y_test, predicted))
print ('Report : ')
print (classification_report(y_test, predicted))
|
Chiqish:
Har bir ustundagi null qiymatlarining yig'indisi.
0 0
1 0
2 0
3 0
4 0
Chalkashlik matritsasi:
[[16 0 0]
[ 0 17 1]
[ 0 0 11]]
Aniqlikni baholash: 97,7
Hisobot:
F1-score-ni aniq eslab qolishni qo'llab-quvvatlash
0 1,00 1,00 1,00 16
1 1,00 0,94 0,97 18
2 0,92 1,00 0,96 11
o'rtacha / umumiy 0,98 0,98 0,98 45
|
|
| |