मेरे पास एक बिंदु-वार परिभाषित कार्य है। यह एक जमा स्थिति से उत्पन्न होता है जहां आप हर महीने 1k USD 5% ब्याज के साथ जमा करते हैं जिसे आप Numpy के साथ प्लॉट करते हैं। सीमांत ब्याज की गणना करने के कई तरीके हैं, जैसे कि परिमित अंतर, स्वचालित संजात, प्रतीकात्मक अंतर और हाथ से (कुछ पहलुओं को यहां पर कवर किया गया है। a> लेकिन बंद रूप में):

0. 0-10    months: 10USD
1. 10-20   months: 50USD
2. 20-30   months: 100USD
3. 30-40kk months: 130USD
4. 40-50kk months: 200USD
5. 50-60kk months: 260USD

और पायथन में सीमांत भेदभाव के बिना कोड:

import numpy as np
import matplotlib.pyplot as plt

def situationNmonth(n): 
    #Returns situation after Nth month. 
    return np.sum([1000*np.exp(0.05*n/12) for n in range(n)])

def myHistory(test):
    return [situationNmonth(n) for n in range(60)]

def interests(n):
    #Returns interest given a month n.
    return situationNmonth(n)-n*1000

def plotInterests(test): 
    plt.plot([x for x in range(60)], [interests(n) for n in range(60)])
    plt.title("5% interests over 60 months with 1k USD per month.")
    plt.show()

enter image description here

प्रत्येक मासिक ब्याज को देखने के लिए, बिंदुवार परिभाषित फ़ंक्शन, plotInterests फ़ंक्शन में अंतर करने का सबसे आसान तरीका क्या है? पायथन में परिमित अंतर, स्वचालित डेरिवेटिव और प्रतीकात्मक विभेदन की स्थिति क्या है और क्या उन्हें यहां पायथन 3 के साथ मजबूती से परिकलित किया जा सकता है?

1
hhh 15 जुलाई 2018, 23:47

2 जवाब

आप अपने असतत डेटा बिंदुओं को प्रक्षेपित कर सकते हैं, और परिणामी इंटरपोलेंट को अलग कर सकते हैं।

0
ev-br 15 जुलाई 2018, 23:50
मैं स्पष्ट रूप से एक इंटरपोलेंट निर्दिष्ट किए बिना एंड-टू-एंड समाधान की तलाश में हूं, मुझे यह मिला लेकिन अभी तक सुनिश्चित नहीं है कि उन्होंने कुछ डेमो किया है या नहीं।
 – 
hhh
15 जुलाई 2018, 23:59

पैरामीट्रिक समाधान

पैरामीट्रिक समाधान में Numpy का ग्रेडिएंट फ़ंक्शन होता है:

किसी N-आयामी सरणी का ग्रेडिएंट लौटाएं।

ग्रेडिएंट की गणना दूसरे क्रम के सटीक केंद्रीय का उपयोग करके की जाती है आंतरिक बिंदुओं में अंतर और या तो पहले या दूसरे क्रम में सटीक एकतरफा (आगे या पीछे) अंतर सीमाएं इसलिए लौटाई गई ढाल का आकार के समान है इनपुट सरणी। (docs)

जहां हम अंतरों पर स्पष्ट रूप से आंतरिक बिंदुओं पर ध्यान केंद्रित करते हैं। उदाहरण के लिए, आप numpy के ग्रेडिएंट फ़ंक्शन का उपयोग करके सीधे इसकी गणना कर सकते हैं:

>>> data=[x for x in range(60)], [interests(n) for n in range(60)]

>>> np.gradient(data[1])
array([   0.        ,    2.08767965,    6.27175575,   10.47330187,
         14.69239096,   18.92909627,   23.18349133,   27.45565003,
         31.74564653,   36.0535553 ,   40.37945114,   44.72340914,
         49.08550474,   53.46581365,   57.86441192,   62.28137592,
         66.71678233,   71.17070816,   75.64323073,   80.13442769,
         84.64437701,   89.17315698,   93.72084624,   98.28752374,
        102.87326876,  107.47816091,  112.10228014,  116.74570672,
        121.40852129,  126.09080477,  130.79263848,  135.51410403,
        140.25528339,  145.01625888,  149.79711316,  154.59792922,
        159.41879041,  164.25978043,  169.12098332,  174.00248348,
        178.90436566,  183.82671495,  188.76961683,  193.73315709,
        198.71742192,  203.72249785,  208.74847176,  213.79543092,
        218.86346295,  223.95265584,  229.06309793,  234.19487796,
        239.34808501,  244.52280855,  249.71913842,  254.93716484,
        260.17697839,  265.43867004,  270.72233115,  273.36966551])

जहां आप मासिक अतिरिक्त ब्याज देख सकते हैं। आप np.gradient(data[1], 2) यहां आपको दूसरा अवकलज दे सकते हैं।

enter image description here

अधिक गैर-पैरामीट्रिक समाधान और संपूर्ण दृष्टिकोण

अधिक गैर-पैरामीट्रिक समाधानों में बायेसियन दृष्टिकोण शामिल हैं: मूल डेटा बिंदु अनिश्चितता के साथ पूर्व बिंदु हैं और परिणाम पश्च मान है।

  1. https://github.com/HIPS/autograd

  2. ftp://ftp.tuebingen.mpg. de/pub/kyb/antonio/pub/ebio/chrisd/GPtutorial.pdf

  3. http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gpr_noisy_targets. एचटीएमएल

  4. मशीन लर्निंग के लिए गाऊसी प्रक्रियाएं

मैं इस खंड को खुला छोड़ देता हूं, शायद पाइथन में उन्हें समझाने के लिए कोई विशेषज्ञ है। और अंकों के साथ अंतर की गणना करने के लिए किस तरह के समाधान मौजूद हैं।

1
hhh 16 जुलाई 2018, 00:38