मशीन शिक्षा - प्रशिक्षण/टेस्ट

मॉडल का मूल्यांकन

मशीन शिक्षा में, हम कुछ घटनाओं के परिणाम को भविष्यवाणी करने के लिए मॉडलों को बनाते हैं, जैसे पिछले अध्याय में हमने वजन और इंजन के आकार को समझने के बाद कार के कार्बन डायऑक्साइड उत्सर्जन को भविष्यवाणी किया।

मॉडल को पर्याप्त अच्छा होने का माप करने के लिए, हम एक नामक 'प्रशिक्षण/परीक्षण' तरीका उपयोग कर सकते हैं।

प्रशिक्षण/परीक्षण क्या है

प्रशिक्षण/परीक्षण मॉडल की सटीकता को मापने का एक तरीका है।

इसे प्रशिक्षण/परीक्षण कहा जाता है क्योंकि हम डाटासेट को दो समूहों में बांट देते हैं: प्रशिक्षण सेट और परीक्षण सेट।

80% प्रशिक्षण के लिए और 20% परीक्षण के लिए उपयोग किया जाता है।

आप मॉडल को प्रशिक्षित करने के लिए प्रशिक्षण सेट का उपयोग कर सकते हैं।

आप मॉडल को परीक्षण करने के लिए परीक्षण सेट का उपयोग कर सकते हैं।

मॉडल को प्रशिक्षित करना मॉडल को बनाना के रूप में है।

मॉडल का परीक्षण करना मॉडल की सटीकता का परीक्षण करना के रूप में है।

डाटासेट से शुरू करें

परीक्षण करने वाले डाटासेट से शुरू करें।

हमारा डाटासेट दुकान के 100 ग्राहकों और उनके खरीदारी अभ्यास को दिखाता है।

उदाहरण

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
plt.scatter(x, y)
plt.show()

परिणाम:

x अक्ष खरीद से पहले के मिनट को दर्शाता है।

y अक्ष खरीद पर खर्च करने वाली रकम को दर्शाता है।


उदाहरण चलाएं

प्रशिक्षण/परीक्षण विभाजन

प्रशिक्षण सेट मूल डाटा का 80% का रेंज की एक निशानी चुना जाना चाहिए।

परीक्षण सेट 20% होना चाहिए।

train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]

प्रशिक्षण सेट दिखाएं

अभी भी प्रशिक्षण सेट के साथ बिन्दुओं को दिखाएं

उदाहरण

plt.scatter(train_x, train_y)
plt.show()

परिणाम:

यह मूल डाटा सेट की तरह दिखता है, इसलिए यह एक उचित विकल्प लगता है:


उदाहरण चलाएं

परीक्षण सेट दिखाएं

यह सुनिश्चित करने के लिए कि परीक्षण सेट पूरी तरह से अलग नहीं है, हम अब परीक्षण सेट को भी देखेंगे।

उदाहरण

plt.scatter(test_x, test_y)
plt.show()

परिणाम:

परीक्षण सेट भी मूल डाटा सेट की तरह दिखता है:


उदाहरण चलाएं

डाटा सेट को फिट करें

डाटा सेट क्या है? मैं सोचता हूं कि सबसे अच्छा मेल तो पॉलिनोमियल रीग्रेशन ही होगा, इसलिए आइये एक पॉलिनोमियल रीग्रेशन रेखा बनाएं।

डाटा बिन्दुओं पर एक रेखा बनाने के लिए, हम matplotlib मॉड्यूल का उपयोग करते हैं plott() तरीका:

उदाहरण

डाटा बिन्दुओं के द्वारा पारस्परिक रीग्रेशन रेखा दूसरा करें:

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))
myline = numpy.linspace(0, 6, 100)
plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

परिणाम:


उदाहरण चलाएं

यह परिणाम हमारे डाटा सेट को पॉलिनोमियल रीग्रेशन के लिए फिट करने के लिए सुझाव का समर्थन कर सकता है, भले ही हम डाटा सेट के बाहर के वैल्यू को भविष्यवाणी करने के प्रयास में कुछ अनोखे परिणाम मिले। उदाहरण के लिए: इस पंक्ति में कहा गया है कि किसी ग्राहक ने दुकान में 6 मिनट खर्च किए और 200 के लिए खरीद कर लिया। यह अधिकतर फिट करने का संकेत है।

बदले ही R-squared स्कोर क्या है? R-squared score मेरे डाटा सेट के मॉडल के साथ कितनी मेलता है को अच्छी तरह से सूचित करता है।

R2

R2, भी कहा जाता है R square (R-squared) याद करते हैं क्या?

यह x और y अक्ष के बीच के संबंध को मापता है, जिसका मान 0 से 1 तक होता है, जहां 0 कोई संबंध नहीं होता है और 1 पूर्ण संबंध को सूचित करता है।

sklearn मॉड्यूल में एक नाम है rs_score() के तरीके, इस तरीके से हम इस संबंध को खोजने में मदद मिलेगी।

यहाँ, हम ग्राहक द्वारा दुकान में रहने के समय और उनके खर्च करने वाले रकम के बीच के संबंध को मापना चाहते हैं।

उदाहरण

हमारा प्रशिक्षण डाटा पॉलिनोमियल रीग्रेशन में कितनी मेलता है?

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))
r2 = r2_score(train_y, mymodel(train_x))
print(r2)

उदाहरण चलाएं

टिप्पणी:परिणाम 0.799 दर्शाता है कि संबंध अच्छा है।

परीक्षण सेट जोड़ें

अब, कम से कम प्रशिक्षण डाटा के लिए, हमने एक अच्छा मॉडल बनाया है।

तब, हम आबेदी डाटा का उपयोग करके मॉडल का परीक्षण करना होगा, ताकि हम पता लगाएं कि क्या समान परिणाम मिला है।

उदाहरण

हम अब टेस्ट डाटा के उपयोग से R2 स्कोर निश्चित करने के लिए चलाएं:

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))
r2 = r2_score(test_y, mymodel(test_x))
print(r2)

उदाहरण चलाएं

टिप्पणी:परिणाम 0.809 इस बात को साबित करता है कि इस मॉडल को टेस्ट सेट के लिए भी उपयुक्त है, हमें विश्वास है कि हम इस मॉडल को भविष्य के मूल्यों की भविष्यवाणी कर सकते हैं。

भविष्यवाणी मूल्य

अब हमने हमारे मॉडल को अच्छा साबित कर लिया है, अब हम नई मूल्यों की भविष्यवाणी करने के लिए शुरू कर सकते हैं。

उदाहरण

यदि खरीदार ग्राहक दुकान में 5 मिनट रहता है, तो वह कितनी पैसे खर्च करेगा?

print(mymodel(5))

उदाहरण चलाएं

इस उदाहरण में, ग्राहक ने 22.88 डॉलर खर्च किए हैं, जो की चित्र के साथ अनुरूप लगता है: