একটি গড় এবং একটি বৈকল্পিক দেওয়া আছে কি একটি সাধারণ ফাংশন কল যা একটি সাধারণ বিতরণের প্লট করবে?
একটি গড় এবং একটি বৈকল্পিক দেওয়া আছে কি একটি সাধারণ ফাংশন কল যা একটি সাধারণ বিতরণের প্লট করবে?
উত্তর:
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()
scipy.stats.norm.pdf(x, mu, sigma)
পরিবর্তে ব্যবহার করা উচিতmlab.normpdf(x, mu, sigma)
math
আপনি ইতিমধ্যে আমদানি করা numpy
এবং ব্যবহার করতে পারলে আপনি কেন আমদানি করবেন np.sqrt
?
math
স্কেলার অপারেশনের জন্য ব্যবহার করার প্রবণতা দেখছি , উদাহরণস্বরূপ, স্কেলারগুলিতে অপারেটিংয়ের math.sqrt
চেয়ে বেশি মাত্রায় দ্রুত np.sqrt
।
আমি মনে করি না যে কোনও ফাংশন রয়েছে যা একটি একক কলে সমস্ত কিছু করে। তবে আপনি গাউসিয়ান সম্ভাব্যতা ঘনত্ব ফাংশনটি খুঁজে পেতে পারেন scipy.stats
।
সুতরাং আমি যে সহজ উপায়টি নিয়ে আসতে পারি তা হ'ল:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# Plot between -10 and 10 with .001 steps.
x_axis = np.arange(-10, 10, 0.001)
# Mean = 0, SD = 2.
plt.plot(x_axis, norm.pdf(x_axis,0,2))
plt.show()
সূত্র:
norm.pdf
করা উচিত norm(0, 1).pdf
। এটি অন্যান্য ক্ষেত্রে সামঞ্জস্য করা / বুঝতে এটি সহজ করে তোলে যে এটি এলোমেলো ভেরিয়েবলের প্রতিনিধিত্ব করে এমন একটি বস্তু উত্পন্ন করে।
পরিবর্তে সিবর্ন ব্যবহার করুন আমি 1000 মানগুলির গড় = 5 স্টাড = 3 দিয়ে সমুদ্র সৈকতের স্পষ্ট ব্যবহার করছি
value = np.random.normal(loc=5,scale=3,size=1000)
sns.distplot(value)
আপনি একটি সাধারণ বিতরণ বক্ররেখা পাবেন
আপনি যদি ধাপে ধাপে পদ্ধতির ব্যবহার করতে পছন্দ করেন তবে আপনি নীচের মতো সমাধান বিবেচনা করতে পারেন
import numpy as np
import matplotlib.pyplot as plt
mean = 0; std = 1; variance = np.square(std)
x = np.arange(-5,5,.01)
f = np.exp(-np.square(x-mean)/2*variance)/(np.sqrt(2*np.pi*variance))
plt.plot(x,f)
plt.ylabel('gaussian distribution')
plt.show()
আমি ঠিক এখানে ফিরে এসেছি এবং matplotlib হিসাবে আমাকে স্কিপি ইনস্টল করতে হয়েছিল m MatplotlibDeprecationWarning: scipy.stats.norm.pdf
উপরের উদাহরণের চেষ্টা করার সময় এম্ল্যাব আমাকে ত্রুটি বার্তাটি দিয়েছিল । সুতরাং এখন নমুনাটি:
%matplotlib inline
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, scipy.stats.norm.pdf(x, mu, sigma))
plt.show()
আমি বিশ্বাস করি যে উচ্চতা নির্ধারণ করা গুরুত্বপূর্ণ, তাই এই ফাংশনটি তৈরি করেছেন:
def my_gauss(x, sigma=1, h=1, mid=0):
from math import exp, pow
variance = pow(sdev, 2)
return h * exp(-pow(x-mid, 2)/(2*variance))
sigma
মানক বিচ্যুতি কোথায় , h
উচ্চতা এবং mid
গড় mean
বিভিন্ন উচ্চতা এবং বিচ্যুতি ব্যবহার করে এখানে ফলাফল:
আপনি সহজেই সিডিএফ পেতে পারেন। সিডিএফ এর মাধ্যমে পিডিএফ
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()
%matplotlib inline
প্লটটি দেখানোর জন্য