আমার কাছে বইটি নেই তাই আমি নিশ্চিত নই যে ক্রুশকে কী ধূমপান করার পদ্ধতিটি ব্যবহার করা হচ্ছে তা নিশ্চিত, তবে অন্তর্দৃষ্টি জন্য 0.1 থেকে 1.0 এর বিভিন্ন ব্যান্ডউইদথ ব্যবহার করে গাউসীয় কার্নেল ঘনত্বের অনুমানের পাশাপাশি মানক থেকে 100 টি নমুনার এই প্লটটি বিবেচনা করুন । (সংক্ষেপে, গাউসিয়ান কেডিআই হ'ল ধীরে ধীরে হিস্টোগ্রাম: পর্যবেক্ষণকৃত মান অনুসারে প্রতিটি ডাটা পয়েন্টের জন্য গাউসিয়ান যুক্ত করে তারা ঘনত্বের অনুমান করে))
আপনি দেখতে পাচ্ছেন যে একবার ধূমপানের পরেও একটি অবিমোচনীয় বিতরণ তৈরি হয়, মোডটি সাধারণত 0 এর জ্ঞাত মানের নীচে থাকে।
আরও, এখানে একই নমুনা ব্যবহার করে ঘনত্ব অনুমান করার জন্য কার্নেল ব্যান্ডউইথ দ্বারা অনুমান করা মোডের (y-axis) প্লট রয়েছে। আশা করি মসৃণ পরামিতিগুলির সাথে অনুমান কীভাবে পরিবর্তিত হয় সে সম্পর্কে এটি কিছু অন্তর্দৃষ্টি দেয় nds
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 1 09:35:51 2017
@author: seaneaster
"""
import numpy as np
from matplotlib import pylab as plt
from sklearn.neighbors import KernelDensity
REAL_MODE = 0
np.random.seed(123)
def estimate_mode(X, bandwidth = 0.75):
kde = KernelDensity(kernel = 'gaussian', bandwidth = bandwidth).fit(X)
u = np.linspace(-3,3,num=1000)[:, np.newaxis]
log_density = kde.score_samples(u)
return u[np.argmax(log_density)]
X = np.random.normal(REAL_MODE, size = 100)[:, np.newaxis] # keeping to standard normal
bandwidths = np.linspace(0.1, 1., num = 8)
plt.figure(0)
plt.hist(X, bins = 100, normed = True, alpha = 0.25)
for bandwidth in bandwidths:
kde = KernelDensity(kernel = 'gaussian', bandwidth = bandwidth).fit(X)
u = np.linspace(-3,3,num=1000)[:, np.newaxis]
log_density = kde.score_samples(u)
plt.plot(u, np.exp(log_density))
bandwidths = np.linspace(0.1, 3., num = 100)
modes = [estimate_mode(X, bandwidth) for bandwidth in bandwidths]
plt.figure(1)
plt.plot(bandwidths, np.array(modes))