• Regressiya
  • Mashinani o'rganishda regressiya va tasnif nima?




    Download 101,12 Kb.
    Sana19.11.2023
    Hajmi101,12 Kb.
    #101360
    Bog'liq
    Mashinani o\'qitish
    1-kurs Falsafa (BT uz I), unit3, 26-mavzu, 45, Telekommunikatsiya-injiniringikafedrasiR.N.Radjapova

    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



    Download 101,12 Kb.




    Download 101,12 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Mashinani o'rganishda regressiya va tasnif nima?

    Download 101,12 Kb.