Kategorial ma’lumotlar
Kategorik ma’lumotlar
Ma’lumotlaringizda stringlar bilan ifodalangan toifalar bo‘lsa, ulardan faqat raqamli ma’lumotlarni qabul qiladigan mashina o‘rganish modellarini o‘rgatishda foydalanish qiyin bo‘ladi.
Kategorik ma’lumotlarga e’tibor bermaslik va ma’lumotni bizning modelimizdan chiqarib tashlash o‘rniga, siz ma’lumotlarni modellaringizda ishlatilishi uchun o‘zgartirishingiz mumkin.
Quyidagi jadvalga qarang, bu biz ko‘p regressiya bobida foydalangan ma’lumotlar to‘plamidir.
Misol
import pandas as pd
cars = pd.read_csv('data.csv')
print(cars.to_string())
Natija
Car Model Volume Weight CO2 0 Toyoty Aygo 1000 790 99 1 Mitsubishi Space Star 1200 1160 95 2 Skoda Citigo 1000 929 95 3 Fiat 500 900 865 90 4 Mini Cooper 1500 1140 105 5 VW Up! 1000 929 105 6 Skoda Fabia 1400 1109 90 7 Mercedes A-Class 1500 1365 92 8 Ford Fiesta 1500 1112 98 9 Audi A1 1600 1150 99 10 Hyundai I20 1100 980 99 11 Suzuki Swift 1300 990 101 12 Ford Fiesta 1000 1112 99 13 Honda Civic 1600 1252 94 14 Hundai I30 1600 1326 97 15 Opel Astra 1600 1330 97 16 BMW 1 1600 1365 99 17 Mazda 3 2200 1280 104 18 Skoda Rapid 1600 1119 104 19 Ford Focus 2000 1328 105 20 Ford Mondeo 1600 1584 94 21 Opel Insignia 2000 1428 99 22 Mercedes C-Class 2100 1365 99 23 Skoda Octavia 1600 1415 99 24 Volvo S60 2000 1415 99 25 Mercedes CLA 1500 1465 102 26 Audi A4 2000 1490 104 27 Audi A6 2000 1725 114 28 Volvo V70 1600 1523 109 29 BMW 5 2000 1705 114 30 Mercedes E-Class 2100 1605 115 31 Volvo XC70 2000 1746 117 32 Ford B-Max 1600 1235 104 33 BMW 216 1600 1390 108 34 Opel Zafira 1600 1405 109 35 Mercedes SLK 2500 1395 120
Misolni ishga tushirish »
Ko‘p regressiya bobida biz dvigatel hajmi va avtomobilning og‘irligi asosida chiqarilgan CO2 ni taxmin qilishga harakat qildik, ammo biz avtomobil markasi va modeli haqidagi ma’lumotni istisno qildik.
Avtomobil markasi yoki avtomobil modeli haqidagi ma’lumotlar bizga chiqarilgan CO2 miqdorini yaxshiroq bashorat qilishga yordam beradi.
Bitta issiq kodlash
Ma’lumotlarimizdagi Avtomobil yoki Model ustunidan foydalana olmaymiz, chunki ular raqamli emas. Kategorik o‘zgaruvchi, Avtomobil yoki Model va raqamli o‘zgaruvchi, CO2 o‘rtasidagi chiziqli munosabatni aniqlab bo‘lmaydi.
Ushbu muammoni hal qilish uchun biz kategorik o‘zgaruvchining raqamli ko‘rinishiga ega bo‘lishimiz kerak. Buning usullaridan biri toifadagi har bir guruhni ifodalovchi ustunga ega bo‘lishdir.
Har bir ustun uchun qiymatlar 1 yoki 0 bo‘ladi, bunda 1 guruhning qo‘shilishini va 0 istisnoni bildiradi. Ushbu transformatsiya bitta issiq kodlash deb ataladi.
Buni qo‘lda qilishingiz shart emas, Python Pandas moduli bitta issiq kodlashni amalga oshiradigan get_dummies() deb nomlangan funksiyaga ega.
Pandas moduli haqida bizning Pandas qo‘llanmamizda bilib oling.
Misol
Avtomobil ustunini bitta issiq kodlash:
import pandas as pd
cars = pd.read_csv('data.csv')
ohe_cars = pd.get_dummies(cars[['Car']])
print(ohe_cars.to_string())
Natija
Car_Audi Car_BMW Car_Fiat Car_Ford Car_Honda Car_Hundai Car_Hyundai Car_Mazda Car_Mercedes Car_Mini Car_Mitsubishi Car_Opel Car_Skoda Car_Suzuki Car_Toyoty Car_VW Car_Volvo 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 6 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 7 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 8 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 12 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 19 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 22 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 25 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 26 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 29 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 32 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 35 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Misolni ishga tushirish »
Natijalar
Avtomobil ustunida har bir avtomobil markasi uchun ustun yaratildi.
CO2’ni bashorat qilish
Biz ushbu qo‘shimcha ma’lumotdan CO2 ni bashorat qilish uchun hajm va og‘irlik bilan birga foydalanishimiz mumkin
Ma’lumotni birlashtirish uchun biz pandalardan concat() funksiyasidan foydalanishimiz mumkin.
Avval biz bir nechta modullarni import qilishimiz kerak.
Biz Pandalarni import qilishdan boshlaymiz.
import pandas
Pandas moduli bizga csv fayllarni o‘qish va DataFrame obyektlarini boshqarish imkonini beradi:
cars = pandas.read_csv("data.csv")
Shuningdek, u bizga soxta o‘zgaruvchilarni yaratishga imkon beradi:
ohe_cars = pandas.get_dummies(cars[['Car']])
Keyin mustaqil o‘zgaruvchilarni (X) tanlashimiz va soxta o‘zgaruvchilarni ustunlar bo‘yicha qo‘shishimiz kerak.
Shuningdek, qaram o‘zgaruvchini y da saqlang.
X = pandas.concat([cars[['Volume', 'Weight']], ohe_cars], axis=1)
y = cars['CO2']
Shuningdek, chiziqli modelni yaratish uchun sklearn-dan usulni import qilishimiz kerak
Learn about Chiziqli regressiya.
from sklearn import linear_model
Endi biz ma’lumotlarni chiziqli regressiyaga moslashimiz mumkin:
regr = linear_model.LinearRegression()
regr.fit(X,y)
Nihoyat, avtomobilning og‘irligi, hajmi va ishlab chiqaruvchisiga qarab CO2 emissiyasini taxmin qilishimiz mumkin.
##predict the CO2 emission of a VW where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]])
Misol
import pandas
from sklearn import linear_model
cars = pandas.read_csv("data.csv")
ohe_cars = pandas.get_dummies(cars[['Car']])
X = pandas.concat([cars[['Volume', 'Weight']], ohe_cars], axis=1)
y = cars['CO2']
regr = linear_model.LinearRegression()
regr.fit(X,y)
##predict the CO2 emission of a VW where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]])
print(predictedCO2)
Natija
[122.45153299]
Misolni ishga tushirish »
Endi bizda ma’lumotlar to‘plamidagi hajm, vazn va har bir avtomobil markasi uchun koeffitsient mavjud
Dummifying
Kategoriyangizdagi har bir guruh uchun bitta ustun yaratish shart emas. Ma’lumot sizda mavjud bo‘lgan guruhlar sonidan 1 ta ustundan kam bo‘lgan holda saqlanishi mumkin.
Misol uchun, sizda ranglarni ifodalovchi ustun bor va bu ustunda sizda ikkita rang bor, qizil va ko‘k.
Misol
import pandas as pd
colors = pd.DataFrame({'color': ['blue', 'red']})
print(colors)
Natija
color 0 blue 1 red
Misolni ishga tushirish »
Siz qizil deb nomlangan 1 ta ustun yaratishingiz mumkin, bu yerda 1 qizil rangni va 0 qizil emas, ya’ni ko‘k rangni bildiradi.
Buni amalga oshirish uchun biz bitta issiq kodlash uchun ishlatgan funksiyadan foydalanishimiz mumkin, get_dummies va keyin ustunlardan birini tashlab qo‘yamiz. Natijada paydo bo‘lgan jadvaldan birinchi ustunni chiqarib tashlashga imkon beruvchi drop_first argumenti mavjud.
Misol
import pandas as pd
colors = pd.DataFrame({'color': ['blue', 'red']})
dummies = pd.get_dummies(colors, drop_first=True)
print(dummies)
Natija
color_red 0 0 1 1
Misolni ishga tushirish »
Agar sizda 2 dan ortiq guruh bo‘lsa-chi? Qanday qilib bir nechta guruhlarni 1 ta kam ustun bilan ifodalash mumkin?
Aytaylik, bu safar bizda uchta rang bor: qizil, ko‘k va yashil. Birinchi ustunni tashlaganimizda get_dummies, biz quyidagi jadvalni olamiz.
Misol
import pandas as pd
colors = pd.DataFrame({'color': ['blue', 'red', 'green']})
dummies = pd.get_dummies(colors, drop_first=True)
dummies['color'] = colors['color']
print(dummies)
Natija
color_green color_red color 0 0 0 blue 1 0 1 red 2 1 0 green
Misolni ishga tushirish »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
