ML - การทำความเข้าใจข้อมูลด้วยการแสดงภาพ

บทนำ

ในบทที่แล้วเราได้กล่าวถึงความสำคัญของข้อมูลสำหรับอัลกอริทึมการเรียนรู้ของเครื่องพร้อมกับสูตรอาหาร Python บางอย่างเพื่อทำความเข้าใจข้อมูลด้วยสถิติ มีอีกวิธีหนึ่งที่เรียกว่าการแสดงภาพเพื่อทำความเข้าใจข้อมูล

ด้วยความช่วยเหลือของการแสดงภาพข้อมูลเราสามารถดูได้ว่าข้อมูลมีลักษณะเป็นอย่างไรและมีความสัมพันธ์แบบใดโดยแอตทริบิวต์ของข้อมูล เป็นวิธีที่เร็วที่สุดในการดูว่าคุณสมบัติตรงกับเอาต์พุตหรือไม่ ด้วยความช่วยเหลือของการทำตามสูตร Python เราสามารถเข้าใจข้อมูล ML พร้อมสถิติ

พล็อต Univariate: ทำความเข้าใจแอตทริบิวต์อย่างอิสระ

การแสดงภาพประเภทที่ง่ายที่สุดคือการแสดงภาพแบบตัวแปรเดียวหรือแบบ "ไม่แปรผัน" ด้วยความช่วยเหลือของการแสดงภาพที่ไม่แปรผันเราสามารถเข้าใจแต่ละแอตทริบิวต์ของชุดข้อมูลของเราได้อย่างอิสระ ต่อไปนี้เป็นเทคนิคบางอย่างใน Python เพื่อใช้การแสดงภาพแบบไม่แปรผัน -

ฮิสโตแกรม

ฮิสโตแกรมจัดกลุ่มข้อมูลในถังขยะและเป็นวิธีที่เร็วที่สุดในการรับแนวคิดเกี่ยวกับการกระจายของแต่ละแอตทริบิวต์ในชุดข้อมูล ต่อไปนี้เป็นลักษณะบางประการของฮิสโทแกรม -

  • จะให้เรานับจำนวนการสังเกตในแต่ละถังที่สร้างขึ้นเพื่อการแสดงภาพ

  • จากรูปร่างของถังขยะเราสามารถสังเกตการกระจายได้อย่างง่ายดายเช่นสภาพอากาศเป็นแบบเสียนเอียงหรือเลขชี้กำลัง

  • ฮิสโตแกรมยังช่วยให้เราเห็นค่าผิดปกติที่อาจเกิดขึ้นได้

ตัวอย่าง

โค้ดที่แสดงด้านล่างเป็นตัวอย่างของสคริปต์ Python ที่สร้างฮิสโตแกรมของแอตทริบิวต์ของชุดข้อมูล Pima Indian Diabetes ในที่นี้เราจะใช้ฟังก์ชัน hist () บน Pandas DataFrame เพื่อสร้างฮิสโตแกรมและmatplotlib สำหรับการวางแผน

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.hist()
pyplot.show()

เอาต์พุต

ผลลัพธ์ด้านบนแสดงให้เห็นว่าสร้างฮิสโตแกรมสำหรับแต่ละแอตทริบิวต์ในชุดข้อมูล จากสิ่งนี้เราสามารถสังเกตได้ว่าบางทีอายุ pedi และคุณลักษณะการทดสอบอาจมีการแจกแจงเลขชี้กำลังในขณะที่มวลและพลาสมีการแจกแจงแบบเกาส์

พล็อตความหนาแน่น

อีกเทคนิคหนึ่งที่ง่ายและรวดเร็วในการกระจายแต่ละแอตทริบิวต์คือ Density plot นอกจากนี้ยังเป็นเหมือนฮิสโตแกรม แต่มีเส้นโค้งเรียบลากผ่านด้านบนของแต่ละถัง เราสามารถเรียกสิ่งเหล่านี้ว่าฮิสโทแกรมแบบนามธรรม

ตัวอย่าง

ในตัวอย่างต่อไปนี้สคริปต์ Python จะสร้าง Density Plots สำหรับการกระจายแอตทริบิวต์ของชุดข้อมูล Pima Indian Diabetes

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)
pyplot.show()

เอาต์พุต

จากผลลัพธ์ข้างต้นสามารถเข้าใจความแตกต่างระหว่าง Density plot และ Histograms ได้อย่างง่ายดาย

พล็อต Box and Whisker

พล็อต Box และ Whisker หรือที่เรียกสั้น ๆ ว่า boxplots เป็นอีกหนึ่งเทคนิคที่มีประโยชน์ในการตรวจสอบการกระจายของการแจกแจงของแต่ละแอตทริบิวต์ ต่อไปนี้เป็นลักษณะของเทคนิคนี้ -

  • มีลักษณะไม่แปรผันและสรุปการแจกแจงของแต่ละแอตทริบิวต์

  • มันลากเส้นสำหรับค่ากลางเช่นค่ามัธยฐาน

  • มันวาดกรอบประมาณ 25% และ 75%

  • นอกจากนี้ยังดึงหนวดซึ่งจะทำให้เรามีความคิดเกี่ยวกับการแพร่กระจายของข้อมูล

  • จุดที่อยู่นอกหนวดหมายถึงค่าที่ผิดปกติ ค่าผิดปกติจะมากกว่าขนาดของการแพร่กระจายข้อมูลกลางถึง 1.5 เท่า

ตัวอย่าง

ในตัวอย่างต่อไปนี้สคริปต์ Python จะสร้าง Density Plots สำหรับการกระจายแอตทริบิวต์ของชุดข้อมูล Pima Indian Diabetes

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False,sharey=False)
pyplot.show()

เอาต์พุต

จากพล็อตการแจกแจงของแอตทริบิวต์ข้างต้นสามารถสังเกตได้ว่าอายุการทดสอบและผิวหนังดูเอียงไปทางค่าที่น้อยกว่า

พล็อตหลายตัวแปร: ปฏิสัมพันธ์ระหว่างตัวแปรหลายตัวแปร

การแสดงภาพอีกประเภทหนึ่งคือการแสดงภาพหลายตัวแปรหรือ "หลายตัวแปร" ด้วยความช่วยเหลือของการแสดงภาพหลายตัวแปรเราสามารถเข้าใจการโต้ตอบระหว่างแอตทริบิวต์หลายรายการของชุดข้อมูลของเรา ต่อไปนี้เป็นเทคนิคบางอย่างใน Python เพื่อใช้การแสดงภาพหลายตัวแปร -

พล็อตเมทริกซ์สหสัมพันธ์

สหสัมพันธ์เป็นข้อบ่งชี้เกี่ยวกับการเปลี่ยนแปลงระหว่างสองตัวแปร ในบทก่อนหน้านี้เราได้กล่าวถึงสัมประสิทธิ์สหสัมพันธ์ของเพียร์สันและความสำคัญของสหสัมพันธ์ด้วย เราสามารถพล็อตเมทริกซ์สหสัมพันธ์เพื่อแสดงว่าตัวแปรใดมีความสัมพันธ์สูงหรือต่ำเมื่อเทียบกับตัวแปรอื่น

ตัวอย่าง

ในตัวอย่างต่อไปนี้สคริปต์ Python จะสร้างและพล็อตเมทริกซ์สหสัมพันธ์สำหรับชุดข้อมูล Pima Indian Diabetes สามารถสร้างได้ด้วยความช่วยเหลือของฟังก์ชัน corr () บน Pandas DataFrame และลงจุดด้วยความช่วยเหลือของ pyplot

from matplotlib import pyplot
from pandas import read_csv
import numpy
Path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(Path, names=names)
correlations = data.corr()
fig = pyplot.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = numpy.arange(0,9,1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
pyplot.show()

เอาต์พุต

จากผลลัพธ์ด้านบนของเมทริกซ์สหสัมพันธ์เราจะเห็นว่ามันสมมาตรคือด้านล่างซ้ายจะเหมือนกับด้านขวาบน นอกจากนี้ยังสังเกตว่าตัวแปรแต่ละตัวมีความสัมพันธ์กันในเชิงบวก

พล็อต Scatter Matrix

แผนภูมิกระจายแสดงให้เห็นว่าตัวแปรหนึ่งได้รับผลกระทบจากอีกตัวแปรหนึ่งมากเพียงใดหรือความสัมพันธ์ระหว่างพวกเขาด้วยความช่วยเหลือของจุดในสองมิติ แผนภาพการกระจายเป็นเหมือนกราฟเส้นในแนวคิดที่ใช้แกนแนวนอนและแนวตั้งเพื่อลงจุดข้อมูล

ตัวอย่าง

ในตัวอย่างต่อไปนี้สคริปต์ Python จะสร้างและลงจุด Scatter matrix สำหรับชุดข้อมูล Pima Indian Diabetes สามารถสร้างได้ด้วยความช่วยเหลือของฟังก์ชัน scatter_matrix () บน Pandas DataFrame และลงจุดด้วยความช่วยเหลือของ pyplot

from matplotlib import pyplot
from pandas import read_csv
from pandas.tools.plotting import scatter_matrix
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
scatter_matrix(data)
pyplot.show()

เอาต์พุต