Đối với một khoảng tin cậy giữa các danh mục, dựa trên những gì Omer Sagi đề xuất, hãy nói nếu chúng ta có khung dữ liệu gấu trúc với một cột chứa các danh mục [như category 1
, category 2
và category 3
] và một loại khác có dữ liệu liên tục [như một loại rating
9999] ], đây là một chức năng sử dụng
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
0 và cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
1 để vẽ sự khác biệt theo phương tiện giữa các nhóm với khoảng tin cậy:import pandas as pd
import numpy as np
import scipy.stats as st
def plot_diff_in_means[data: pd.DataFrame, col1: str, col2: str]:
"""
Given data, plots difference in means with confidence intervals across groups
col1: categorical data with groups
col2: continuous data for the means
"""
n = data.groupby[col1][col2].count[]
# n contains a pd.Series with sample size for each category
cat = list[data.groupby[col1, as_index=False][col2].count[][col1]]
# 'cat' has the names of the categories, like 'category 1', 'category 2'
mean = data.groupby[col1][col2].agg['mean']
# The average value of col2 across the categories
std = data.groupby[col1][col2].agg[np.std]
se = std / np.sqrt[n]
# Standard deviation and standard error
lower = st.t.interval[alpha = 0.95, df=n-1, loc = mean, scale = se][0]
upper = st.t.interval[alpha = 0.95, df =n-1, loc = mean, scale = se][1]
# Calculates the upper and lower bounds using SciPy
for upper, mean, lower, y in zip[upper, mean, lower, cat]:
plt.plot[[lower, mean, upper], [y, y, y], 'b.-']
# for 'b.-': 'b' means 'blue', '.' means dot, '-' means solid line
plt.yticks[
range[len[n]],
list[data.groupby[col1, as_index = False][col2].count[][col1]]
]
Cho dữ liệu giả thuyết:
cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
Điều này trông như thế này [nhưng tất nhiên là với nhiều hàng hơn]:
một | 0.10000 |
một | 0.64444 |
b | 0.50000 |
b | 0.12222 |
c | 7.50000 |
c | 8.88889 |
Chúng ta có thể sử dụng chức năng để vẽ một sự khác biệt về phương tiện với khoảng tin cậy:
plot_diff_in_means[data = test_dat, col1 = 'cat', col2 = 'rating']
Điều này mang lại cho chúng ta biểu đồ sau:
Công thức vấn đề: Làm thế nào để vẽ khoảng tin cậy trong Python? How to plot the confidence interval in Python? Để vẽ một khoảng thời gian đầy với chiều rộng
2 và các ranh giới khoảng từ cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
3 đến cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
4 xung quanh các giá trị hàm cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
5, hãy sử dụng lệnh gọi hàm cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
6 trên mô -đun Matplotlib cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
7.cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10
a = np.linspace[0.1, 5.0, 10]
b = np.linspace[0.5, 7.0, 10]
c = np.linspace[7.5, 20.0, 10]
rating = np.concatenate[[a, b, c]]
dat_dict = dict[]
dat_dict['cat'] = cat
dat_dict['rating'] = rating
test_dat = pd.DataFrame[dat_dict]
- Đối số đầu tiên
8 xác định các giá trịcat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10 a = np.linspace[0.1, 5.0, 10] b = np.linspace[0.5, 7.0, 10] c = np.linspace[7.5, 20.0, 10] rating = np.concatenate[[a, b, c]] dat_dict = dict[] dat_dict['cat'] = cat dat_dict['rating'] = rating test_dat = pd.DataFrame[dat_dict]
8 của đường cong được điền. Bạn có thể sử dụng các giá trị tương tự như cho cốt truyện gốc.cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10 a = np.linspace[0.1, 5.0, 10] b = np.linspace[0.5, 7.0, 10] c = np.linspace[7.5, 20.0, 10] rating = np.concatenate[[a, b, c]] dat_dict = dict[] dat_dict['cat'] = cat dat_dict['rating'] = rating test_dat = pd.DataFrame[dat_dict]
- Đối số thứ hai
3 xác định ranh giới khoảng thời gian thấp hơn.cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10 a = np.linspace[0.1, 5.0, 10] b = np.linspace[0.5, 7.0, 10] c = np.linspace[7.5, 20.0, 10] rating = np.concatenate[[a, b, c]] dat_dict = dict[] dat_dict['cat'] = cat dat_dict['rating'] = rating test_dat = pd.DataFrame[dat_dict]
- Đối số thứ ba
4 xác định ranh giới khoảng trên.cat = ['a'] * 10 + ['b'] * 10 + ['c'] * 10 a = np.linspace[0.1, 5.0, 10] b = np.linspace[0.5, 7.0, 10] c = np.linspace[7.5, 20.0, 10] rating = np.concatenate[[a, b, c]] dat_dict = dict[] dat_dict['cat'] = cat dat_dict['rating'] = rating test_dat = pd.DataFrame[dat_dict]
- Đối số thứ tư
2 xác định màu của khoảng bóng mờ.plot_diff_in_means[data = test_dat, col1 = 'cat', col2 = 'rating']
- Đối số thứ năm
3 xác định độ trong suốt để cho phép các khoảng thời gian phân lớp.plot_diff_in_means[data = test_dat, col1 = 'cat', col2 = 'rating']
from matplotlib import pyplot as plt import numpy as np # Create the data set x = np.arange[0, 10, 0.05] y = np.sin[x] Define the confidence interval ci = 0.1 * np.std[y] / np.mean[y] # Plot the sinus function plt.plot[x, y] # Plot the confidence interval plt.fill_between[x, [y-ci], [y+ci], color='blue', alpha=0.1] plt.show[]You cũng có thể vẽ hai khoảng tin cậy phân lớp bằng cách gọi hàm
plot_diff_in_means[data = test_dat, col1 = 'cat', col2 = 'rating']
4 hai lần với các ranh giới khoảng khác nhau:You can also plot two layered confidence intervals by calling the
plot_diff_in_means[data = test_dat, col1 = 'cat', col2 = 'rating']
4 function twice with different interval boundaries:from matplotlib import pyplot as plt import numpy as np # Create the data set x = np.arange[0, 10, 0.05] y = np.sin[x] # Define the confidence interval ci = 0.1 * np.std[y] / np.mean[y] # Plot the sinus function plt.plot[x, y] # Plot the confidence interval plt.fill_between[x, [y-ci], [y+ci], color='blue', alpha=0.1] plt.fill_between[x, [y-2*ci], [y+2*ci], color='yellow', alpha=.1] plt.show[]
Biểu đồ kết quả cho thấy hai khoảng tin cậy tính bằng màu xanh và vàng:
Bạn có thể chạy nó trong sổ ghi chép Jupyter tương tác của chúng tôi:
Bạn cũng có thể sử dụng chức năng regplot [] của Seaborn, thực hiện nó cho bạn, được cung cấp một bộ dữ liệu rải rác của các bộ dữ liệu [x, y].
import numpy as np import seaborn as sns import matplotlib.pyplot as plt #create some random data x = np.random.randint[1, 10, 20] y = x + np.random.normal[0, 1, 20] #create regplot ax = sns.regplot[x, y]
Điều này dẫn đến đầu ra thuận tiện:
Lưu ý rằng khoảng tin cậy 95% được tính toán tự động. Một đối số CI thứ ba thay thế trong
plot_diff_in_means[data = test_dat, col1 = 'cat', col2 = 'rating']
5 cho phép bạn xác định khoảng tin cậy khác [ví dụ: 80%].Để tăng cường các kỹ năng của bạn về Python, Matplotlib và Khoa học dữ liệu, hãy tham gia Học viện Email miễn phí của chúng tôi và tải xuống các tờ Cheat Python của bạn ngay bây giờ!
Resources::
- //matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.fill_between.html
- //stackoverflow.com/questions/59747313/how-to-plot-confidence-interval-in-python
- //www.statology.org/plot-confidence-interval-python/
Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.
Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer [Nostarch 2020], đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.
Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.