পার্সপিট্রনের জন্য সিদ্ধান্তের সীমানা প্লট


11

আমি একটি পার্সেপেট্রন অ্যালগরিদমের সিদ্ধান্তের সীমানাকে চক্রান্ত করার চেষ্টা করছি এবং কয়েকটি বিষয় সম্পর্কে আমি সত্যিই বিভ্রান্ত। আমার ইনপুট উদাহরণগুলি আকারে রয়েছে , মূলত একটি 2D ইনপুট উদাহরণ ( x 1 এবং x 2 ) এবং বাইনারি শ্রেণীর লক্ষ্য মান ( y ) [1 বা 0]।[(x1,x2),y]x1x2y

আমার ওজন ভেক্টর তাই ফর্মটিতে: [w1,w2]

এখন আমাকে অতিরিক্ত বায়াস প্যারামিটার অন্তর্ভুক্ত করতে হবে এবং তাই আমার ওজন ভেক্টর 3 × 1 ভেক্টর হয়ে যায় ? এটি 1 × 3 ভেক্টর? আমি মনে করি এটি 1 × 3 হওয়া উচিত কারণ কোনও ভেক্টরটির কেবল 1 টি সারি এবং এন কলাম রয়েছে।w03×11×31×3

এখন আসুন আমি এলোমেলো মানগুলিতে ইনস্ট্যান্ট করি , আমি কীভাবে এইটির জন্য সিদ্ধান্তের সীমাটি প্লট করব? মানে ডাব্লু 0 এখানে কী বোঝায়? Is W 0 / এন মি ( W ) মূল থেকে সিদ্ধান্ত অঞ্চলের দূরত্ব? যদি তা হয় তবে আমি কীভাবে এটি ক্যাপচার করব এবং ম্যাটপ্ল্লোলিব.পায়প্লট বা এর মতলব সমতুল্য ব্যবহার করে পাইথনে প্লট করব?[w0,w1,w2]w0w0/norm(w)

আমি এই বিষয়ে সামান্য সাহায্য সত্যিই প্রশংসা করব।

উত্তর:


17

পার্সসেপট্রন যেভাবে প্রতিটি পুনরাবৃত্তির আউটপুট পূর্বাভাস দেয় তা সমীকরণ অনুসরণ করে:

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

ww01

n×11×nn×1

মনে রাখবেন, প্রশিক্ষণ সেটে আপনার প্রতিটি ইনপুট জন্য এটি করা হয়েছে। এর পরে, পূর্বাভাস দেওয়া আউটপুট এবং আসল আউটপুটটির মধ্যে ত্রুটিটি সংশোধন করতে ওজন ভেক্টর আপডেট করুন।

সিদ্ধান্তের সীমানা হিসাবে, আমি এখানে পাওয়া সাইকিট শিখার কোডটির একটি সংশোধন :

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')

যা নিম্নলিখিত প্লট উত্পাদন করে:

এখানে চিত্র বর্ণনা লিখুন

মূলত, ধারণাটি হ'ল জালের প্রতিটি পয়েন্টের জন্য একটি মানের পূর্বাভাস দেওয়া এবং এটি প্রতিটি বর্ণকে উপযুক্ত রঙ দিয়ে প্লট করে contourf


0

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')

সাধারণ পারসেপট্রন দুটি পৃথক শ্রেণিকে শ্রেণিবদ্ধ করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.