Scatter Plot กับ Machine Learning ด้วย Python
Scatter Plot เป็นกราฟที่ใช้แสดงความสัมพันธ์ของข้อมูล 2 ตัวแปร โดยจะแสดงข้อมูลในรูปแบบจุดบนแผนภูมิ โดยแกน x จะแสดงตัวแปรแรกและแกน y จะแสดงตัวแปรที่สอง จะช่วยให้ผู้ใช้งานสามารถวิเคราะห์ข้อมูลว่ามีความสัมพันธ์กันหรือไม่ โดยกราฟ Scatter Plot มักจะใช้ในการสร้างโมเดล Machine Learning และการวิเคราะห์ข้อมูลในด้านต่างๆ ตัวอย่างเช่น ใช้สำหรับแสดงความสัมพันธ์ระหว่างรายได้และอายุของบุคคล หรือความสัมพันธ์ของความสูงและน้ำหนักของสัตว์ ฯลฯ
Scatter plot เป็นเทคนิคหนึ่งในการแสดงผลข้อมูล โดยที่แต่ละจุดจะถูกวาดในแกน x และ y ตามค่าของข้อมูลที่ต้องการแสดงผล โดยที่แกน x และ y จะแทนแกนตั้งและแกนนอนของกราฟ โดยส่วนใหญ่จะใช้สีเดียวกันสำหรับจุดทั้งหมด ซึ่งช่วยให้ผู้ใช้งานสามารถรับรู้แนวโน้มและความสัมพันธ์ของข้อมูลได้ง่ายขึ้น
Scatter plot เป็นเครื่องมือที่นิยมใช้ในการวิเคราะห์ข้อมูล มีการใช้งานอย่างแพร่หลายในการวิเคราะห์ข้อมูลในสถิติ การวิเคราะห์การเชื่อมโยงของข้อมูล การพยากรณ์ และการแสดงข้อมูลในการวิเคราะห์ทางธุรกิจ
การใช้ scatter plot ช่วยให้เห็นความสัมพันธ์ระหว่างข้อมูลได้ชัดเจนมากขึ้น ตัวอย่างเช่น การวิเคราะห์ข้อมูลเกี่ยวกับความสัมพันธ์ของอายุกับรายได้ สามารถนำข้อมูลจำนวนมากของบุคคล และวาด scatter plot เพื่อดูความสัมพันธ์ระหว่างอายุและรายได้ได้ง่ายขึ้น
Scatter plot เป็นเครื่องมือที่ใช้แสดงข้อมูลแบบกระจาย (data distribution) ของข้อมูล โดยใช้จุดบนกราฟแสดงตำแหน่งของข้อมูล และให้เราสามารถวิเคราะห์ความสัมพันธ์ระหว่างตัวแปร 2 ตัวได้ ซึ่งเป็นเครื่องมือสำคัญในการวิเคราะห์ข้อมูลใน Machine Learning ดังนั้น Scatter plot จึงถูกนำมาใช้ในหลายๆ งานของ Machine Learning ตั้งแต่การสำรวจและวิเคราะห์ข้อมูล, การแบ่งกลุ่ม (clustering), การจำแนกประเภท (classification), และอื่นๆ อีกมากมาย
เมื่อนำ Machine Learning ใช้ควบคู่กันกับ Scatter plot จะช่วยให้ผู้วิเคราะห์สามารถวิเคราะห์และค้นหาความสัมพันธ์ระหว่างตัวแปรต่างๆ ในข้อมูลได้ ซึ่งจะช่วยในการสร้างและปรับแต่งโมเดล Machine Learning ได้ดียิ่งขึ้น ตัวอย่างเช่น ในงานจำแนกประเภท (classification) ผู้วิเคราะห์สามารถใช้ Scatter plot เพื่อวิเคราะห์ความสัมพันธ์ระหว่างคุณลักษณะ (feature) ของข้อมูลและคลาสของข้อมูลได้ และสามารถนำข้อมูลไปใช้ในการสร้างโมเดล Machine Learning ให้มีประสิทธิภาพสูงขึ้นได้
การสร้าง Scatter Plot ด้วย Python
สามารถทำได้โดยใช้ไลบรารีต่าง ๆ เช่น Matplotlib, Seaborn, Plotly, หรือ Bokeh ซึ่งมีรูปแบบการใช้งานที่แตกต่างกันไปตามไลบรารีแต่ละตัว โดยรูปแบบทั่วไปจะประกอบไปด้วยขั้นตอนดังนี้
-
นำเข้าไลบรารีที่ต้องการใช้งาน เช่น Matplotlib
import matplotlib.pyplot as plt
-
กำหนดข้อมูลที่จะนำมาสร้าง Scatter Plot และแยกข้อมูลตามตัวแปร x และ y
x_data = [1, 2, 3, 4, 5]
y_data = [2, 4, 6, 8, 10]
-
สร้าง Scatter Plot ด้วยฟังก์ชัน
scatter()
โดยกำหนดข้อมูล x และ y และรูปแบบการวาดเส้นระหว่างจุด ตัวอย่างเช่นวาดจุดสีน้ำเงินและไม่มีเส้นระหว่างจุด
plt.scatter(x_data, y_data, color='blue', linestyle='None')
-
กำหนดชื่อแกน x และ y และชื่อกราฟ
plt.xlabel('x-axis label')
plt.ylabel('y-axis label')
plt.title('Title of the Plot')
-
แสดงผลกราฟ
plt.show()
จากการเขียนโค้ดทั้ง 5 ขั้นตอน โดยใช้ Matplotlib เพื่อสร้าง Scatter Plot ของข้อมูล x และ y ที่กำหนดตัวอย่างให้เป็น [1, 2, 3, 4, 5] และ [2, 4, 6, 8, 10] ตามลำดับ โดยใช้จุดสีน้ำเงินและไม่มีเส้นระหว่างจุด และกำหนดชื่อแกน x และ y และชื่อกราฟว่า “Title of the Plot”
ตัวอย่าง การใช้งาน Scatter Plot ใน Machine Learning ด้วยภาษา Python
import numpy as np
import matplotlib.pyplot as plt
# สร้างข้อมูลสำหรับแสดงใน Scatter Plot
x = np.array([3,7,8,7,2,19,2,8,4,12,11,9,8])
y = np.array([89,90,97,77,121,75,111,78,97,69,88,85,86])
# แสดง Scatter Plot
plt.scatter(x, y)
plt.show()
สังเกตว่า Scatter Plot นี้แสดงให้เห็นว่าข้อมูลมีการกระจายตัวอยู่บนแกน x และแกน y อย่างไรก็ตามไม่สามารถวิเคราะห์ความสัมพันธ์ระหว่างข้อมูลได้โดยตรง ในกรณีที่ต้องการวิเคราะห์ความสัมพันธ์ระหว่างข้อมูล อาจจะต้องใช้กราฟอื่นเช่น Line Plot หรือ Heatmap แทน Scatter Plot ตามความเหมาะสมของงานวิจัยและความต้องการของผู้วิเคราะห์ข้อมูล
ตัวอย่าง การสร้าง Scatter Plot จะใช้ข้อมูล Iris dataset ซึ่งเป็นชุดข้อมูลที่พัฒนาโดย Ronald Fisher ในปี 1936 เพื่อใช้ในการจำแนกประเภทของดอกไม้ ซึ่งเป็นหนึ่งในชุดข้อมูลที่นิยมใช้ในการฝึกสอน Machine Learning
โดย Iris dataset ประกอบด้วยข้อมูลดังนี้
- ขนาดของกลีบเลี้ยง (sepal length) เป็นหน่วยเซนติเมตร
- ความกว้างของกลีบเลี้ยง (sepal width) เป็นหน่วยเซนติเมตร
- ขนาดของกลีบดอก (petal length) เป็นหน่วยเซนติเมตร
- ความกว้างของกลีบดอก (petal width) เป็นหน่วยเซนติเมตร
- ชนิดของดอกไม้ มีทั้งหมด 3 ชนิดคือ Setosa, Versicolour, และ Virginica
เราจะนำข้อมูลเพื่อสร้าง Scatter Plot เพื่อดูความสัมพันธ์ระหว่างขนาดของกลีบดอก (petal length) และความกว้างของกลีบดอก (petal width) ของแต่ละชนิดของดอกไม้
import pandas as pd
import matplotlib.pyplot as plt
# โหลดข้อมูล Iris dataset
df = pd.read_csv('https://kittimasak.com/data/iris_kittimasak.csv', header=None)
# กำหนดชื่อคอลัมน์
df.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']
# แสดง Scatter Plot ของ petal length และ petal width
plt.scatter(df['petal_length'], df['petal_width'])
plt.title('Scatter Plot of Iris Dataset')
plt.xlabel('Petal Length')
plt.ylabel('Petal Width')
plt.show()
ผลลัพธ์ที่ได้คือ Scatter Plot ของข้อมูล Iris dataset ที่แสดงความสัมพันธ์ระหว่าง petal length และ petal width
ตัวอย่าง การสร้าง Scatter Plot ข้อมูลเพชรที่แสดงความสัมพันธ์ระหว่างน้ำหนักเพชร (carat
) และราคา (price
)
เริ่มต้นโดยการ import ไลบรารี Matplotlib และ Pandas เพื่อใช้งานข้อมูลจาก CSV ไฟล์ จากนั้นเราก็สามารถใช้ Matplotlib ในการสร้าง Scatter Plot
import matplotlib.pyplot as plt
import pandas as pd
url = 'https://kittimasak.com/data/diamonds_kittimasak.csv'
diamonds = pd.read_csv(url)
plt.scatter(diamonds.carat, diamonds.price, alpha=0.5)
plt.title('Diamonds Dataset - Carat vs Price')
plt.xlabel('Carat')
plt.ylabel('Price')
plt.show()
โดยเราใช้ฟังก์ชั่น scatter()
ของ Matplotlib โดยกำหนดค่าต่าง ๆ ให้เหมาะสม เช่น กำหนดให้แกน X เป็น carat
และแกน Y เป็น price
ด้วย diamonds.carat
และ diamonds.price
ตามลำดับ นอกจากนี้ยังสามารถกำหนดตัวแปรอื่น ๆ เพิ่มเติมเช่น alpha
เพื่อกำหนดความโปร่งแสง หรือกำหนดชื่อกราฟด้วย title()
และแกน X, Y ด้วย xlabel()
และ ylabel()
ตามลำดับ
ผลลัพธ์ที่ได้คือ Scatter Plot ของข้อมูลเพชรที่แสดงความสัมพันธ์ระหว่างน้ำหนักเพชร (carat
) และราคา (price
) ดังรูป