python 正态分布拟合
时间: 2023-08-19 18:13:02 浏览: 141
Python库 | fitdist-0.1.1.tar.gz
在Python中,可以使用numpy和matplotlib库来进行正态分布的拟合。以下是三个示例代码,分别展示了不同的方法来绘制正态分布的直方图和拟合曲线。
示例代码1:
```python
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
def demo2():
mu, sigma, num_bins = 0, 1, 50
x = mu + sigma * np.random.randn(1000000) # 生成正态分布的数据
n, bins, patches = plt.hist(x, num_bins, normed=True, facecolor='blue', alpha=0.5) # 绘制直方图
y = mlab.normpdf(bins, mu, sigma) # 拟合曲线
plt.plot(bins, y, 'r--') # 绘制拟合曲线
plt.xlabel('Expectation')
plt.ylabel('Probability')
plt.title('Histogram of normal distribution: $\mu = 0$, $\sigma=1$')
plt.subplots_adjust(left=0.15)
plt.show()
demo2()
```
示例代码2:
```python
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
def demo1():
mu, sigma = 0, 1
sampleNo = 1000
np.random.seed(0)
s = np.random.normal(mu, sigma, sampleNo)
plt.hist(s, bins=100, normed=True)
plt.show()
demo1()
```
示例代码3:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import seaborn as sns
sns.set(context='notebook', font='simhei', style='whitegrid') # 设置风格尺度和显示中文
import warnings
warnings.filterwarnings('ignore') # 不发出警告
def demo3():
s = np.loadtxt('D:/dis.txt') # 从文件中读取数据
mu = np.mean(s) # 计算均值
sigma = np.std(s) # 计算标准差
num_bins = 50 # 直方图柱子的数量
n, bins, patches = plt.hist(s, num_bins, normed=1, facecolor='blue', alpha=0.5) # 绘制直方图
y = norm.pdf(bins, mu, sigma) # 拟合一条最佳正态分布曲线
plt.plot(bins, y, 'r--') # 绘制拟合曲线
plt.xlabel('sepal-length') # 绘制x轴
plt.ylabel('Probability') # 绘制y轴
plt.title(r'Histogram: $\mu={}$, $\sigma={}$'.format(mu, sigma)) # 在标题中显示mu和sigma
plt.subplots_adjust(left=0.15) # 调整左边距
plt.show()
demo3()
```
这些示例代码展示了如何使用numpy和matplotlib库来绘制正态分布的直方图和拟合曲线。你可以根据自己的需求选择其中的一种方法来进行正态分布的拟合。
阅读全文