Machine Learning - Decision Trees
- Previous Page Train/Testing
- Next Page MySQL Shafin shafin

决策树(Decision Tree)
在本章中,我们将向您展示如何制作“决策树”。决策树是一种流程图,可以帮助您根据以前的经验进行决策。
在这个例子中,一个人将尝试决定他/她是否应该参加喜剧节目。
幸运的是,我们的例中人物每次在镇上举办喜剧节目时都进行注册,并注册一些关于喜剧演员的信息,并且还登记了他/她是否去过。
Age | Experience | Rank | Nationality | Go |
---|---|---|---|---|
36 | 10 | 9 | UK | NO |
42 | 12 | 4 | USA | NO |
23 | 4 | 6 | N | NO |
52 | 4 | 4 | USA | NO |
43 | 21 | 8 | USA | YES |
44 | 14 | 5 | UK | NO |
66 | 3 | 7 | N | YES |
35 | 14 | 9 | UK | YES |
52 | 13 | 7 | N | YES |
35 | 5 | 9 | N | YES |
24 | 3 | 5 | USA | NO |
18 | 3 | 7 | UK | YES |
45 | 9 | 9 | UK | YES |
Ba yau, tare da bayanai da za a yi amfani da su, Python za a cikin hanyar yin shirin shirin, wanda za a yi amfani da shi don ganin ko an haɗa cikin wasan kwaikwayo na kara.
Kamfanin hanyar
Kafin hakan, a tsara na'urin da ake bukata, a kuma yi aiki da bayanai tare da pandas:
Masu
Yin aiki da ƙiyayya da kuma yin aiki da bayanai:
import pandas from sklearn import tree import pydotplus from sklearn.tree import DecisionTreeClassifier import matplotlib.pyplot as plt import matplotlib.image as pltimg df = pandas.read_csv("shows.csv") print(df)
Don samun shirin shirin, dukkan data za a ba da adadi.
A bace sabon muhalli da kundin hanyar hana 'Nationality' da 'Go' zuwa nau'ikan adadi.
Pandas an ƙunshi map()
Hanyar, wanda ke aminuwar taƙaici, wanda ke da bayanin kowane hanyar taƙaici.
{'UK': 0, 'USA': 1, 'N': 2}
Watsa 'UK' zuwa 0, 'USA' zuwa 1, 'N' zuwa 2.
Masu
Yan burin taƙaici ta fassara manyan nau'ikan taƙaici:
d = {'UK': 0, 'USA': 1, 'N': 2} df['Nationality'] = df['Nationality'].map(d) d = {'YES': 1, 'NO': 0} df['Go'] = df['Go'].map(d) print(df)
Kafin hakan, a bace sabon muhalli da kundin hanyar hana.
sabon muhalli suna da kundin da ake kula da bincike, kundin hanyar hana ce kundin da ake da kowane wuri na bincike.
Masu
X ce sabon muhalli, y ce sabon kundin hanyar hana:
features = ['Age', 'Experience', 'Rank', 'Nationality'] X = df[features] y = df['Go'] print(X) print(y)
Ba yau, aminuwar a za a cikin shirin da ke daidai na, a kuma za a yi wuce .png a kan kompyuter:
Masu
یک درخت تصمیم ایجاد کنید، آن را به عنوان تصویر ذخیره کنید و سپس آن را نمایش دهید:
dtree = DecisionTreeClassifier() dtree = dtree.fit(X, y) data = tree.export_graphviz(dtree, out_file=None, feature_names=features) graph = pydotplus.graph_from_dot_data(data) graph.write_png('mydecisiontree.png') img=pltimg.imread('mydecisiontree.png') imgplot = plt.imshow(img) plt.show()
توضیح نتایج
درخت تصمیم از تصمیمات قبلی شما برای محاسبه احتمال اینکه شما بخواهید به نمایش آدم شاعری بروید، استفاده میکند.
اجازه دهید به جنبههای مختلف درخت تصمیم بخوریم:

Rank
Rank <= 6.5
این نشان میدهد که آدم شاعری که درجه آن کمتر از 6.5 است، خواهد پیروی کرد True
پیکان (به سمت چپ)، بقیه نیز به همین ترتیب. False
پیکان (به سمت راست).
gini = 0.497
این کیفیت تقسیم را نشان میدهد و همیشه عددی بین 0.0 تا 0.5 است، جایی که 0.0 نشاندهنده این است که تمام نمونهها به نتایج مشابهی دست یافتهاند، و 0.5 نشاندهنده این است که تقسیم کاملاً در وسط انجام شده است.
samples = 13
مما یعنی در این مرحلۀ تصمیمگیری هنوز 13 آدم شاعری باقی ماندهاند، زیرا این اولین مرحلۀ است، بنابراین همه آنها آدم شاعری هستند.
value = [6, 7]
مما یعنی از 13 آدم شاعری که در اینجا هستند، 6 تا "NO" خواهند گرفت و 7 تا "GO".
Gini
روشهای متعددی برای تقسیم نمونهها وجود دارد، ما در این آموزش از روش GINI استفاده میکنیم.
روش Gini با استفاده از فرمول زیر استفاده میشود:
Gini = 1 - (x/n)2 - (y/n)2
در اینجا، x تعداد پاسخهای مثبت ("GO") است، n تعداد نمونهها، و y تعداد پاسخهای منفی ("NO") است، و با استفاده از فرمول زیر محاسبه میشود:
1 - (7 / 13)2 - (6 / 13)2 = 0.497

مرحلہ بعدی شامل دو قاب است، یکی برای آدم شاعری که 'Rank' آن 6.5 یا کمتر است، و بقیه یک قاب.
True - 5 تا آدم شاعری اینجا پایان یافتهاند:
gini = 0.0
مما یعنی تمام نمونهها به نتایج مشابهی دست یافتهاند.
samples = 5
مما یعنی کاواکوئی 5 تا آدم شاعری با درجہ 6.5 یا کمتر باقی ماندن کاواکوئی.
value = [5, 0]
表示 5 得到 "NO" 而 0 得到 "GO"。
False - 8 位戏剧演员继续:
Nationality(国籍)
Nationality <= 0.5
表示国籍值小于 0.5 的喜剧演员将遵循左箭头(这表示来自英国的所有人),其余的将遵循右箭头。
gini = 0.219
意味着大约 22% 的样本将朝一个方向移动。
samples = 8
表示该分支中还剩下 8 个喜剧演员(8 个喜剧演员的等级高于 6.5)。
value = [1, 7]
表示在这 8 位喜剧演员中,1 位将获得 "NO",而 7 位将获得 "GO"。

True - 4 名戏剧演员继续:
Age(年龄)
Age <= 35.5
表示年龄在 35.5 岁或以下的喜剧演员将遵循左箭头,其余的将遵循右箭头。
gini = 0.375
意味着大约 37.5% 的样本将朝一个方向移动。
samples = 4
表示该分支中还剩下 4 位喜剧演员(来自英国的 4 位喜剧演员)。
value = [1, 3]
表示在这 4 位喜剧演员中,1 位将获得 "NO",而 3 位将获得 "GO"。
False - 4 名喜剧演员到这里结束:
gini = 0.0
Yana nufin cewa duk samfuran sun samu jumla dake cikin.
samples = 4
表示该分支中还剩下 4 位喜剧演员(来自英国的 4 位喜剧演员)。
value = [0, 4]
表示在这 4 位喜剧演员中,0 将获得 "NO",而 4 将获得 "GO"。

True - 2 名喜剧演员在这里结束:
gini = 0.0
Yana nufin cewa duk samfuran sun samu jumla dake cikin.
samples = 2
表示该分支中还剩下 2 名喜剧演员(2 名 35.5 岁或更年轻的喜剧演员)。
value = [0, 2]
表示在这 2 位喜剧演员中,0 将获得 "NO",而 2 将获得 "GO"。
False - 2 名戏剧演员继续:
Experience(经验)
Experience <= 9.5
表示具有 9.5 年或以上经验的喜剧演员将遵循左侧的箭头,其余的将遵循右侧的箭头。
gini = 0.5
表示 50% 的样本将朝一个方向移动。
samples = 2
taɗa ɗauka cewa ɗanin ɗaroma biyu na hukuma hana yin (2 ɗanin ɗaroma na shekarun 35.5 shekaru da ke kai da kai).
value = [1, 1]
taɗa ɗauka cewa dukkanin ɗanin ɗaroma na biyu, 1 yace ɗauka "NO", kuma 1 yace ɗauka "GO".

True - 1 ɗanin ɗaroma a hukuma hana yin:
gini = 0.0
Yana nufin cewa duk samfuran sun samu jumla dake cikin.
samples = 1
Yana nufin cewa akwai mutum 1 a cikin yanar da yake da 9.5 shekaru ko fi koyarwa.
value = [0, 1]
Yana nufin cewa 0 yana nufin 'NO', 1 yana nufin 'GO'.
False - mutum 1 ya samu hauka har yanzu:
gini = 0.0
Yana nufin cewa duk samfuran sun samu jumla dake cikin.
samples = 1
Yana nufin cewa akwai mutum 1 a cikin yanar da ba a fi 9.5 shekaru koyarwa da yake a cikin.
value = [1, 0]
1 yana nufin 'NO', 0 yana nufin 'GO'.
Nauyin jumla
Ake amfani da kura da kura don kara bayyana nauyin.
Wani misali: Ma'anata ko a gana za a kai shirin komedan da yake shekaru 40, yana da 10 shekaru koyarwa, da yake da ma'aikaciyar komedan da yake da 7?
Masu
Amfani predict()
Hanyoyin don kara bayyana nauyin
print(dtree.predict([[40, 10, 7, 1]]))
Masu
Idan ma'aikaciyar komedan ce 6, jumlan shi gane ce?
print(dtree.predict([[40, 10, 6, 1]]))
Dukkanin Jumla
Idan a ya kai tsawon yawa, kamar yadda ake gudanar da data da yake cikin, kura da kura za a samu dukkanin jumla daga kura da kura.
Ini shine sabonin da za a bayyana a cikin tsarin kura da ba za a samu 100% takaitaccen jumla. Ita ce a kan yanayin yakin ayyukan, jumla zai bambanta.
- Previous Page Train/Testing
- Next Page MySQL Shafin shafin