Hướng dẫn Python

TRANG CHỦ Python Giới thiệu Python Python Bắt đầu Cú pháp Python Nhận xét Python Biến Python Các kiểu dữ liệu Python Số Python Đúc Python Chuỗi Python Python Booleans Toán tử Python Danh sách Python Python Tuples Bộ Python Từ điển Python Python Nếu ... Khác Python While Loops Python cho các vòng lặp Các hàm Python Python Lambda Mảng Python Các lớp / đối tượng Python Kế thừa Python Trình lặp lại Python Phạm vi Python Mô-đun Python Ngày trong Python Toán Python JSON Python Python RegEx Python PIP Python Thử ... Ngoại trừ Đầu vào của người dùng Python Định dạng chuỗi Python

Xử lý tập tin

Xử lý tệp Python Tệp đọc Python Viết / tạo tệp trong Python Xóa tệp trong Python

Mô-đun Python

Hướng dẫn NumPy Panda Walkthrough Hướng dẫn về Scipy

Python Matplotlib

Giới thiệu Matplotlib Matplotlib Bắt đầu Matplotlib Pyplot Matplotlib Plotting Điểm đánh dấu Matplotlib Dòng Matplotlib Nhãn Matplotlib Matplotlib Grid Matplotlib Subplots Matplotlib Scatter Matplotlib Bars Biểu đồ Matplotlib Biểu đồ bánh Matplotlib

Học máy

Bắt đầu Chế độ trung bình trung bình Độ lệch chuẩn Phân vị Phân phối dữ liệu Phân phối dữ liệu bình thường Lô phân tán Hồi quy tuyến tính Hồi quy đa thức Nhiều hồi quy Tỉ lệ Huấn luyện / Kiểm tra Cây quyết định

Python MySQL

MySQL Bắt đầu MySQL Tạo cơ sở dữ liệu MySQL Tạo bảng Chèn MySQL Lựa chọn MySQL MySQL ở đâu MySQL Đặt hàng bởi MySQL Delete Bảng thả MySQL Cập nhật MySQL Giới hạn MySQL Tham gia MySQL

Python MongoDB

MongoDB Bắt đầu MongoDB Tạo cơ sở dữ liệu MongoDB Tạo Bộ sưu tập Chèn MongoDB MongoDB Tìm Truy vấn MongoDB MongoDB sắp xếp MongoDB Xóa MongoDB Drop Collection Cập nhật MongoDB Giới hạn MongoDB

Tham khảo Python

Tổng quan về Python Các hàm tích hợp trong Python Phương thức chuỗi Python Phương thức danh sách Python Phương thức từ điển Python Phương thức Tuple trong Python Phương thức tập hợp Python Phương thức tệp Python Từ khóa Python Ngoại lệ Python Bảng chú giải thuật ngữ Python

Tham chiếu mô-đun

Mô-đun ngẫu nhiên Mô-đun yêu cầu Mô-đun thống kê Mô-đun Toán học Mô-đun cMath

Python Làm thế nào để

Xóa danh sách trùng lặp Đảo ngược một chuỗi Thêm hai số

Ví dụ Python

Ví dụ Python Trình biên dịch Python Bài tập Python Python Quiz Chứng chỉ Python

Học máy - Cây quyết định



Cây quyết định

Trong chương này, chúng tôi sẽ hướng dẫn bạn cách lập "Cây quyết định". Cây quyết định là một Sơ đồ luồng và có thể giúp bạn đưa ra quyết định dựa trên kinh nghiệm trước đó.

Trong ví dụ, một người sẽ cố gắng quyết định xem họ có nên đi xem một chương trình hài kịch hay không.

May mắn thay, người mẫu của chúng tôi đã đăng ký mỗi khi có một chương trình hài kịch trong thị trấn, và đăng ký một số thông tin về diễn viên hài, và cũng đăng ký nếu anh ấy / cô ấy có đi hay không.

Già đi Kinh nghiệm Thứ hạng Quốc tịch Đi
36 10 9 Vương quốc Anh KHÔNG
42 12 4 Hoa Kỳ KHÔNG
23 4 6 n KHÔNG
52 4 4 Hoa Kỳ KHÔNG
43 21 số 8 Hoa Kỳ ĐÚNG
44 14 5 Vương quốc Anh KHÔNG
66 3 7 n ĐÚNG
35 14 9 Vương quốc Anh ĐÚNG
52 13 7 n ĐÚNG
35 5 9 n ĐÚNG
24 3 5 Hoa Kỳ KHÔNG
18 3 7 Vương quốc Anh ĐÚNG
45 9 9 Vương quốc Anh ĐÚNG

Giờ đây, dựa trên tập dữ liệu này, Python có thể tạo một cây quyết định có thể được sử dụng để quyết định xem có bất kỳ chương trình mới nào đáng tham gia hay không.



Làm thế nào nó hoạt động?

Đầu tiên, nhập các mô-đun bạn cần và đọc tập dữ liệu với gấu trúc:

Thí dụ

Đọc và in tập dữ liệu:

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)

Để tạo cây quyết định, tất cả dữ liệu phải ở dạng số.

Chúng ta phải chuyển đổi các cột không phải số 'Quốc tịch' và 'Đi' thành các giá trị số.

Pandas có một map()phương pháp lấy từ điển với thông tin về cách chuyển đổi các giá trị.

{'UK': 0, 'USA': 1, 'N': 2}

Có nghĩa là chuyển đổi các giá trị 'UK' thành 0, 'USA' thành 1 và 'N' thành 2.

Thí dụ

Thay đổi giá trị chuỗi thành giá trị số:

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)

Sau đó, chúng ta phải tách các cột tính năng khỏi cột mục tiêu .

Các cột tính năng là các cột mà chúng tôi cố gắng dự đoán cột mục tiêu là cột có các giá trị mà chúng tôi cố gắng dự đoán.

Thí dụ

Xlà cột tính năng, ylà cột mục tiêu:

features = ['Age', 'Experience', 'Rank', 'Nationality']

X = df[features]
y = df['Go']

print(X)
print(y)

Bây giờ chúng ta có thể tạo cây quyết định thực tế, phù hợp với thông tin chi tiết của chúng ta và lưu tệp .png trên máy tính:

Thí dụ

Tạo Cây quyết định, lưu nó dưới dạng hình ảnh và hiển thị hình ảnh:

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()


Giải thích kết quả

Cây quyết định sử dụng các quyết định trước đó của bạn để tính toán khả năng bạn có muốn đi xem một diễn viên hài hay không.

Hãy để chúng tôi đọc các khía cạnh khác nhau của cây quyết định:

Thứ hạng

Rank <= 6.5có nghĩa là mọi diễn viên hài có thứ hạng từ 6.5 trở xuống sẽ đi theo Truemũi tên (bên trái), và những người còn lại sẽ đi theo Falsemũi tên (bên phải).

gini = 0.497 đề cập đến chất lượng của phép tách và luôn là một số trong khoảng từ 0,0 đến 0,5, trong đó 0,0 có nghĩa là tất cả các mẫu đều có kết quả giống nhau và 0,5 có nghĩa là phép tách được thực hiện chính xác ở giữa.

samples = 13 có nghĩa là có 13 nghệ sĩ hài còn lại vào thời điểm này trong quyết định, đó là tất cả họ vì đây là bước đầu tiên.

value = [6, 7] có nghĩa là trong số 13 diễn viên hài này, 6 người sẽ nhận được "KHÔNG" và 7 sẽ nhận được "ĐI".

Gini

Có nhiều cách để chia mẫu, chúng tôi sử dụng phương pháp GINI trong hướng dẫn này.

Phương pháp Gini sử dụng công thức này:

Gini = 1 - (x/n)2 - (y/n)2

Đâu xlà số câu trả lời khẳng định ("ĐI"), nlà số mẫu và ylà số câu trả lời phủ định ("KHÔNG"), cho chúng ta phép tính sau:

1 - (7 / 13)2 - (6 / 13)2 = 0.497

Bước tiếp theo có hai hộp, một hộp dành cho những diễn viên hài có 'Xếp hạng' từ 6,5 trở xuống và một hộp với những người còn lại.

True - 5 diễn viên hài kết thúc tại đây:

gini = 0.0 có nghĩa là tất cả các mẫu đều có kết quả giống nhau.

samples = 5nghĩa là nhánh này còn lại 5 nghệ sĩ hài (5 nghệ sĩ hài có Xếp hạng từ 6.5 trở xuống).

value = [5, 0]có nghĩa là 5 sẽ nhận được "KHÔNG" và 0 sẽ nhận được "ĐI".

Sai - 8 Diễn viên hài Tiếp tục:

Quốc tịch

Nationality <= 0.5có nghĩa là những diễn viên hài có giá trị quốc tịch nhỏ hơn 0,5 sẽ đi theo mũi tên sang trái (có nghĩa là tất cả mọi người đến từ Vương quốc Anh), và những người còn lại sẽ theo mũi tên sang phải.

gini = 0.219có nghĩa là khoảng 22% mẫu sẽ đi theo một hướng.

samples = 8nghĩa là nhánh này còn lại 8 nghệ sĩ hài (8 diễn viên hài có Xếp hạng cao hơn 6.5).

value = [1, 7]có nghĩa là trong số 8 diễn viên hài này, 1 sẽ nhận được "KHÔNG" và 7 sẽ nhận được "ĐI".




Đúng - 4 Diễn viên hài Tiếp tục:

Già đi

Age <= 35.5nghĩa là các diễn viên hài ở độ tuổi 35,5 trở xuống sẽ đi theo mũi tên bên trái, còn lại sẽ đi theo mũi tên bên phải.

gini = 0.375có nghĩa là khoảng 37,5% số mẫu sẽ đi theo một hướng.

samples = 4có nghĩa là còn lại 4 nghệ sĩ hài trong nhánh này (4 nghệ sĩ hài đến từ Vương quốc Anh).

value = [1, 3]có nghĩa là trong số 4 diễn viên hài này, 1 sẽ nhận được "KHÔNG" và 3 sẽ nhận được "ĐI".

Sai - 4 Diễn viên hài Kết thúc tại đây:

gini = 0.0 có nghĩa là tất cả các mẫu đều có kết quả giống nhau.

samples = 4có nghĩa là còn lại 4 nghệ sĩ hài trong nhánh này (4 nghệ sĩ hài không đến từ Vương quốc Anh).

value = [0, 4]có nghĩa là trong 4 diễn viên hài này, 0 sẽ nhận được "KHÔNG" và 4 sẽ nhận được "ĐI".




True - 2 Diễn viên hài Kết thúc tại đây:

gini = 0.0 có nghĩa là tất cả các mẫu đều có kết quả giống nhau.

samples = 2nghĩa là ngành này còn lại 2 diễn viên hài (2 diễn viên hài ở độ tuổi 35,5 trở xuống).

value = [0, 2] có nghĩa là trong số 2 diễn viên hài này, 0 sẽ nhận được "KHÔNG" và 2 sẽ nhận được "ĐI".

Sai - 2 Diễn viên hài Tiếp tục:

Kinh nghiệm

Experience <= 9.5 nghĩa là các diễn viên hài có 9,5 năm kinh nghiệm trở xuống sẽ đi theo mũi tên bên trái, còn lại sẽ đi theo mũi tên bên phải.

gini = 0.5 có nghĩa là 50% mẫu sẽ đi theo một hướng.

samples = 2 nghĩa là nhánh này còn lại 2 diễn viên hài (2 diễn viên hài trên 35,5 tuổi).

value = [1, 1] nghĩa là trong số 2 diễn viên hài này, 1 người sẽ nhận được "KHÔNG" và 1 sẽ nhận được "ĐI".




True - 1 Diễn viên hài kết thúc tại đây:

gini = 0.0 có nghĩa là tất cả các mẫu đều có kết quả giống nhau.

samples = 1 nghĩa là ngành này còn lại 1 diễn viên hài (1 diễn viên hài từ 9,5 năm kinh nghiệm trở xuống).

value = [0, 1] có nghĩa là 0 sẽ nhận được "KHÔNG" và 1 sẽ nhận được "ĐI".

Sai - 1 Diễn viên hài kết thúc tại đây:

gini = 0.0 có nghĩa là tất cả các mẫu đều có kết quả giống nhau.

samples = 1 nghĩa là ngành này còn lại 1 nghệ sĩ hài (1 nghệ sĩ hài hơn 9.5 năm kinh nghiệm).

value = [1, 0] có nghĩa là 1 sẽ nhận được "KHÔNG" và 0 sẽ nhận được "ĐI".


Dự đoán giá trị

Chúng ta có thể sử dụng Cây quyết định để dự đoán các giá trị mới.

Ví dụ: Tôi có nên đi xem một chương trình có diễn viên hài người Mỹ 40 tuổi, có 10 năm kinh nghiệm và xếp hạng hài là 7 không?

Thí dụ

Sử dụng phương thức dự đoán () để dự đoán các giá trị mới:

print(dtree.predict([[40, 10, 7, 1]]))

Thí dụ

Câu trả lời sẽ là gì nếu thứ hạng hài là 6?

print(dtree.predict([[40, 10, 6, 1]]))


Kết quả khác nhau

Bạn sẽ thấy rằng Cây quyết định cung cấp cho bạn các kết quả khác nhau nếu bạn chạy nó đủ số lần, ngay cả khi bạn cung cấp cùng một dữ liệu.

Đó là bởi vì Cây quyết định không cho chúng ta câu trả lời chắc chắn 100%. Nó dựa trên xác suất của một kết quả và câu trả lời sẽ khác nhau.