Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะใช้แผนผังการตัดสินใจเพื่อสร้างตัวแยกประเภทใน Python ได้อย่างไร


โครงสร้างการตัดสินใจเป็นหน่วยการสร้างพื้นฐานของอัลกอริธึมฟอเรสต์แบบสุ่ม ถือว่าเป็นหนึ่งในอัลกอริธึมที่ได้รับความนิยมมากที่สุดในการเรียนรู้ของเครื่องและใช้เพื่อวัตถุประสงค์ในการจัดหมวดหมู่ เป็นที่นิยมอย่างมากเพราะเข้าใจง่าย

การตัดสินใจที่กำหนดโดยแผนผังการตัดสินใจสามารถใช้เพื่ออธิบายว่าทำไมจึงมีการคาดการณ์บางอย่าง ซึ่งหมายความว่าผู้ใช้จะเข้าและออกจากกระบวนการได้อย่างชัดเจน สิ่งเหล่านี้ยังเป็นพื้นฐานสำหรับวิธีการรวมกลุ่ม เช่น การบรรจุถุง การสุ่มป่า และการเร่งไล่ระดับ พวกเขายังเป็นที่รู้จักกันในนาม CART เช่นการจำแนกและการถดถอยต้นไม้ สามารถมองเห็นได้เป็นไบนารีทรี (อันที่ศึกษาในโครงสร้างข้อมูลและอัลกอริธึม)

ทุกโหนดในแผนผังแสดงถึงตัวแปรอินพุตเดี่ยว และโหนดปลายสุด (ซึ่งเรียกอีกอย่างว่าโหนดเทอร์มินัล) มีตัวแปรเอาต์พุต โหนดปลายสุดเหล่านี้ใช้สำหรับการทำนายบนโหนด เมื่อมีการสร้างโครงสร้างการตัดสินใจ แนวคิดพื้นฐานคือพื้นที่ที่กำหนดจะถูกแบ่งออกเป็นหลายส่วน ค่าทั้งหมดถูกจัดทำขึ้นและพยายามแยกส่วนที่แตกต่างกันเพื่อให้ได้ต้นทุนที่น้อยลงและค่าการทำนายที่ดีที่สุด ค่าเหล่านี้ถูกเลือกอย่างตะกละตะกลาม

การแยกโหนดเหล่านี้จะดำเนินต่อไปจนกว่าจะถึงความลึกสูงสุดของต้นไม้ แนวคิดเบื้องหลังการใช้โครงสร้างการตัดสินใจคือการแบ่งชุดข้อมูลที่ป้อนเข้าออกเป็นชุดข้อมูลที่มีขนาดเล็กลงตามค่าคุณลักษณะเฉพาะ จนกว่าตัวแปรเป้าหมายทุกตัวจะอยู่ในหมวดหมู่เดียว การแบ่งส่วนนี้จัดทำขึ้นเพื่อให้ได้รับข้อมูลสูงสุดในทุกขั้นตอน

แผนภูมิการตัดสินใจทุกต้นเริ่มต้นด้วยการรูท และนี่คือสถานที่ที่มีการแยกส่วนแรก ควรหาวิธีที่มีประสิทธิภาพเพื่อให้แน่ใจว่ามีการกำหนดโหนด

นี่คือที่มาของค่า Gini Gini ถือเป็นหนึ่งในการวัดที่ใช้บ่อยที่สุดในการวัดความไม่เท่าเทียมกัน ความไม่เท่าเทียมกันหมายถึงคลาสเป้าหมาย (เอาต์พุต) ซึ่งทุกชุดย่อยในโหนดอาจเป็นของ

ดังนั้น ค่าจินีจะถูกคำนวณหลังจากการแยกทุกครั้ง จากค่าจินี/ค่าอสมการ การรับข้อมูลสามารถกำหนดได้

DecisionTreeClassifier ใช้เพื่อทำการจำแนกประเภทหลายคลาส

ด้านล่างเป็นไวยากรณ์เดียวกัน

class sklearn.tree.DecisionTreeClassifier(*, criterion='gini',…)

ต่อไปนี้เป็นตัวอย่าง −

ตัวอย่าง

from sklearn import tree
from sklearn.model_selection import train_test_split
my_data = [[16,19],[17,32],[13,3],[14,5],[141,28],[13,34],[186,2],[126,25],[176,28],
[131,32],[166,6],[128,32],[79,110],[12,38],[19,91],[71,136],[116,25],[17,200], [15,25], [14,32],[13,35]]
target_vals =['Man','Woman','Man','Woman',
'Woman','Man','Woman','Woman',
'Woman','Woman','Woman','Man','Man',
'Man','Woman', 'Woman', 'Woman',
'Woman','Man','Woman','Woman']
data_feature_names = ['Feature_1','Feature_2']
X_train, X_test, y_train, y_test = train_test_split(my_data, target_vals, test_size = 0.2, random_state = 1)
clf = tree.DecisionTreeClassifier()
print("The decision tree classifier is being called")
DTclf = clf.fit(my_data,target_vals)
prediction = DTclf.predict([[135,29]])
print("The predicted value is ")
print(prediction)

ผลลัพธ์

The decision tree classifier is being called
The predicted value is
['Woman']

คำอธิบาย

  • แพ็คเกจที่จำเป็นจะถูกนำเข้าไปยังสภาพแวดล้อม
  • รหัสนี้ใช้เพื่อจำแนกค่าของค่าเป้าหมายตามค่าคุณลักษณะ
  • มีการกำหนดเวกเตอร์คุณลักษณะและค่าเป้าหมาย
  • ข้อมูลจะถูกแบ่งออกเป็นชุดการฝึกและการทดสอบโดยใช้ฟังก์ชัน "train_test_split"
  • มีการเรียก DecisionTreeClassifier และข้อมูลนั้นเหมาะสมกับโมเดล
  • ฟังก์ชัน "ทำนาย" ใช้เพื่อคาดคะเนค่าของค่าคุณลักษณะ
  • ผลลัพธ์จะแสดงบนคอนโซล