상세 컨텐츠

본문 제목

[SCIKIT LEARN] CSV 파일을 데이터 배열로 나만의 데이터 만들기

프로그래밍

by 경밤 2019. 11. 3. 21:11

본문

반응형

우리는 엑셀에서 데이터를 작성 후 CSV 확장자로 저장 할 것 입니다.

CSV 파일의 형태는 a, b, 2, 3 이런식으로 쉼표로 구분합니다.

우리는 이 CSV 확장자를 가진 파일을 Scikit-learn에서 지도학습에 필요한 Numpy형식의 배열로 파이썬의 pandas 라이브러리를 통해 코드를 작성하겠다.

 

Scikit Learn 데이터 학습을 위해 엑셀 파일 작성

맨 윗줄에는 아래 행렬의 데이터가 무슨 데이터인지 표시하자 이것은 한 레이블의 특성이 되겠다.

1열은 특성 이름들, 2열 부터가 한 묶음의 데이터가 되겠다. (A, 2)는 feature1의 값이고, (B, 2)는 feature2의 값이다.

파일 -> 다른 이름으로 저장 -> 파일 형식 -> CSV UTF-8(쉼표로 분리) 선택 후 저장 시켜준다.


csv 데이터를 sklearn 학습을 위해 numpy 배열로 변환 시켜주는 함수 작성

import pandas as pd

def sklearn_csv_to_data(csv_file):
    df = pd.read_csv(input_file, header = 0)
    feature_names = list(df.columns.values)
    data = df.values
    return feature_names, data

이 함수를 붙여넣기 해 준후 함수를 호출할때 매개변수로 아까 만들었던 csv 파일의 위치를 적어주면 되겠다.

ex) D:\ML\my_data.csv 혹은 같은 폴더 일 경우, my_data.csv도 가능하다.

이 함수는 차례대로 특성 이름과 특성에 다른 numpy 데이터를 리턴한다.

이제 타겟과 타겟 이름을 만들겠다. 타겟은 'target1'과 'target2'로 나누고, 데이터의 길이가 총 2개니 한개는 0, 한개는 1로 해서 반반 다르게 두겠다. 그러면 target변수에는 [0, 1], target_names에는 'target1', 'target2'겠다. 그래서 target_names[target[0]] 하면 'target1'이 나오도록 설계했다.

target = np.empty(data.shape[0], dtype=int)
target.fill(1)
target_names = np.array(['target1', 'target2'])
np.put(target,np.arange(round(target.shape[0]/2)-1).shape[0], 0)

타겟이 2개밖에 없으니 2개에 맞게 작성했다. 앵간하면 이 코드를 쓰지말고 직접 만들어서 쓰자.

 

이제 모든 값들이 준비가 되었다. 한번 출력을 해보면 아래와 같다.

print("features     : {}".format(feature_names))
print("data         : \n{}".format(data))
print("target       : {}".format(target))
print("target_names : {}".format(target_names))

전체사진으로 마무리

 끝

반응형

관련글 더보기