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 ซึ่งมีรูปแบบการใช้งานที่แตกต่างกันไปตามไลบรารีแต่ละตัว โดยรูปแบบทั่วไปจะประกอบไปด้วยขั้นตอนดังนี้

  1. นำเข้าไลบรารีที่ต้องการใช้งาน เช่น Matplotlib

import matplotlib.pyplot as plt

 

  1. กำหนดข้อมูลที่จะนำมาสร้าง Scatter Plot และแยกข้อมูลตามตัวแปร x และ y

x_data = [1, 2, 3, 4, 5]
y_data = [2, 4, 6, 8, 10]

  1. สร้าง Scatter Plot ด้วยฟังก์ชัน scatter() โดยกำหนดข้อมูล x และ y และรูปแบบการวาดเส้นระหว่างจุด ตัวอย่างเช่นวาดจุดสีน้ำเงินและไม่มีเส้นระหว่างจุด

plt.scatter(x_data, y_data, color='blue', linestyle='None')

  1. กำหนดชื่อแกน x และ y และชื่อกราฟ

plt.xlabel('x-axis label')
plt.ylabel('y-axis label')
plt.title('Title of the Plot')

  1. แสดงผลกราฟ

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) ดังรูป