我有一個資料框,其中 x (第 x 列)和 y (第 1 列)值低于我得到meanand stdev。
接下來我將它們一起繪制在一張圖表上,但它看起來非常錯誤,不僅僅是擬合曲線移動了,我不確定它有什么問題。
import matplotlib.pyplot as plt
from scipy import stats
from scipy import optimize
import numpy as np
data_sample = {'x': [0,1,2,3,4,5,6,7,8,9,10], '1': [0,1,2,3,4,5,4,3,2,1,0]}
def test_func(x, a, b):
return stats.norm.pdf(x,a,b)
params, cov_params = optimize.curve_fit(test_func, data_sample['x'], data_sample['1'])
print(params)
plt.scatter(data_sample['x'], data_sample['1'], label='Data')
plt.plot(data_sample['x'] , test_func(data_sample['x'], params[0], params[1]), label='Fitted function')
plt.legend(loc='best')
plt.show()

uj5u.com熱心網友回復:
需要對資料進行歸一化,使曲線下的面積為 1。要計算面積,當所有 x 值相差 1 時,您需要 y 值的總和。如果 x 值之間的空間大于或小于 1,則還應包括該因子。另一種計算面積的方法是
PS:使用原始代碼(沒有歸一化),但使用更詳細的 x 值,窄曲線會更明顯:
x_detailed = np.linspace(min(data_sample['x']) - 1, max(data_sample['x']) 1, 500)
plt.plot(x_detailed, test_func(x_detailed, params[0], params[1]), color='m', label='Fitted function')

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/418146.html
標籤:
