ML-시각화를 통한 데이터 이해

소개

이전 장에서 통계로 데이터를 이해하기위한 일부 Python 레시피와 함께 기계 학습 알고리즘에 대한 데이터의 중요성에 대해 논의했습니다. 데이터를 이해하는 시각화라는 또 다른 방법이 있습니다.

데이터 시각화를 통해 데이터가 어떻게 생겼는지, 데이터 속성이 어떤 종류의 상관 관계를 유지하는지 확인할 수 있습니다. 기능이 출력과 일치하는지 확인하는 가장 빠른 방법입니다. 다음 Python 레시피를 통해 통계로 ML 데이터를 이해할 수 있습니다.

일 변량 도표 : 독립적 인 속성 이해

가장 간단한 시각화 유형은 단일 변수 또는 "일 변량"시각화입니다. 일 변량 시각화를 통해 데이터 세트의 각 속성을 독립적으로 이해할 수 있습니다. 다음은 일 변량 시각화를 구현하는 Python의 몇 가지 기술입니다.

히스토그램

히스토그램은 데이터를 빈으로 그룹화하며 데이터 세트의 각 속성 분포에 대한 아이디어를 얻는 가장 빠른 방법입니다. 다음은 히스토그램의 특성 중 일부입니다-

  • 시각화를 위해 생성 된 각 빈의 관측치 수를 제공합니다.

  • 빈의 모양에서 우리는 쉽게 분포를 관찰 할 수 있습니다. 즉 날씨가 가우시안, 치우침 또는 지수 적입니다.

  • 히스토그램은 또한 가능한 이상 값을 확인하는 데 도움이됩니다.

아래에 표시된 코드는 Pima Indian Diabetes 데이터 세트의 속성 히스토그램을 생성하는 Python 스크립트의 예입니다. 여기에서는 Pandas DataFrame에서 hist () 함수를 사용하여 히스토그램을 생성하고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 및 테스트 속성이 지수 분포를 가질 수있는 반면 질량 및 plas는 가우스 분포를 가질 수 있음을 관찰 할 수 있습니다.

밀도 플롯

각 속성 분포를 얻는 또 다른 빠르고 쉬운 기술은 밀도 플롯입니다. 히스토그램과 비슷하지만 각 빈의 상단을 통해 그려진 부드러운 곡선이 있습니다. 추상화 된 히스토그램이라고 부를 수 있습니다.

다음 예에서 Python 스크립트는 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()

산출

위의 출력에서 ​​밀도 플롯과 히스토그램의 차이를 쉽게 이해할 수 있습니다.

상자 및 수염 플롯

간단히 상자 그림이라고도하는 상자 및 수염 그림은 각 속성의 분포를 검토하는 또 다른 유용한 기술입니다. 다음은이 기술의 특성입니다-

  • 본질적으로 일 변량이며 각 속성의 분포를 요약합니다.

  • 중간 값, 즉 중앙값에 대한 선을 그립니다.

  • 25 %와 75 % 주위에 상자를 그립니다.

  • 또한 데이터 확산에 대한 아이디어를 제공하는 수염을 그립니다.

  • 수염 외부의 점은 이상 값을 나타냅니다. 특이 치 값은 중간 데이터의 산포 크기보다 1.5 배 더 큽니다.

다음 예에서 Python 스크립트는 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 데이터 세트에 대한 상관 행렬을 생성하고 플로팅합니다. Pandas DataFrame의 corr () 함수를 사용하여 생성하고 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()

산출

위의 상관 행렬 출력에서 ​​대칭적임을 알 수 있습니다. 즉, 왼쪽 하단이 오른쪽 상단과 동일합니다. 또한 각 변수가 서로 양의 상관 관계가 있음이 관찰됩니다.

산점 행렬 플롯

산점도는 2 차원의 점을 사용하여 한 변수가 다른 변수 또는 변수 간의 관계에 영향을받는 정도를 보여줍니다. 산점도는 수평 및 수직 축을 사용하여 데이터 포인트를 표시한다는 개념에서 선 그래프와 매우 유사합니다.

다음 예에서 Python 스크립트는 Pima Indian Diabetes 데이터 세트에 대한 산포 행렬을 생성하고 플로팅합니다. Pandas DataFrame의 scatter_matrix () 함수를 사용하여 생성하고 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()

산출