본문 바로가기
Machine Learning

[Machine Learning With Go] 1장 데이터 수집 및 구성

by namho46 2021. 1. 5.

*본 문서는 "Machince Learning with Go, Go를 활용한 머신러닝, Go 프로그래밍 언어를 사용해 회귀분석, 분류, 클러스터링, 시계열 모델, 신경망 및 딥러닝 구현하기" 다니엘 화이트낵 지음, 장세윤 옮길, 에이콘 출판 서적을 참고하여 작성 되었습니다.

 

 

 

Machince Learning With Go

1장. 데이터 수집 및 구성

CSV 파일

  • Go 에서 csv 파일을 구문 분석하는 데 주로 사용할 패키지는 다음과 같음
    • (표준 라이브러리) encoding/csv
    • gitHub.com/kniren/gota/dataframe
    • go-hep.org/x/hep/csvutil

파일에서 CSV 데이터 읽기

package lecture1

import (
    "encoding/csv"
    "fmt"
    "io"
    "os"
    "testing"

    "github.com/stretchr/testify/require"
)

func Test_CSV_ReadAll(t *testing.T) {
    f, err := os.Open("../../data/iris.csv")
    require.NoError(t, err)
    defer f.Close()

    reader := csv.NewReader(f)
    require.NotNil(t, reader)

    reader.FieldsPerRecord = -1

    rawCSVData, err := reader.ReadAll()
    require.NoError(t, err)

    fmt.Printf("iris.csv data read...\n")
    for _, row := range rawCSVData {
        for _, col := range row {
            fmt.Printf("%s    ", col)
        }
        fmt.Printf("\n")
    }
}

func Test_CSV_Read_LineByLine(t *testing.T) {
    f, err := os.Open("../../data/iris.csv")
    require.NoError(t, err)
    defer f.Close()

    reader := csv.NewReader(f)
    require.NotNil(t, reader)

    reader.FieldsPerRecord = -1

    var rawCSVData [][]string

    for {
        record, err := reader.Read()
        if err == io.EOF {
            break
        }

        rawCSVData = append(rawCSVData, record)
    }

    fmt.Printf("iris.csv data read...\n")
    for _, row := range rawCSVData {
        for _, col := range row {
            fmt.Printf("%s    ", col)
        }
        fmt.Printf("\n")
    }
}

댓글