2015-07-08 8 views
5

मैं निम्नलिखित को समझता हूं:आप रैखिक पेसेप्ट्रॉन में वज़न वेक्टर का उपयोग करके एक रेखा कैसे आकर्षित करते हैं?

2 डी स्पेस में, प्रत्येक डेटा पॉइंट में 2 विशेषताएं हैं: x और y। 2 डी स्पेस में वज़न वेक्टर में 3 मान [पूर्वाग्रह, w0, w1] शामिल हैं जिन्हें [w0, w1, w2] के रूप में पुनः लिखा जा सकता है। प्रत्येक डेटापॉइंट को इसके बीच और वजन वेक्टर के बीच डॉट उत्पाद की गणना करने के प्रयोजनों के लिए एक कृत्रिम समन्वय [1, x, y] की आवश्यकता होती है। = W + yn * xn

मेरा प्रश्न है: डब्ल्यू

सीखने नियम प्रत्येक misclassfied बिंदु के लिए वजन वेक्टर अद्यतन करने के लिए प्रयोग किया जाता है कि कैसे आप w = वजन वेक्टर से दो अंक प्राप्त करते हैं [ए, बी , सी] निर्णय सीमा ग्राफ करने के लिए?

मैं समझता हूं कि ए + बीएक्स + सी = 0 सामान्य रूप में रैखिक समीकरण है (ए, बी, सी वजन वेक्टर से लिया जा सकता है) लेकिन मुझे नहीं पता कि इसे कैसे प्लॉट करना है।

अग्रिम धन्यवाद।

+0

इस सवाल से पहले कहा गया था, उदा http://stats.stackexchange.com/questions/71335/decision-boundary-plot-for-a-perceptron – runDOSrun

उत्तर

2

लाइन खींचने का सबसे अच्छा तरीका है अपने प्रदर्शन अक्ष पर न्यूनतम x मान और अधिकतम x मान ढूंढना। ज्ञात रेखा समीकरण (- (ए + बीएक्स)/सी) का उपयोग करके वाई मानों की गणना करें। इसके परिणामस्वरूप दो बिंदुओं में एक रेखा खींचने के लिए इनबिल्ट प्लॉट कमांड का उपयोग किया जाता है।

7

सामान्य रूप में अपने वजन के प्लग (w0 + w1x + w2y = 0) और हल एक्स, एक्स = 0, y, y = के लिए 0:

x = -(w0 - w2y)/w1 
x = 0 when y = -w0/w2 
y = -(w0 - w1x)/w2 
y = 0 when x = -w0/w1 

अब हम दो अंक कि पर झूठ है रेखा: (0, -w0/डब्ल्यू 2) और (-w0/w1, 0)

slope = -(w0/w2)/(w0/w1) 
intercept = -w0/w2 
+0

यह वास्तव में मेरे लिए काम करता है। मैं दो इनपुट और पूर्वाग्रह के लिए एक इनपुट के साथ एक साधारण perceptron डिजाइन कर रहा था, तो प्रशिक्षण के बाद मुझे 3 वजन, w0, w1, w2, और w0 मिला है पूर्वाग्रह के अलावा कुछ भी नहीं है। मैं ढलान में मानों को प्लग करता हूं, उपरोक्त सूत्र को अवरुद्ध करता हूं, और यह मेरे नमूना डेटा बिंदुओं के लिए निर्णय सीमा को अच्छी तरह से तैयार करता है। धन्यवाद। –

0

हाल ही में मैं कैसे तीन वजन के साथ निर्णय सीमा साजिश आकर्षित करने के लिए एक ही बात को लागू करने की कोशिश कर रहा था, लेकिन बहुत उलझन में $ w_0, w_1, w_2 $। और उपरोक्त वर्णित @ जोशु समाधान पर आधारित, मैंने सीमा रेखा खींचने के लिए मैटलप्लिब कोड लिखा है।

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

simple perceptron classifies two different class

संबंधित मुद्दे