Mafaa ya Kusafirisha cha Kuzalika - Mabomu ya Kikuria
- Pya Zaidi Mafunzo/Mfumo
- Pya Zaidi Kuamua MySQL

决策树(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 |
Sasa, kwa kawaida na kikata hiki, Python anaweza kumwiza mabaki mafanikio, hii mabaki mafanikio inaweza kutumiwa kuamua au hatuamua kujaingia katika kila shindano ya mtaani ya kila siku.
Maadili
Kwanza, inafaa kuingia kwenye moduli yenye uzalishaji, na kutumia pandas kusoma kikata:
Mfano
Kusoma na kupima kikata:
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)
Kuwaingia katika mabaki mafanikio, tabia zote lazima zikuwa namba.
Lazima tuweza kubadilisha mabaki ya maandiko ya 'Nationality' na 'Go' kuwa thamani za namba.
Pandas ina map()
Mwendo, hii inapokea dhamira yenye taarifu kuhusu maelezo ya badilisha thamani.
{'UK': 0, 'USA': 1, 'N': 2}
Ina maana kwamba thamani 'UK' inatumiwa kama 0, thamani 'USA' inatumiwa kama 1, na thamani 'N' inatumiwa kama 2.
Mfano
Badilisha thamani za maandiko kuwa thamani za namba:
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)
Kisha, lazima tuweza kugawaza mabaki ya uwanja na mabaki ya jumuiya.
Mabaki ya uwanja ni mabaki ambayo hatutafikia kutumia maelezo, mabaki ya jumuiya ni mabaki yanayotumika kutumia maelezo.
Mfano
X ni mabaki ya uwanja, y ni mabaki ya jumuiya:
features = ['Age', 'Experience', 'Rank', 'Nationality'] X = df[features] y = df['Go'] print(X) print(y)
Sasa, tunaweza kumwiza mabaki mafanikio ya maelezo, kisha kugawaza faili .png kwenye kompyuta:
Mfano
Tengeneza mti wa hatua mwenye kuzalisha picha, kusafisha picha hii na kuonyesha picha hii:
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()
Muhtasari wa matokeo
Mti wa hatua umeenda kwenye hatua zako zilizokuwa kulia kuagiza unaweza kuwa na uhusiano na wana wakweli wa kizungu.
Tunafikia mabaki ya mti wa hatua:

Rank
Rank <= 6.5
Ina yaani wana wakweli wanao upangilio chini ya 6.5 wanaofuata: True
Mshale (kutoka nchini), na nyingine inafua False
Mshale (kutoka nchini).
gini = 0.497
Ina yaani kina ya samata, ina kwa uangalifu 0.0 hadi 0.5, 0.0 ina yaani matokeo yote ya kumtaarifu yana uhusiano wote, na 0.5 ina yaani uhusiano unafuliana kati.
samples = 13
Ina yaani kati ya kumfuata hatua hii ina heri wana wakweli 13, kwa sababu hii ni kuzalisha, wote wana wakweli wanao.
value = [6, 7]
Ina yaani kati ya 13 wana wakweli wana 6 wanaotumia "NO", na 7 wanaotumia "GO".
Gini
Makhusa ya samata inayotumiwa sana, tunatumiya mbinu ya GINI kwenye mafunzo hii.
Makhusa ya Gini inatumia mbinu inayotumiwa:
Gini = 1 - (x/n)2 - (y/n)2
Kwa sababu, x ni thamani ya jibu za kawaida ("GO"), n ni kiasi cha samata, y ni thamani ya jibu za huzuni ("NO"), inaeneza uagizaji wa kitendo kilichotumika:
1 - (7 / 13)2 - (6 / 13)2 = 0.497

Mchezo iliyofuwa una mabaki mbili, moja ya wana wakweli kwa upangilio 'Rank' wa 6.5 au chini, nyingine ina mabaki moja.
True - 5 wana wakweli hapa hufikia:
gini = 0.0
Ina yaani matokeo yote ya kumtaarifu yana uhusiano wote.
samples = 5
Ina yaani hii kooza ina heri wana wakweli wa kizungu wana 5 wanao (5 wanao wamekuwa na daraja la 6.5 au chini la kizungu).
value = [5, 0]
Inaeleza kwamba 5 ina "NO" na 0 ina "GO".
False - 8 mtaalamu wa kudramu hapa inakamilika:
Nationality (wataki)
Nationality <= 0.5
Inaeleza kwamba wakikomedy wanao thamani ya wataki wanaotumiwa kwa chapa ya kushoto (hii inamaanisha wote wa UK), wengine watakuwa na hatua kwa chapa ya kulia.
gini = 0.219
Inaeleza kwamba kwa wastani 22% ya matokeo yatakuwa na hatua kwa njia moja.
samples = 8
Inaeleza kwamba katika kama hii inahesabiwa 8 wakikomedy (8 wanao daraja juu ya 6.5).
value = [1, 7]
Inaeleza kwamba kati ya 8 wakikomedy hizi, 1 itakuwa na "NO" na 7 itakuwa na "GO".

True - 4 mtaalamu wa kudramu hapa inakamilika:
Age (umri)
Age <= 35.5
Inaeleza kwamba wakikomedy wanao umri wa 35.5 wa kudogo sana watakuwa na hatua kwa chapa ya kushoto, wengine watakuwa na hatua kwa chapa ya kulia.
gini = 0.375
Inaeleza kwamba kwa wastani 37.5% ya matokeo yatakuwa na hatua kwa njia moja.
samples = 4
Inaeleza kwamba katika kama hii inahesabiwa 4 wakikomedy (4 wanao taa UK).
value = [1, 3]
Inaeleza kwamba kati ya 4 wakikomedy hizi, 1 itakuwa na "NO" na 3 itakuwa na "GO".
False - 4 mtaalamu wa kikomedy hapa inakamilika:
gini = 0.0
inaonyesha kwamba mabaya yote yana matokeo yoyote yanaonekana kwa uangalifu.
samples = 4
Inaeleza kwamba katika kama hii inahesabiwa 4 wakikomedy (4 wanao taa UK).
value = [0, 4]
Inaeleza kwamba kati ya 4 wakikomedy hizi, 0 itakuwa na "NO" na 4 itakuwa na "GO".

True - 2 mtaalamu wa kikomedy hapa inakamilika:
gini = 0.0
inaonyesha kwamba mabaya yote yana matokeo yoyote yanaonekana kwa uangalifu.
samples = 2
Inaeleza kwamba katika kama hii inahesabiwa 2 mtaalamu wa kikomedy (2 wanao umri wa 35.5 wa kudogo sana).
value = [0, 2]
Inaeleza kwamba kati ya wakikomedy hizi, 0 itakuwa na "NO" na 2 itakuwa na "GO".
False - 2 mtaalamu wa kudramu hapa inakamilika:
Experience (taaluma)
Experience <= 9.5
Inaeleza kwamba wakikomedy wanao taaluma 9.5 wanao wanaotumiwa kama maelezo kwa chapa ya kushoto, wengine wanaotumiwa kwa chapa ya kulia.
gini = 0.5
Inaeleza kwamba 50% ya matokeo yatakuwa na hatua kwa njia moja.
samples = 2
Inaeleza kwamba katika kama hii inahesabiwa 2 mtaalamu wa kikomedy (2 wana umri wa kipya na kikomedy wanao juu ya 35.5).
value = [1, 1]
Inaeleza kwamba kati ya wakikomedy hizi, 1 itakuwa na "NO" na 1 itakuwa na "GO".

True - 1 mtaalamu wa kikomedy hapa inayofunga:
gini = 0.0
inaonyesha kwamba mabaya yote yana matokeo yoyote yanaonekana kwa uangalifu.
samples = 1
inaonyesha kwamba kwenye mabaya hii inahusiana na mwigizaji wa komedi mmoja (mwigozi wa komedi na miaka 9.5 au chini).
value = [0, 1]
inaonyesha kwamba 0 inaonyesha 'HAPA' na 1 inaonyesha 'NA'.
False - mwigizaji wa komedi mmoja kwenye hali hii:
gini = 0.0
inaonyesha kwamba mabaya yote yana matokeo yoyote yanaonekana kwa uangalifu.
samples = 1
inaonyesha kwamba kwenye mabaya hii inahusiana na mwigizaji wa komedi mmoja (mwigozi wa komedi na miaka 9.5 au zaidi).
value = [1, 0]
1 inaonyesha 'HAPA' na 0 inaonyesha 'NA'.
Matokeo ya kuwa matokeo
Tunaweza kutumia mabaya wa mabara kumwambia matokeo mpya.
Mfano: Ninaonesha kuwa ninaonesha programu inayotumia mwigizaji wa komedi wa miaka 40 wa kigeni na miaka 10 ya uwanja wa komedi, na ukadiri wa komedi ni 7?
Mfano
Kutumia predict()
Makosa ya kumwambia matokeo mpya:
print(dtree.predict([[40, 10, 7, 1]]))
Mfano
Kama ukadiri wa komedi ni 6, nani ni?
print(dtree.predict([[40, 10, 6, 1]]))
Matokeo tofauti
Kama inafanya mara nyingi kwa pana, tena inaingia data yako, mabaya wa mabara yanaoweza kumwambia matokeo tofauti.
Hii ni kwa sababu mabaya wa mabara hawakuweza kumwambia taarifa 100% za kuweza. Inaendelea kwa ufikiaji wa matokeo, inaendelea kwa matokeo tofauti.
- Pya Zaidi Mafunzo/Mfumo
- Pya Zaidi Kuamua MySQL