Scikit-da qarorlar daraxti tasniflagichini qurish
Bizda mavjud bo'lgan ma'lumotlar to'plami supermarket ma'lumotlari bo'lib, uni bu yerdan yuklab olish mumkin .
Barcha asosiy kutubxonalarni yuklang.
numpy ni np
import matplotlib sifatida import qiling . pyplot as plt
import pandas as pd
Ma'lumotlar to'plamini yuklang. U 5 ta xususiyatdan iborat, UserID, Gender, Age, EstimatedSalaryva Purchased.
ma'lumotlar = pd . read_csv ( '/Users/ML/DecisionTree/Social.csv' )
ma'lumotlari . bosh ()
Ma'lumotlar to'plami
Biz faqat Age va EstimatedSalary mustaqil o'zgaruvchilar sifatida qabul qilamiz, X chunki boshqa xususiyatlar Gender va ahamiyatsiz va insonning xarid qobiliyatiga ta'sir qilmaydi. Sotib olingan - bizning bog'liq o'zgaruvchimiz .User IDy
feature_cols = [ 'Yosh' , 'Taxminiy ish haqi' ] X = ma'lumotlar . iloc [:,[ 2 , 3 ]]. qiymatlar
y = ma'lumotlar . iloc [:, 4 ]. qiymatlar
Keyingi qadam ma'lumotlar to'plamini o'qitish va sinovga bo'lishdir.
sklearn dan . 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 = 0 )
Xususiyatlarni masshtablashni amalga oshiring
sklearn dan #funksiya masshtablash . importni oldindan qayta ishlash StandardScaler
sc_X = StandardScaler ()
X_train = sc_X . fit_transform ( X_train )
X_test = sc_X . aylantirish ( X_test )
Modelni qarorlar daraxti tasniflagichiga moslang.
sklearn dan . daraxt importi DecisionTreeClassifier
tasniflagichi = DecisionTreeClassifier ()
tasniflagichi = tasniflagich . mos ( X_train , y_train )
Bashorat qiling va aniqligini tekshiring.
#prediction
y_pred = klassifikator . bashorat qilish ( X_test )# Sklearn import metricsprint dan aniqlik ( 'Aniqlik reytingi:' , ko'rsatkichlar . accuracy_score ( y_test , y_pred ))
Qaror daraxti tasniflagichi 91% aniqlikni berdi.
Chalkashlik matritsasi
sklearn dan . ko'rsatkichlar import confusion_matrix
sm = confusion_matrix ( y_test , y_pred ) Chiqish :
massiv ([[ 64 , 4 ], [ 2 , 30 ]])
Bu 6 ta kuzatuv noto'g'ri deb tasniflanganligini anglatadi.
Keling, avvalo modelni bashorat qilish natijalarini tasavvur qilaylik.
matplotlib dan . ranglar importi ListedColormap
X_set , y_set = X_test , y_test
X1 , X2 = np . meshgrid ( np . arange ( start = X_set [:, 0 ]. min ()- 1 , stop = X_set [:, 0 ]. maks ()+ 1 , qadam = 0,01 ), np . arange ( start = X_set [:, 1 ]. min ()- 1 , stop = X_set [:, 1 ]. maks ()+ 1 , qadam = 0,01 ))
plt . kontur ( X1 , X2 , klassifikator . bashorat qilish ( np . massiv ([ X1 . ravel (), X2 . ravel ()]). T ). shaklini o'zgartirish ( X1 . shakl ), alfa = 0,75 , cmap = Listlangan Rang xaritasi (( "qizil" , "yashil" ))) plt . xlim ( X1 . min (), X1 . max ())
plt . ylim ( X2 . min (), X2 . max ()) i , j uchun sanab o'tish ( np . noyob ( y_set ) ):
plt . scatter ( X_set [ y_set == j , 0 ], X_set [ y_set == j , 1 ], c = ListedColormap (( "qizil" , "yashil" ))( i ), label = j )
plt . sarlavha ( "Qarorlar daraxti(Test to'plami)" )
plt . xlabel ( "Yosh" )
plt . ylabel ( "Taxminiy ish haqi" )
plt . afsona ()
plt . ko'rsatish ()
Keling, daraxtni ham tasavvur qilaylik:
Jupyter daftarida daraxtni ko'rsatish uchun Scikit- learnning export_graphviz funksiyasidan foydalanishingiz mumkin. Daraxtlarni chizish uchun siz Graphviz va pydotplus-ni ham o'rnatishingiz kerak.
conda install python-graphviz
pip install pydotplus
eksport_graphviz funktsiyasi qarorlar daraxti tasniflagichini nuqta fayliga o'zgartiradi va pydotplus bu nuqta faylini png yoki Jupyterda ko'rsatiladigan shaklga aylantiradi.
sklearn dan . daraxt import eksport_graphviz
sklearn dan . tashqi . olti import StringIO IPython dan . displey import Rasm import pydotplusdot_data = StringIO ()
export_graphviz ( klassifikator , out_fale = nuqta_ma'lumotlar ,
to'ldirilgan = Rost , yaxlitlangan = Rost ,
maxsus_belgilar = Rost
, xususiyat_nomlari = xususiyat_ko'rsatkichlari , sinf_nomlari =[ '0' , '1' ] )
grafik = pydotplus . graph_from_dot_data ( nuqta_ma'lumotlar . getvalue ()) Rasm ( grafik . create_png ())
Qaror daraxti.
Qarorlar daraxti diagrammasida har bir ichki tugun ma'lumotlarni ajratuvchi qaror qoidasiga ega. Jini tugunning nopokligini o'lchaydigan Jini nisbati deb ataladi. Agar tugunning barcha yozuvlari bir xil sinfga tegishli bo'lsa, tugunni sof deb aytishingiz mumkin, masalan, barg tugunlari deb nomlanuvchi tugunlar.
Bu erda hosil bo'lgan daraxt kesilmaydi. Bu kesilmagan daraxtni tushuntirish mumkin emas va tushunish oson emas. Keyingi bo'limda uni kesish orqali optimallashtiramiz.
Do'stlaringiz bilan baham: |