Tôi thực sự thích câu trả lời của Raphvanns. Nó rất hữu ích vì nó không chỉ tạo ra cốt truyện, mà còn giúp tôi hiểu PDF, CDF và CCDF là gì. Tôi có hai điều cần thêm vào giải pháp của Raphvanns: (1) sử dụng s = pd.Series(np.random.randint(1000, size=(1000)))
0 một cách khôn ngoan để làm cho quá trình dễ dàng hơn; (2) Hãy nhớ sắp xếp (xác nhận) s = pd.Series(np.random.randint(1000, size=(1000)))
1 trước khi tính toán PDF, CDF và CCDF.import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from collections import Counter
Tạo số ngẫu nhiên: s = pd.Series(np.random.randint(1000, size=(1000)))
Xây dựng DataFrame như Raphvanns đề xuất: dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
Tính toán PDF, CDF và CCDF: df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
Plot: df.plot(x = 'value', y = ['cdf', 'ccdf'], grid = True)
Bạn có thể tự hỏi tại sao chúng ta phải sắp xếp s = pd.Series(np.random.randint(1000, size=(1000)))
1 trước khi tính toán PDF, CDF và CCDF. Chà, giả sử kết quả sẽ là gì nếu chúng ta không sắp xếp chúng (lưu ý rằng s = pd.Series(np.random.randint(1000, size=(1000)))
3 tự động sắp xếp các mục, chúng ta sẽ thực hiện đơn hàng ngẫu nhiên theo cách sau).dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
# randomize the order of `value`:
df = df.sample(n=1000)
df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
df.plot(x = 'value', y = ['cdf'], grid = True)
Đây là cốt truyện: Tại sao nó lại xảy ra? Chà, bản chất của CDF là "số lượng điểm dữ liệu chúng ta đã thấy cho đến nay", trích dẫn các bài giảng của YY về lớp trực quan hóa dữ liệu của anh ta. Do đó, nếu thứ tự của s = pd.Series(np.random.randint(1000, size=(1000)))
1 không được sắp xếp (tăng dần hoặc giảm dần là tốt), thì khi bạn vẽ, trong đó trục s = pd.Series(np.random.randint(1000, size=(1000)))
5 theo thứ tự tăng dần, giá trị s = pd.Series(np.random.randint(1000, size=(1000)))
6 tất nhiên sẽ chỉ là một mớ hỗn độn.Nếu bạn áp dụng một đơn đặt hàng giảm dần, bạn có thể tưởng tượng rằng CDF và CCDF sẽ chỉ trao đổi vị trí của họ: Tôi sẽ để lại một câu hỏi cho độc giả của bài đăng này: Nếu tôi chọn ngẫu nhiên thứ tự s = pd.Series(np.random.randint(1000, size=(1000)))
1 như trên, sẽ sắp xếp s = pd.Series(np.random.randint(1000, size=(1000)))
1 sau (thay vì trước đó) tính toán PDF, CDF và CCDF giải quyết vấn đề?dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
# randomize the order of `value`:
df = df.sample(n=1000)
df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
# Will this solve the problem?
df = df.sort_values(by='value')
df.plot(x = 'value', y = ['cdf'], grid = True)
Bạn có thể nhận được CDF dễ dàng. Vì vậy, PDF thông qua CDF Nội phân chính - Các mô -đun cần thiết
- Các chức năng được sử dụng
- Làm thế nào để bạn vẽ một phân phối bình thường trong Python?
- Làm thế nào để bạn vẽ một phân phối bình thường?
- Làm thế nào để bạn vẽ nhiều phân phối bình thường trong Python?
import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate
import scipy.stats
def setGridLine(ax):
#http://jonathansoma.com/lede/data-studio/matplotlib/adding-grid-lines-to-a-matplotlib-chart/
ax.set_axisbelow(True)
ax.minorticks_on()
ax.grid(which='major', linestyle='-', linewidth=0.5, color='grey')
ax.grid(which='minor', linestyle=':', linewidth=0.5, color='#a6a6a6')
ax.tick_params(which='both', # Options for both major and minor ticks
top=False, # turn off top ticks
left=False, # turn off left ticks
right=False, # turn off right ticks
bottom=False) # turn off bottom ticks
data1 = np.random.normal(0,1,1000000)
x=np.sort(data1)
y=np.arange(x.shape[0])/(x.shape[0]+1)
f2 = scipy.interpolate.interp1d(x, y,kind='linear')
x2 = np.linspace(x[0],x[-1],1001)
y2 = f2(x2)
y2b = np.diff(y2)/np.diff(x2)
x2b=(x2[1:]+x2[:-1])/2.
f3 = scipy.interpolate.interp1d(x, y,kind='cubic')
x3 = np.linspace(x[0],x[-1],1001)
y3 = f3(x3)
y3b = np.diff(y3)/np.diff(x3)
x3b=(x3[1:]+x3[:-1])/2.
bins=np.arange(-4,4,0.1)
bins_centers=0.5*(bins[1:]+bins[:-1])
cdf = scipy.stats.norm.cdf(bins_centers)
pdf = scipy.stats.norm.pdf(bins_centers)
plt.rcParams["font.size"] = 18
fig, ax = plt.subplots(3,1,figsize=(10,16))
ax[0].set_title("cdf")
ax[0].plot(x,y,label="data")
ax[0].plot(x2,y2,label="linear")
ax[0].plot(x3,y3,label="cubic")
ax[0].plot(bins_centers,cdf,label="ans")
ax[1].set_title("pdf:linear")
ax[1].plot(x2b,y2b,label="linear")
ax[1].plot(bins_centers,pdf,label="ans")
ax[2].set_title("pdf:cubic")
ax[2].plot(x3b,y3b,label="cubic")
ax[2].plot(bins_centers,pdf,label="ans")
for idx in range(3):
ax[idx].legend()
setGridLine(ax[idx])
plt.show()
plt.clf()
plt.close()
1) Trừ khi nhiều sơ đồ được vẽ, chúng tôi (dường như) nhìn vào cùng một bản vẽ và 2) đuôi bị cắt khi vẽ nhiều phân phối. 1) dễ dàng được sửa bằng cách thêm PLT.YLIM (0,1) vào phương thức cốt truyện. 2) Mặt khác, yêu cầu chúng ta phải tính đến hình dạng của tất cả các lô trong khi vẽ. Bạn có thể nhận được CDF dễ dàng. Vì vậy, PDF thông qua CDF Nội phân chính Các mô -đun cần thiếtXem thảo luận1) Trừ khi nhiều sơ đồ được vẽ, chúng tôi (dường như) nhìn vào cùng một bản vẽ và 2) đuôi bị cắt khi vẽ nhiều phân phối. 1) dễ dàng được sửa bằng cách thêm PLT.YLIM (0,1) vào phương thức cốt truyện. 2) Mặt khác, yêu cầu chúng ta phải tính đến hình dạng của tất cả các lô trong khi vẽ. Bạn có thể nhận được CDF dễ dàng. Vì vậy, PDF thông qua CDF Nội phân chính Prerequisites:
- Các mô -đun cần thiết
- Xem thảo luận
- Cải thiện bài viết
- Lưu bài viết
Đọc is a probability function used in statistics that tells about how the data values are distributed. It is the most important probability distribution function used in statistics because of its advantages in real case scenarios. For example, the height of the population, shoe size, IQ level, rolling a die, and many more. Bàn luận Matplotlib Numpy Các mô -đun cần thiết- Xem thảo luậnis python’s data visualization library which is widely used for the purpose of
data visualization.
- Cải thiện bài viết is a general-purpose array-processing package. It provides a high-performance multidimensional array object, and tools for working with these arrays. It is the fundamental package for scientific computing with Python.
- Scipy là một thư viện Python hữu ích trong việc giải nhiều phương trình toán học và thuật toán.is a python library that is useful in solving many mathematical equations and algorithms.
- Mô -đun thống kê cung cấp các chức năng để tính toán số liệu thống kê toán học của dữ liệu số.module provides functions for calculating
mathematical statistics of numeric data.
Các chức năng được sử dụng- Để tính toán trung bình của dữ liệu
Syntax: mean(data) - Để tính toán độ lệch chuẩn của dữ liệu
Syntax: stdev(data) - Để tính toán mật độ xác suất bình thường của định mức dữ liệu.pdf được sử dụng, nó đề cập đến hàm mật độ xác suất bình thường là mô -đun trong thư viện SCIPY sử dụng hàm mật độ xác suất trên để tính toán giá trị.
Syntax: Norm.pdf (dữ liệu, LỘC, tỷ lệ)
Ở đây, tham số LỘC còn được gọi là giá trị trung bình và tham số tỷ lệ còn được gọi là độ lệch chuẩn. Cách tiếp cận- Nhập mô -đun
- Tạo dữ liệu
- Tính toán trung bình và độ lệch
- Tính mật độ xác suất bình thường
- Sơ đồ sử dụng các giá trị được tính toán ở trên
- Hiển thị cốt truyện
Dưới đây là việc thực hiện. Python3s = pd.Series(np.random.randint(1000, size=(1000)))
9 dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
0s = pd.Series(np.random.randint(1000, size=(1000)))
9 dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
2dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
3 dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
4s = pd.Series(np.random.randint(1000, size=(1000)))
9 dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
6s = pd.Series(np.random.randint(1000, size=(1000)))
9 dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
8dic = dict(Counter(s))
df = pd.DataFrame(s.items(), columns = ['value', 'frequency'])
9df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
0 df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
1df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
2df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
3df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
4df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
3df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
4df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
7df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
8df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
9df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
0 df.plot(x = 'value', y = ['cdf', 'ccdf'], grid = True)
1df.plot(x = 'value', y = ['cdf', 'ccdf'], grid = True)
2df['pdf'] = df.frequency/sum(df.frequency)
df['cdf'] = df['pdf'].cumsum()
df['ccdf'] = 1-df['cdf']
0 df.plot(x = 'value', y = ['cdf', 'ccdf'], grid = True)
4df.plot(x = 'value', y = ['cdf', 'ccdf'], grid = True)
5df.plot(x = 'value', y = ['cdf', 'ccdf'], grid = True)
6Output: Đầu ra của mã trên Làm thế nào để bạn vẽ một phân phối bình thường trong Python?Approach.. Nhập mô -đun .. Tạo dữ liệu .. Tính trung bình và độ lệch .. Tính mật độ xác suất bình thường .. Lô đất sử dụng các giá trị được tính toán ở trên .. Hiển thị âm mưu .. Làm thế nào để bạn vẽ một phân phối bình thường?Phác thảo một hình ảnh của một phân phối bình thường.Bắt đầu bằng cách vẽ một đường ngang (trục).Tiếp theo, vẽ một đường cong bình thường (hình chuông) tập trung vào trục ngang.Sau đó vẽ một đường thẳng đứng từ trục ngang qua tâm của đường cong, cắt nó làm đôi. Làm thế nào để bạn vẽ nhiều phân phối bình thường trong Python?1) Trừ khi nhiều sơ đồ được vẽ, chúng tôi (dường như) nhìn vào cùng một bản vẽ và 2) đuôi bị cắt khi vẽ nhiều phân phối.1) dễ dàng được sửa bằng cách thêm PLT.YLIM (0,1) vào phương thức cốt truyện.2) Mặt khác, yêu cầu chúng ta phải tính đến hình dạng của tất cả các lô trong khi vẽ.adding plt. ylim(0,1) to the plot method. 2) On the other hand, requires us to take into account the shape of all plots while drawing.
|