2014-12-15 18 views
7

I parametreleri tarafından kontrol edilen bir sigmoid fonksiyonunu oluşturmak için ipython dizüstü aşağıdaki kodu yazdığı genişliğini tanımlar sigmoid merkezinin konumu, ve b tanımlar: aipython dizüstü etkileşimli fonksiyonu: kaydırma aralığı ayarlamak nasıl

Ben aşağıda fonksiyonunu yazdı yeniden yüzden

%matplotlib inline 
    import numpy as np 
    import matplotlib.pyplot as plt 

def sigmoid(x,a,b): 
    #sigmoid function with parameters a = center; b = width 
    s= 1/(1+np.exp(-(x-a)/b)) 
    return 100.0*(s-min(s))/(max(s)-min(s)) # normalize sigmoid to 0-100 

x = np.linspace(0,10,256) 
sigm = sigmoid(x, a=5, b=1) 
fig = plt.figure(figsize=(24,6)) 
ax1 = fig.add_subplot(2, 1, 1) 
ax1.set_xticks([]) 
ax1.set_xticks([]) 
plt.plot(x,sigm,lw=2,color='black') 
plt.xlim(x.min(), x.max()) 
Ben parametreler a ve b için etkileşim eklemek istedim:

%matplotlib inline 
import numpy as np 
import matplotlib.pyplot as plt 
from IPython.html.widgets import interactive 
from IPython.display import display 

def sigmoid_demo(a=5,b=1): 
    x = np.linspace(0,10,256) 
    s = 1/(1+np.exp(-(x-a)/(b+0.1))) # +0.1 to avoid dividing by 0 
    sn = 100.0*(s-min(s))/(max(s)-min(s)) # normalize sigmoid to 0-100 
    fig = plt.figure(figsize=(24,6)) 
    ax1 = fig.add_subplot(2, 1, 1) 
    ax1.set_xticks([]) 
    ax1.set_yticks([]) 
    plt.plot(x,sn,lw=2,color='black') 
    plt.xlim(x.min(), x.max()) 

w=widgets.interactive(sigmoid_demo,a=5,b=1) 
display(w) 

se sürgü aralığı (simetrik olması için herhangi bir yolu var mı sıfır etrafında örneğin)? Parametreler için başlangıç ​​değerini ayarlayarak bana mümkün görünmüyor.

cevap

5

el widget'ı oluşturup interactive fonksiyonundaki değişkenlerin bunları bağlayabilir. Bu sayede çok daha esnektir ve bu widget'ları ihtiyaçlarınıza göre düzenleyebilirsiniz.

Bu örnek, iki farklı sürgü oluşturur ve maksimum, en az, stepSize ve başlangıç ​​değeri belirler ve interactive fonksiyonu kullanır.

a_slider = widgets.IntSliderWidget(min=-5, max=5, step=1, value=0) 
b_slider = widgets.FloatSliderWidget(min=-5, max=5, step=0.3, value=0) 
w=widgets.interactive(sigmoid_demo,a=a_slider,b=b_slider) 
display(w) 
+0

teşekkürler. Muhtemelen ikinci bölümü ayrı bir soru yapmalıyım, bu yüzden aralığınızı cevap olarak seçebiliyorum. – MyCarta

+0

@MyCarta, benim düzenleme bakınız - bu yardımı yapar? – cel

+0

Ne için lookign am parametreler a değerlerini tekrar yazıp onlar kaydırıcılar tarafından modifeid gibi dinamik b için bir yoldur. Şimdi düşünmek istediğim ayrı bir soru. – MyCarta

İlgili konular