익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
아파치 스파크 StringIndexer
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
StringIndexer는 Apache Spark MLlib에서 제공하는 범주형 문자열 데이터를 수치형 인덱스로 변환하는 변환기(Transformer)이다. 머신 러닝 알고리즘은 일반적으로 숫자형 입력을 필요로 하므로, 문자열로 표현된 범주형 변수를 정수형 인덱스로 매핑하는 데 사용된다. ==개요== StringIndexer는 입력 열(input column)에 포함된 고유한 문자열 레이블을 빈도 또는 알파벳 순에 따라 정수 인덱스로 변환한다. 결과는 새 열(output column)에 저장된다. 이 작업은 머신 러닝 파이프라인에서 전처리 단계로 자주 사용되며, 이후 원-핫 인코딩과 함께 사용되기도 한다. ==동작 방식== *가장 많이 등장하는 범주에 낮은 인덱스(보통 0)를 부여 *같은 빈도일 경우, 알파벳 순으로 우선순위 결정 *새로운 데이터에 대해 fit된 인덱싱 모델을 transform 단계에서 재사용 가능 ==주요 파라미터== *inputCol: 변환할 열 이름 *outputCol: 결과가 저장될 열 이름 *handleInvalid: 'skip', 'error' (기본값), 'keep' 중 선택 **학습 시 보지 못한 범주가 나왔을 경우 처리 방식 지정 ==예시== <syntaxhighlight lang="python"> from pyspark.ml.feature import StringIndexer from pyspark.sql import SparkSession spark = SparkSession.builder.appName("StringIndexerExample").getOrCreate() data = spark.createDataFrame([ (0, "사과"), (1, "바나나"), (2, "사과"), (3, "포도") ], ["id", "fruit"]) indexer = StringIndexer(inputCol="fruit", outputCol="fruitIndex") model = indexer.fit(data) indexed = model.transform(data) indexed.show() </syntaxhighlight> ===출력 예시=== {| class="wikitable" !id!!fruit!!fruitIndex |- |0||사과||0.0 |- |1||바나나||2.0 |- |2||사과||0.0 |- |3||포도||1.0 |} ==StringIndexerModel 저장 및 로드== <syntaxhighlight lang="python"> model.save("/path/to/model") from pyspark.ml.feature import StringIndexerModel loaded_model = StringIndexerModel.load("/path/to/model") </syntaxhighlight> ==StringIndexer와 OneHotEncoder 결합== StringIndexer로 인덱싱한 결과를 OneHotEncoder에 연결하여 원-핫 인코딩을 수행할 수 있다.<syntaxhighlight lang="python"> from pyspark.ml.feature import OneHotEncoder from pyspark.ml import Pipeline encoder = OneHotEncoder(inputCols=["fruitIndex"], outputCols=["fruitVec"]) pipeline = Pipeline(stages=[indexer, encoder]) model = pipeline.fit(data) encoded = model.transform(data) encoded.select("fruit", "fruitIndex", "fruitVec").show() </syntaxhighlight> ==장점== *범주형 문자열 데이터를 머신 러닝에 적합한 수치형으로 변환 가능 *파이프라인과 쉽게 통합 *모델 직렬화 및 배포 가능 ==단점== *숫자 인덱스가 순서를 의미하지 않음에도, 일부 알고리즘이 이를 순서로 해석할 수 있음 *새로운 범주가 등장할 경우 별도 처리 필요 (`handleInvalid` 옵션 활용) ==같이 보기== *[[아파치 스파크 머신 러닝 파이프라인]] *[[One-hot encoding]] *[[pyspark.ml.feature]] *[[피처 엔지니어링]] ==참고 문헌== *Apache Spark MLlib 공식 문서: https://spark.apache.org/docs/latest/ml-features.html#stringindexer *Karau, H., & Warren, R. (2017). High Performance Spark. O'Reilly Media. [[분류:분산 컴퓨팅]] [[분류:아파치 스파크]] [[분류:인공지능]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록