Một hệ thống gọn gàng trong Python

Hướng dẫn này minh họa cách tính tạp chất và mức tăng thông tin trong Python bằng cách sử dụng các mô-đun

probs = fruits.value_counts[normalize=True]
probs
2 và
probs = fruits.value_counts[normalize=True]
probs
3 cho máy học dựa trên thông tin. Các phương pháp tính toán tạp chất được mô tả ở đây như sau

  • Sự hỗn loạn
  • chỉ số Gini

Chúng ta bắt đầu với một ví dụ đơn giản, tiếp theo là ví dụ về Thực vật trong Chương "Học tập dựa trên thông tin" trong sách giáo khoa

Một ví dụ đơn giản

Giả sử bạn đang đi dã ngoại và bạn đang chuẩn bị một giỏ trái cây ngon

Trong 1]

import warnings
warnings.filterwarnings["ignore"]

import pandas as pd
import numpy as np

Trong 2]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object

Đây là tần suất tương đối của từng quả trong rổ, có thể coi đây là phân phối xác suất của các quả

Trong 3]

probs = fruits.value_counts[normalize=True]
probs

Ra[3]

apple     0.428571
orange    0.285714
banana    0.285714
dtype: float64

Nếu thích, bạn có thể tự định nghĩa phân phối xác suất như bên dưới

Trong [4]

probs_by_hand = [3/7, 2/7, 2/7]
print[probs_by_hand]

________số 8

Nhớ lại rằng mô hình của Shannon định nghĩa entropy là $$H[x]. = - \sum_{i=1}^{\ell}[P[t=i] \times \log_{2}[P[t=i]]$$ Ý tưởng về entropy là a càng không đồng nhất và không tinh khiết đặc điểm là, entropy càng cao. Ngược lại, một tính năng càng đồng nhất và thuần khiết thì entropy càng thấp.

Phép tính sau đây cho thấy cách tính tạp chất của giỏ trái cây này bằng cách sử dụng tiêu chí entropy

Trong [5]

entropy = -1 * np.sum[np.log2[probs] * probs]
entropy

Ra[5]

probs = fruits.value_counts[normalize=True]
probs
0

Chỉ số tạp chất gini được xác định như sau. $$ \mbox{Gini}[x]. = 1 - \sum_{i=1}^{\ell}P[t=i]^{2}$$ Ý tưởng về chỉ số Gini cũng giống như trong entropy theo nghĩa là một tính năng càng không đồng nhất và không tinh khiết thì , chỉ số Gini càng cao

Một thuộc tính hay của chỉ số Gini là nó luôn nằm trong khoảng từ 0 đến 1 và điều này có thể giúp so sánh các chỉ số Gini qua các tính năng khác nhau dễ dàng hơn

Tạp chất của giỏ trái cây của chúng tôi sử dụng chỉ số Gini được tính như sau

Trong [6]

probs = fruits.value_counts[normalize=True]
probs
1

Ra[6]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
0

Để so sánh, hãy tính tạp chất của một rổ quả khác có 7 quả khác nhau với tần suất bằng nhau

Trong [7]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
1

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
2

Ra[7]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
3

Trong [8]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
4

Ra[8]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
5

Trong [9]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
6

Ra[9]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
7

Đúng như dự đoán, cả chỉ số entropy và Gini của giỏ trái cây thứ hai đều cao hơn giỏ trái cây thứ nhất

Ví dụ thực vật

Bây giờ chúng ta cùng tìm hiểu chi tiết các phép tính tạp chất cho bộ dữ liệu Thực vật ở Chương 5 trong sách giáo khoa

Trước tiên hãy nhập tập dữ liệu từ Đám mây

Trong [10]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
8

Ra[10]

suốidốcđộ caothực vật0Dốc sai caochapparal1Đúngtrung bìnhthấp ven sông2Dốc đúngtrung bìnhven sông3Saidốctrung bìnhchapparal4Sai bằng phẳngcaocây lá kim5Truestepcao nhấtcây lá kim6Truestepcaochapparal

Để thuận tiện, chúng tôi định nghĩa một hàm có tên là

probs = fruits.value_counts[normalize=True]
probs
4 để tính toán tạp chất của một tính năng bằng cách sử dụng chỉ số entropy hoặc gini

Trong [11]

lst = ['apple']*3 + ['orange']*2 + ['banana']*2
fruits = pd.Series[lst]
print[fruits]
9

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
0

Hãy tính entropy của tính năng mục tiêu "thực vật" bằng cách sử dụng chức năng mới của chúng tôi

Trong [12]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
1

Ra[12]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
2

Hãy tính toán mức tăng thông tin cho việc chia nhỏ dựa trên một tính năng mô tả để tìm ra tính năng tốt nhất để chia nhỏ. Đối với nhiệm vụ này, chúng tôi làm như sau

  1. Tính toán tạp chất của tính năng mục tiêu [sử dụng chỉ số entropy hoặc gini]
  2. Phân vùng tập dữ liệu dựa trên các giá trị duy nhất của tính năng mô tả
  3. Tính toán tạp chất cho mỗi phân vùng
  4. Tính tạp chất còn lại dưới dạng tổng trọng lượng của tạp chất của mỗi phân vùng
  5. Tính toán mức tăng thông tin dưới dạng chênh lệch giữa tạp chất của tính năng mục tiêu và tạp chất còn lại

Chúng tôi sẽ xác định một chức năng khác để đạt được điều này, được gọi là

probs = fruits.value_counts[normalize=True]
probs
5

Ví dụ, chúng ta hãy xem các cấp độ của tính năng "độ cao"

Trong [13]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
3

Ra[13]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
4

Hãy xem các phân vùng trông như thế nào đối với tính năng này và cách tính toán tương ứng đang sử dụng tiêu chí phân chia entropy

Trong [14]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
5

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
6

Ý tưởng ở đây là, đối với mỗi một trong 4 phân vùng dữ liệu ở trên,

  1. Chúng tôi tính toán tạp chất của chúng đối với tính năng mục tiêu dưới dạng tập dữ liệu độc lập
  2. Chúng tôi cân nhắc các tạp chất này với số lượng quan sát tương đối trong mỗi phân vùng. Số lượng quan sát tương đối được tính bằng số lượng quan sát trong phân vùng chia cho tổng số quan sát trong toàn bộ tập dữ liệu. Chẳng hạn, trọng số của phân vùng đầu tiên là 3/7
  3. Chúng tôi cộng các tạp chất có trọng lượng này và gọi nó là tạp chất còn lại cho tính năng này

Chẳng hạn, tạp chất còn lại được đo bằng entropy cho tính năng độ cao là 0. 918 x [3/7] + 1. 0 x [2/7] = 0. 679

Mức tăng thông tin sau đó được tính là 1. 557 - 0. 679 = 0. 878

Bây giờ chúng tôi đã sẵn sàng để xác định chức năng của chúng tôi. Có một chút mã hóa ở đây, nhưng chúng tôi có thể đảm bảo với bạn rằng việc cố gắng tìm hiểu cách mọi thứ hoạt động ở đây sẽ rất bổ ích để cải thiện kỹ năng lập trình Python của bạn

Trong [15]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
7

Bây giờ chức năng của chúng tôi đã được xác định, chúng tôi sẽ gọi nó cho từng tính năng mô tả trong tập dữ liệu. Trước tiên, hãy gọi nó bằng cách sử dụng tiêu chí phân chia entropy

Trong [16]

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
8

0     apple
1     apple
2     apple
3    orange
4    orange
5    banana
6    banana
dtype: object
9

Bây giờ, hãy gọi nó bằng cách sử dụng tiêu chí phân chia chỉ số gini

Trong [17]

probs = fruits.value_counts[normalize=True]
probs
0

probs = fruits.value_counts[normalize=True]
probs
1

Chúng tôi quan sát thấy rằng, với cả tiêu chí phân chia chỉ số entropy và gini, mức thu được thông tin cao nhất xảy ra với tính năng "độ cao"

Đây là phần tách tại nút gốc của cây quyết định tương ứng. Trong các lần phân tách tiếp theo, quy trình trên được lặp lại với tập hợp con của toàn bộ tập dữ liệu trong nhánh hiện tại cho đến khi đạt được điều kiện kết thúc

Công thức cho tỷ lệ là gì?

Tỷ số so sánh hai số, thường bằng cách chia chúng. Nếu bạn đang so sánh một điểm dữ liệu [A] với một điểm dữ liệu khác [B], công thức của bạn sẽ là A/B . Điều này có nghĩa là bạn đang chia thông tin A cho thông tin B. Ví dụ: nếu A là 5 và B là 10, tỷ lệ của bạn sẽ là 5/10.

Làm cách nào để chia 2 mảng NumPy?

Sử dụng numpy. divide[] hàm để chia các phần tử mảng đầu tiên [arr1] với các phần tử mảng thứ hai [arr2] . Cả mảng 1 và mảng 2 phải có cùng hình dạng và phần tử trong mảng 2 không được bằng 0; .

Làm thế nào để tính tỷ lệ Sharpe ở gấu trúc?

Cách tính tỷ lệ Sharpe với Pandas và NumPy .
Bước 1. Công thức cho Tỷ lệ Sharpe và cách diễn giải kết quả. .
Bước 2. Nhận danh mục giá cổ phiếu với Pandas Datareader. .
Bước 3. Tính log-return của danh mục đầu tư. .
Bước 4. Trực quan hóa log-return của danh mục đầu tư

Chủ Đề