Bir algılayıcı için karar sınırı grafiği


11

Bir algılayıcı algoritmasının karar sınırını çizmeye çalışıyorum ve birkaç şey hakkında gerçekten kafam karıştı. Giriş örneklerim , temelde bir 2D giriş örneği ( ve ) ve bir ikili sınıf hedef değeri ( ) [1 biçimindedir. veya 0].[(x1,x2),y]x1x2y

Ağırlık vektörüm şu şekildedir: .[w1,w2]

Şimdi ek bir bias parametresi ve dolayısıyla ağırlık vektörüm vektörü haline mi geliyor? öyle vektör? Bence bir vektörün sadece 1 satır ve n sütunu olduğu için olmalıdır .w03×11×31×3

Şimdi diyelim ki rastgele değerlere , bunun için karar sınırını nasıl ? Anlamı burada ne anlama ? Mi kökenli karar bölgesinin uzaklığı? Öyleyse bunu nasıl yakalayabilir ve matplotlib.pyplot veya Matlab eşdeğerini kullanarak Python'da nasıl çizebilirim?[w0,w1,w2]w0w0/norm(w)

Bu konuyla ilgili küçük bir yardımı bile takdir ediyorum.

Yanıtlar:


17

Algılayıcının her bir yinelemede çıktıyı öngörme şekli şu denklemi takip etmektir:

yj=f[wTx]=f[wx]=f[w0+w1x1+w2x2+...+wnxn]

Söylediğiniz gibi, kilonuz önyargı terimini içeriyor . Bu nedenle, nokta üründeki boyutları korumak için girişe eklemeniz gerekir .ww01

Genellikle ağırlıklar için bir sütun vektörü, yani vektörü ile başlarsınız . Tanım olarak, nokta ürün, ağırlık vektörü elde etmek için bu vektörü transpoze etmenizi ve bu nokta ürününü tamamlamak için giriş vektörüne ihtiyacınız olduğunu gerektirir . Bu nedenle yukarıdaki denklemde matris notasyonu ve vektör notasyonu arasındaki değişimi vurguladı, böylece notasyonun size doğru boyutları nasıl önerdiğini görebilirsiniz.n×11×nn×1

Unutmayın, bu egzersiz setinde bulunan her bir giriş için yapılır. Bundan sonra, tahmin edilen çıktı ile gerçek çıktı arasındaki hatayı düzeltmek için ağırlık vektörünü güncelleyin.

Karar sınırına gelince, burada bulduğum scikit öğrenme kodunda bir değişiklik var :

import numpy as np
from sklearn.linear_model import Perceptron
import matplotlib.pyplot as plt

X = np.array([[2,1],[3,4],[4,2],[3,1]])
Y = np.array([0,0,1,1])
h = .02  # step size in the mesh


# we create an instance of SVM and fit our data. We do not scale our
# data since we want to plot the support vectors

clf = Perceptron(n_iter=100).fit(X, Y)

# create a mesh to plot in
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                     np.arange(y_min, y_max, h))

# Plot the decision boundary. For that, we will assign a color to each
# point in the mesh [x_min, m_max]x[y_min, y_max].
fig, ax = plt.subplots()
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

# Put the result into a color plot
Z = Z.reshape(xx.shape)
ax.contourf(xx, yy, Z, cmap=plt.cm.Paired)
ax.axis('off')

# Plot also the training points
ax.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)

ax.set_title('Perceptron')

Aşağıdaki grafiği üretir:

resim açıklamasını buraya girin

Temel olarak, fikir, her noktayı kapsayan bir kafes içindeki her nokta için bir değer tahmin etmek ve her bir tahmini kullanarak uygun bir renkle çizmektir contourf.


0

Son zamanlarda aynı şeyi uygulamaya çalışıyordum, ancak karar sınır grafiğini üç ağırlık ile nasıl çizeceğimi çok karıştı . Ve diğer çözümlere dayanarak, iki sınıfı sınıflandıran sınır çizgisi çizmek için python matplotlib kodu yazdım.w0,w1,w2

def plot_data(self,inputs,targets,weights):
    # fig config
    plt.figure(figsize=(10,6))
    plt.grid(True)

    #plot input samples(2D data points) and i have two classes. 
    #one is +1 and second one is -1, so it red color for +1 and blue color for -1
    for input,target in zip(inputs,targets):
        plt.plot(input[0],input[1],'ro' if (target == 1.0) else 'bo')

    # Here i am calculating slope and intercept with given three weights
    for i in np.linspace(np.amin(inputs[:,:1]),np.amax(inputs[:,:1])):
        slope = -(weights[0]/weights[2])/(weights[0]/weights[1])  
        intercept = -weights[0]/weights[2]

        #y =mx+c, m is slope and c is intercept
        y = (slope*i) + intercept
        plt.plot(i, y,'ko')

Basit algılayıcı iki farklı sınıfı sınıflandırır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.