ML 프로젝트를위한 데이터로드
ML 프로젝트를 시작하고 싶다면 가장 먼저 필요한 것이 무엇이며 가장 중요한 것은 무엇입니까? ML 프로젝트를 시작하기 위해로드해야하는 데이터입니다. 데이터와 관련하여 ML 프로젝트의 가장 일반적인 데이터 형식은 CSV (쉼표로 구분 된 값)입니다.
기본적으로 CSV는 스프레드 시트와 같은 표 형식 데이터 (숫자 및 텍스트)를 일반 텍스트로 저장하는 데 사용되는 간단한 파일 형식입니다. Python에서는 다양한 방법으로 CSV 데이터를로드 할 수 있지만 CSV 데이터를로드하기 전에 몇 가지 고려 사항을 고려해야합니다.
CSV 데이터로드시 고려 사항
CSV 데이터 형식은 ML 데이터의 가장 일반적인 형식이지만 ML 프로젝트에 동일한 형식을로드하는 동안 다음과 같은 주요 고려 사항에주의해야합니다.
파일 헤더
CSV 데이터 파일에서 헤더에는 각 필드에 대한 정보가 포함됩니다. 데이터 필드를 해석하는 방법을 지정하는 헤더 파일이기 때문에 헤더 파일과 데이터 파일에 대해 동일한 구분 기호를 사용해야합니다.
다음은 고려해야 할 CSV 파일 헤더와 관련된 두 가지 경우입니다.
Case-I: When Data file is having a file header − 데이터 파일에 파일 헤더가있는 경우 데이터의 각 열에 자동으로 이름을 할당합니다.
Case-II: When Data file is not having a file header − 데이터 파일에 파일 헤더가없는 경우 데이터의 각 열에 수동으로 이름을 할당해야합니다.
두 경우 모두, CSV 파일에 헤더가 포함되어 있는지 여부를 명시 적으로 지정해야합니다.
코멘트
모든 데이터 파일의 주석은 그 의미가 있습니다. CSV 데이터 파일에서 주석은 줄 시작 부분에 해시 (#)로 표시됩니다. CSV 데이터를 ML 프로젝트에로드하는 동안 주석을 고려해야합니다. 파일에 주석이있는 경우 해당 주석을 예상할지 여부를로드하기 위해 선택한 방법에 따라 표시해야 할 수 있기 때문입니다.
구분자
CSV 데이터 파일에서 쉼표 (,) 문자는 표준 구분 기호입니다. 구분 기호의 역할은 필드의 값을 구분하는 것입니다. CSV 파일을 ML 프로젝트에 업로드하는 동안 구분 기호의 역할을 고려하는 것이 중요합니다. 탭이나 공백과 같은 다른 구분 기호를 사용할 수도 있기 때문입니다. 그러나 표준 구분 기호와 다른 구분 기호를 사용하는 경우 명시 적으로 지정해야합니다.
인용 부호
CSV 데이터 파일에서 큰 따옴표 (“”) 표시는 기본 따옴표 문자입니다. CSV 파일을 ML 프로젝트에 업로드하는 동안 따옴표의 역할을 고려하는 것이 중요합니다. 큰 따옴표 이외의 다른 따옴표 문자도 사용할 수 있기 때문입니다. 그러나 표준 따옴표와 다른 따옴표를 사용하는 경우 명시 적으로 지정해야합니다.
CSV 데이터 파일을로드하는 방법
ML 프로젝트로 작업하는 동안 가장 중요한 작업은 데이터를 적절하게로드하는 것입니다. ML 프로젝트의 가장 일반적인 데이터 형식은 CSV이며 다양한 유형과 다양한 구문 분석 어려움이 있습니다. 이 섹션에서는 CSV 데이터 파일을로드하는 Python의 세 가지 일반적인 접근 방식에 대해 설명합니다.
Python 표준 라이브러리로 CSV로드
CSV 데이터 파일을로드하는 첫 번째이자 가장 많이 사용되는 접근 방식은 다양한 내장 모듈을 제공하는 Python 표준 라이브러리를 사용하는 것입니다. csv module및 reader () 함수. 다음은 그것의 도움으로 CSV 데이터 파일을로드하는 예입니다-
Example
이 예에서는 로컬 디렉토리에 다운로드 할 수있는 붓꽃 데이터 세트를 사용하고 있습니다. 데이터 파일을로드 한 후 다음으로 변환 할 수 있습니다.NumPyML 프로젝트에 사용합니다. 다음은 CSV 데이터 파일을로드하기위한 Python 스크립트입니다.
먼저 다음과 같이 Python 표준 라이브러리에서 제공하는 csv 모듈을 가져와야합니다.
import csv
다음으로로드 된 데이터를 NumPy 배열로 변환하기 위해 Numpy 모듈을 가져와야합니다.
import numpy as np
이제 CSV 데이터 파일이있는 로컬 디렉토리에 저장된 파일의 전체 경로를 제공합니다.
path = r"c:\iris.csv"
다음으로 csv.reader () 함수를 사용하여 CSV 파일에서 데이터를 읽습니다.
with open(path,'r') as f:
reader = csv.reader(f,delimiter = ',')
headers = next(reader)
data = list(reader)
data = np.array(data).astype(float)
다음 스크립트 줄로 헤더의 이름을 인쇄 할 수 있습니다.
print(headers)
다음 스크립트 줄은 데이터의 모양, 즉 파일의 행 및 열 수를 인쇄합니다.
print(data.shape)
다음 스크립트 줄은 데이터 파일의 처음 세 줄을 제공합니다.
print(data[:3])
Output
['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
(150, 4)
[ [5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
]
NumPy로 CSV로드
CSV 데이터 파일을로드하는 또 다른 방법은 NumPy 및 numpy.loadtxt () 함수입니다. 다음은 그것의 도움으로 CSV 데이터 파일을로드하는 예입니다-
예
이 예에서는 당뇨병 환자의 데이터가있는 Pima Indians Dataset을 사용합니다. 이 데이터 세트는 헤더가없는 숫자 데이터 세트입니다. 또한 로컬 디렉토리로 다운로드 할 수도 있습니다. 데이터 파일을로드 한 후 NumPy 배열로 변환하여 ML 프로젝트에 사용할 수 있습니다. 다음은 CSV 데이터 파일을로드하기위한 Python 스크립트입니다.
from numpy import loadtxt
path = r"C:\pima-indians-diabetes.csv"
datapath= open(path, 'r')
data = loadtxt(datapath, delimiter=",")
print(data.shape)
print(data[:3])
산출
(768, 9)
[ [ 6. 148. 72. 35. 0. 33.6 0.627 50. 1.]
[ 1. 85. 66. 29. 0. 26.6 0.351 31. 0.]
[ 8. 183. 64. 0. 0. 23.3 0.672 32. 1.]
]
Pandas로 CSV로드
CSV 데이터 파일을로드하는 또 다른 방법은 Pandas 과 pandas.read_csv()function. 이것은 반환하는 매우 유연한 함수입니다pandas.DataFrame플로팅에 즉시 사용할 수 있습니다. 다음은 그것의 도움으로 CSV 데이터 파일을로드하는 예입니다-
예
여기서는 두 개의 Python 스크립트를 구현할 것입니다. 첫 번째는 헤더가있는 Iris 데이터 세트를 사용하는 것이고 다른 하나는 헤더가없는 숫자 데이터 세트 인 Pima Indians 데이터 세트를 사용하는 것입니다. 두 데이터 세트 모두 로컬 디렉토리로 다운로드 할 수 있습니다.
Script-1
다음은 Iris 데이터 세트에서 Pandas를 사용하여 CSV 데이터 파일을로드하기위한 Python 스크립트입니다.
from pandas import read_csv
path = r"C:\iris.csv"
data = read_csv(path)
print(data.shape)
print(data[:3])
Output:
(150, 4)
sepal_length sepal_width petal_length petal_width
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
Script-2
다음은 Pima Indians Diabetes 데이터 세트에서 Pandas를 사용하여 헤더 이름을 제공하는 것과 함께 CSV 데이터 파일을로드하는 Python 스크립트입니다.
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
print(data.shape)
print(data[:3])
Output
(768, 9)
preg plas pres skin test mass pedi age class
0 6 148 72 35 0 33.6 0.627 50 1
1 1 85 66 29 0 26.6 0.351 31 0
2 8 183 64 0 0 23.3 0.672 32 1
CSV 데이터 파일을로드하기 위해 위에서 사용 된 세 가지 접근 방식의 차이점은 주어진 예제를 통해 쉽게 이해할 수 있습니다.