บทช่วยสอนงูหลาม

Python HOME แนะนำ Python Python เริ่มต้น ไวยากรณ์หลาม ความคิดเห็นหลาม ตัวแปรหลาม ประเภทข้อมูลหลาม ตัวเลขหลาม Python Casting Python Strings Python Booleans ตัวดำเนินการ Python รายการหลาม Python Tuples ชุดหลาม พจนานุกรม Python Python If...Else Python ในขณะที่ลูป Python สำหรับลูป ฟังก์ชั่นหลาม Python Lambda Python Arrays Python คลาส/วัตถุ มรดกหลาม Python Iterators ขอบเขตหลาม โมดูล Python วันที่หลาม คณิตศาสตร์หลาม Python JSON Python RegEx Python PIP Python ลอง...ยกเว้น อินพุตผู้ใช้ Python การจัดรูปแบบสตริงหลาม

การจัดการไฟล์

การจัดการไฟล์ Python Python อ่านไฟล์ Python เขียน/สร้างไฟล์ Python ลบไฟล์

โมดูล Python

กวดวิชา NumPy เกมส์หมีแพนด้า กวดวิชา Scipy

Python Matplotlib

บทนำ Matplotlib Matplotlib เริ่มต้น Matplotlib Pyplot Matplotlib พล็อต เครื่องหมาย Matplotlib Matplotlib Line ป้ายกำกับ Matplotlib Matplotlib Grid แผนย่อย Matplotlib Matplotlib Scatter Matplotlib บาร์ Matplotlib Histograms Matplotlib แผนภูมิวงกลม

การเรียนรู้ของเครื่อง

เริ่มต้น โหมดค่ามัธยฐาน ส่วนเบี่ยงเบนมาตรฐาน เปอร์เซ็นไทล์ การกระจายข้อมูล การกระจายข้อมูลปกติ พล็อตกระจาย การถดถอยเชิงเส้น การถดถอยพหุนาม การถดถอยพหุคูณ มาตราส่วน รถไฟ/ทดสอบ ต้นไม้การตัดสินใจ

Python MySQL

MySQL เริ่มต้น MySQL สร้างฐานข้อมูล MySQL สร้างตาราง MySQL Insert MySQL Select MySQL Where MySQL สั่งซื้อโดย MySQL Delete MySQL Drop Table MySQL Update MySQL Limit MySQL เข้าร่วม

Python MongoDB

MongoDB เริ่มต้น MongoDB สร้างฐานข้อมูล MongoDB สร้างคอลเล็กชัน MongoDB แทรก MongoDB ค้นหา แบบสอบถาม MongoDB MongoDB Sort MongoDB ลบ MongoDB Drop Collection อัพเดท MongoDB MongoDB Limit

การอ้างอิงหลาม

ภาพรวมของ Python ฟังก์ชันในตัวของ Python Python String Methods Python List Methods วิธีพจนานุกรม Python วิธี Python Tuple Python Set Methods วิธีไฟล์ Python คีย์เวิร์ด Python ข้อยกเว้นของ Python คำศัพท์หลาม

การอ้างอิงโมดูล

โมดูลสุ่ม โมดูลคำขอ โมดูลสถิติ โมดูลคณิตศาสตร์ โมดูล cMath

Python ฮาวทู

ลบรายการที่ซ้ำกัน ย้อนกลับสตริง เพิ่มสองตัวเลข

ตัวอย่าง Python

ตัวอย่าง Python Python Compiler แบบฝึกหัดหลาม แบบทดสอบ Python ใบรับรอง Python

การเรียนรู้ของเครื่อง - รถไฟ/การทดสอบ


ประเมินแบบจำลองของคุณ

ในการเรียนรู้ของเครื่อง เราสร้างแบบจำลองเพื่อคาดการณ์ผลลัพธ์ของเหตุการณ์บางอย่าง เช่นในบทก่อนหน้าที่เราคาดการณ์การปล่อย CO2 ของรถยนต์เมื่อเราทราบน้ำหนักและขนาดเครื่องยนต์

ในการวัดว่าโมเดลนั้นดีพอหรือไม่ เราสามารถใช้วิธีที่เรียกว่า Train/Test


Train/Test คืออะไร

Train/Test คือวิธีการวัดความแม่นยำของแบบจำลองของคุณ

เรียกว่า Train/Test เนื่องจากคุณแบ่งชุดข้อมูลออกเป็นสองชุด: ชุดการฝึกและชุดทดสอบ

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

ผลลัพธ์:

ชุดทดสอบยังดูเหมือนชุดข้อมูลดั้งเดิม:


พอดีกับชุดข้อมูล

ชุดข้อมูลมีลักษณะอย่างไร ในความคิดของฉัน ฉันคิดว่าแบบที่เหมาะสมที่สุดคือการถดถอยพหุนามให้เราวาดเส้นของการถดถอยพหุนาม

ในการลากเส้นผ่านจุดข้อมูล เราใช้ plot()เมธอดของโมดูล matplotlib:

ตัวอย่าง

ลากเส้นถดถอยพหุนามผ่านจุดข้อมูล:

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 เป็นตัวบ่งชี้ที่ดีว่าชุดข้อมูลของฉันเหมาะสมกับโมเดลได้ดีเพียงใด


R2

จำ R2 หรือที่เรียกว่า R-squared ได้ไหม

มันวัดความสัมพันธ์ระหว่างแกน x กับแกน y และค่าอยู่ในช่วงตั้งแต่ 0 ถึง 1 โดยที่ 0 หมายถึงไม่มีความสัมพันธ์ และ 1 หมายถึงเกี่ยวข้องกันโดยสิ้นเชิง

โมดูล sklearn มีวิธีการที่เรียกr2_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 ดอลลาร์ ซึ่งดูเหมือนว่าจะสอดคล้องกับแผนภาพ: