NLTK 및 SciPy를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환 작성

NLTK 및 SciPy를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환 작성

“코드에 집중하는 대신 기업은 신뢰할 수 있고 효율적이며 체계적인 방식으로 데이터를 개선하기 위한 체계적인 엔지니어링 관행을 개발하는 데 집중해야 합니다. 즉, 기업은 모델 중심 접근 방식에서 데이터 중심 접근 방식으로 전환해야 합니다.” – 앤드류 응

데이터 중심 AI 접근 방식에는 데이터 준비 및 기능 엔지니어링과 관련된 고품질 데이터로 AI 시스템을 구축하는 것이 포함됩니다. 이는 데이터 수집, 검색, 프로파일링, 정리, 구조화, 변환, 강화, 유효성 검사 및 데이터의 안전한 저장과 관련된 지루한 작업일 수 있습니다.

Amazon SageMaker 데이터 랭글러 의 서비스입니다 아마존 세이지 메이커 스튜디오 코딩을 거의 또는 전혀 사용하지 않고 데이터 가져오기, 준비, 변환, 기능화 및 분석을 위한 종단 간 솔루션을 제공합니다. Data Wrangler 데이터 준비 흐름을 기계 학습(ML) 워크플로에 통합하여 데이터 전처리 및 기능 엔지니어링을 간소화하고 PySpark 코드를 작성하거나 Apache Spark를 설치하거나 클러스터를 스핀업할 필요 없이 데이터 준비를 프로덕션으로 더 빠르게 진행할 수 있습니다.

데이터 변환을 위한 고유한 사용자 지정 스크립트를 추가해야 하는 시나리오의 경우 Pandas, PySpark, PySpark SQL에서 변환 논리를 작성할 수 있습니다. Data Wrangler는 이제 ML용 텍스트 데이터를 준비하고 제약 조건 최적화를 수행하기 위해 사용자 지정 변환을 작성하기 위한 NLTK 및 SciPy 라이브러리를 지원합니다.

데이터 변환을 위해 고유한 사용자 지정 스크립트를 추가해야 하는 시나리오가 발생할 수 있습니다. Data Wrangler 사용자 지정 변환 기능을 사용하면 Pandas, PySpark, PySpark SQL에서 변환 논리를 작성할 수 있습니다.

이 게시물에서는 ML용 텍스트 데이터를 준비하기 위해 NLTK에서 사용자 지정 변환을 작성하는 방법에 대해 설명합니다. 또한 NLTK, NumPy, SciPy, scikit-learn 및 AWS AI Services와 같은 다른 일반적인 프레임워크를 사용하여 몇 가지 사용자 지정 코드 변환 예제를 공유합니다. 이 연습의 목적을 위해 다음을 사용합니다. 타이타닉 데이터 세트, ML 커뮤니티에서 인기 있는 데이터 세트로 이제 샘플 데이터 세트 데이터 랭글러 내에서.

솔루션 개요

Data Wrangler는 데이터 가져오기를 위한 40개 이상의 기본 제공 커넥터를 제공합니다. 데이터를 가져온 후 300개 이상의 기본 제공 변환을 사용하여 데이터 분석 및 변환을 작성할 수 있습니다. 그런 다음 산업화된 파이프라인을 생성하여 기능을 푸시할 수 있습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 또는 Amazon SageMaker 기능 스토어. 다음 다이어그램은 종단 간 상위 수준 아키텍처를 보여줍니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

사전 조건

Data Wrangler는 SageMaker에서 사용할 수 있는 기능입니다. 아마존 세이지 메이커 스튜디오. 당신은 따를 수 있습니다 Studio 온보딩 프로세스 Studio 환경과 노트북을 가동합니다. 몇 가지 인증 방법 중에서 선택할 수 있지만 Studio 도메인을 만드는 가장 간단한 방법은 다음을 따르는 것입니다. 빠른 시작 지침. 빠른 시작은 표준 Studio 설정과 동일한 기본 설정을 사용합니다. 다음을 사용하여 온보딩하도록 선택할 수도 있습니다. AWS IAM 자격 증명 센터 (AWS Single Sign-On의 후속) 인증(참조 IAM Identity Center를 사용하여 Amazon SageMaker 도메인에 온보딩).

Titanic 데이터 세트 가져오기

Studio 환경을 시작하고 새 데이터 랭글러 흐름. 다음 스크린샷과 같이 자신의 데이터 세트를 가져오거나 샘플 데이터 세트(Titanic)를 사용할 수 있습니다. Data Wrangler를 사용하면 다양한 데이터 소스에서 데이터 세트를 가져올 수 있습니다. 사용 사례의 경우 S3 버킷에서 샘플 데이터 세트를 가져옵니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

가져온 후에는 데이터 흐름에 두 개의 노드(소스 노드 및 데이터 유형 노드)가 표시됩니다. Data Wrangler는 데이터 세트의 모든 열에 대한 데이터 유형을 자동으로 식별합니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

NLTK를 사용한 사용자 정의 변환

Data Wrangler를 사용한 데이터 준비 및 기능 엔지니어링을 위해 300개 이상의 기본 제공 변환을 사용하거나 고유한 사용자 지정 변환을 구축할 수 있습니다. 맞춤 변환 Data Wrangler 내에서 별도의 단계로 작성할 수 있습니다. Data Wrangler 내에서 .flow 파일의 일부가 됩니다. 사용자 정의 변환 기능은 Python, PySpark 및 SQL을 코드 스니펫의 다른 단계로 지원합니다. .flow 파일에서 노트북 파일(.ipynb)이 생성되거나 .flow 파일이 레시피로 사용된 후 사용자 지정 변환 코드 스니펫은 변경할 필요 없이 유지됩니다. 이러한 데이터 랭글러 설계를 통해 사용자 정의 변환을 통해 대규모 데이터 세트를 처리하기 위해 사용자 정의 변환이 SageMaker 처리 작업의 일부가 될 수 있습니다.

Titanic 데이터 세트에는 텍스트 정보가 포함된 몇 가지 기능(이름 및 home.dest)이 있습니다. 우리는 사용 NLTK 이름 열을 분할하고 성을 추출하고 성의 빈도를 인쇄합니다. NLTK는 인간 언어 데이터로 작업하는 Python 프로그램을 구축하기 위한 선도적인 플랫폼입니다. 에 사용하기 쉬운 인터페이스를 제공합니다. 50개 이상의 말뭉치 및 어휘 리소스 분류, 토큰화, 형태소 분석, 태깅, 파싱, 의미론적 추론을 위한 텍스트 처리 라이브러리 제품군 및 강력한 자연어 처리(NLP) 라이브러리용 래퍼와 함께 WordNet과 같은

새 변환을 추가하려면 다음 단계를 완료하십시오.

  1. 더하기 기호를 선택하고 변형 추가.
  2. 왼쪽 메뉴에서 단계 추가 선택하고 사용자 지정 변환.

Pandas, PySpark, Python 사용자 정의 함수 및 SQL PySpark를 사용하여 사용자 지정 변환을 생성할 수 있습니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

  1. 왼쪽 메뉴에서 Python (팬더) 다음 코드를 추가하여 이름 열에서 성을 추출합니다.
    import nltk
    nltk.download('punkt')
    tokens = [nltk.word_tokenize(name) for name in df['Name']] # Extract the last names of the passengers
    df['last_name'] = [token[0] for token in tokens]

  2. 왼쪽 메뉴에서 시사 결과를 검토합니다.

다음 스크린 샷은 last_name 열이 추출되었습니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

  1. 다음 코드를 사용하여 성의 빈도 분포를 식별하는 또 다른 사용자 지정 변환 단계를 추가합니다.
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. 왼쪽 메뉴에서 시사 빈도의 결과를 검토합니다.NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

AWS AI 서비스를 사용한 사용자 지정 변환

사전 훈련된 AWS AI 서비스는 애플리케이션 및 워크플로를 위한 기성 인텔리전스를 제공합니다. AWS AI 서비스는 애플리케이션과 쉽게 통합되어 많은 일반적인 사용 사례를 처리합니다. 이제 AWS AI 서비스의 기능을 Data Wrangler의 사용자 지정 변환 단계로 사용할 수 있습니다.

아마존 이해 NLP를 사용하여 문서 내용에 대한 통찰력을 추출합니다. 문서의 엔터티, 핵심 구, 언어, 감정 및 기타 공통 요소를 인식하여 통찰력을 개발합니다.

Amazon Comprehend를 사용하여 이름 열에서 엔터티를 추출합니다. 다음 단계를 완료하십시오.

  1. 사용자 지정 변환 단계를 추가합니다.
  2. 왼쪽 메뉴에서 Python (팬더).
  3. 엔티티를 추출하려면 다음 코드를 입력하십시오.
    import boto3
    comprehend = boto3.client("comprehend") response = comprehend.detect_entities(LanguageCode = 'en', Text = df['name'].iloc[0]) for entity in response['Entities']:
    print(entity['Type'] + ":" + entity["Text"])

  4. 왼쪽 메뉴에서 시사 결과를 시각화합니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

이제 Data Wrangler에 세 가지 사용자 지정 변환을 추가했습니다.

  1. 왼쪽 메뉴에서 데이터 흐름 종단 간 데이터 흐름을 시각화합니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

NumPy 및 SciPy를 사용한 사용자 정의 변환

눔 파이 포괄적인 수학 함수, 난수 생성기, 선형 대수 루틴, 푸리에 변환 등을 제공하는 Python용 오픈 소스 라이브러리입니다. SciPy 최적화, 선형 대수, 적분, 보간, 특수 함수, 고속 푸리에 변환(FFT), 신호 및 이미지 처리, 솔버 등을 위한 모듈을 포함하는 과학 컴퓨팅 및 기술 컴퓨팅에 사용되는 오픈 소스 Python 라이브러리입니다.

Data Wrangler 사용자 지정 변환을 사용하면 Python, PySpark 및 SQL을 서로 다른 단계로 결합할 수 있습니다. 다음 데이터 랭글러 흐름에서 Python 패키지, NumPy 및 SciPy의 다양한 기능이 Titanic 데이터 세트에 여러 단계로 적용됩니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

NumPy 변환

Titanic 데이터 세트의 요금 열에는 다양한 승객의 탑승 요금이 있습니다. 운임 열의 히스토그램은 마지막 구간을 제외하고 균일한 분포를 보여줍니다. 로그 또는 제곱근과 같은 NumPy 변환을 적용하여 분포를 변경할 수 있습니다(제곱근 변환으로 표시됨).

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함. NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

다음 코드를 참조하십시오.

import pandas as pd
import numpy as np
df["fare_log"] = np.log(df["fare_interpolate"])
df["fare_sqrt"] = np.sqrt(df["fare_interpolate"])
df["fare_cbrt"] = np.cbrt(df["fare_interpolate"])

SciPy 변환

z-score와 같은 SciPy 함수는 평균 및 표준 편차로 운임 분포를 표준화하기 위해 사용자 지정 변환의 일부로 적용됩니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

다음 코드를 참조하십시오.

df["fare_zscore"] = zscore(df["fare_interpolate"])
from scipy.stats import zscore

NumPy 및 SciPy를 사용한 제약 조건 최적화

Data Wrangler 사용자 지정 변환은 SciPy 최적화 기능을 적용하고 SciPy를 NumPy와 결합하는 제약 조건 최적화와 같은 고급 변환을 처리할 수 있습니다. 다음 예에서 나이 함수로서의 운임은 관찰 가능한 추세를 보여주지 않습니다. 그러나 제약 조건 최적화는 요금을 나이의 함수로 변환할 수 있습니다. 이 경우 제약 조건은 새 총 요금이 이전 총 요금과 동일하게 유지된다는 것입니다. 데이터 랭글러 사용자 지정 변환을 사용하면 SciPy 최적화 기능을 실행하여 제약 조건에서 요금을 나이 함수로 변환할 수 있는 최적의 계수를 결정할 수 있습니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함. NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

SciPy 및 NumPy를 사용하여 Data Wrangler 사용자 지정 변환에서 제약 조건 최적화를 공식화하는 동안 최적화 정의, 목표 정의 및 여러 제약 조건을 다른 함수로 언급할 수 있습니다. 사용자 지정 변환은 SciPy 최적화 패키지의 일부로 사용할 수 있는 다양한 해결 방법을 가져올 수도 있습니다. 데이터 랭글러의 기존 열에 원래 열에 최적의 계수를 곱하여 새로운 변환 변수를 생성할 수 있습니다. 다음 코드를 참조하십시오.

import numpy as np
import scipy.optimize as opt
import pandas as pd df2 = pd.DataFrame({"Y":df["fare_interpolate"], "X1":df["age_interpolate"]}) # optimization defination
def main(df2):
x0 = [0.1]
res = opt.minimize(fun=obj, x0=x0, args=(df2), method="SLSQP", bounds=[(0,50)], constraints=cons)
return res # objective function
def obj(x0, df2):
sumSquares = np.sum(df2["Y"] - x0*df2["X1"])
return sumSquares # constraints
def constraint1(x0):
sum_cons1 = np.sum(df2["Y"] - x0*df2["X1"]) - 0
return sum_cons1
con1 = {'type': 'eq', 'fun': constraint1}
cons = ([con1]) print(main(df2)) df["new_fare_age_optimized"]=main(df2).x*df2["X1"]

Data Wrangler 사용자 지정 변환 기능에는 최적 계수 값(또는 여러 계수)과 같은 SciPy 최적화 함수의 결과를 표시하는 UI 기능이 있습니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

scikit-learn을 사용한 사용자 정의 변환

사이 킷 학습 SciPy 위에 구축된 기계 학습용 Python 모듈입니다. 지도 및 비지도 학습을 지원하는 오픈 소스 ML 라이브러리입니다. 또한 모델 피팅, 데이터 전처리, 모델 선택, 모델 평가 및 기타 여러 유틸리티를 위한 다양한 도구를 제공합니다.

이산화

이산화 (또는 양자화 or 비닝) 연속 기능을 불연속 값으로 분할하는 방법을 제공합니다. 연속 특성이 있는 특정 데이터 세트는 이산화를 통해 이점을 얻을 수 있습니다. 이산화는 연속 속성의 데이터 세트를 명목 속성만 있는 데이터 세트로 변환할 수 있기 때문입니다. 원-핫 인코딩된 이산 기능은 해석 가능성을 유지하면서 모델을 더욱 표현력 있게 만들 수 있습니다. 예를 들어 이산기를 사용한 전처리는 선형 모델에 비선형성을 도입할 수 있습니다.

다음 코드에서 우리는 KBinsDiscretizer 연령 열을 10개의 빈으로 이산화하려면 다음을 수행하십시오.

# Table is available as variable `df`
from sklearn.preprocessing import KBinsDiscretizer
import numpy as np
# discretization transform the raw data
df = df.dropna()
kbins = KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='uniform')
ages = np.array(df["age"]).reshape(-1, 1)
df["age"] = kbins.fit_transform(ages)
print(kbins.bin_edges_)

다음 스크린샷에서 빈 가장자리가 인쇄된 것을 볼 수 있습니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

원-핫 인코딩

Embarked 열의 값은 범주형 값입니다. 따라서 모델로 분류를 수행하려면 이러한 문자열을 숫자 값으로 나타내야 합니다. 원-핫 인코딩 변환을 사용하여 이 작업을 수행할 수도 있습니다.

Embarked에는 S, C, Q의 세 가지 값이 있습니다. 이를 숫자로 나타냅니다. 다음 코드를 참조하십시오.

# Table is available as variable `df`
from sklearn.preprocessing import LabelEncoder le_embarked = LabelEncoder()
le_embarked.fit(df["embarked"]) encoded_embarked_training = le_embarked.transform(df["embarked"])
df["embarked"] = encoded_embarked_training

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.

정리

Data Wrangler를 사용하지 않을 때는 추가 요금이 발생하지 않도록 Data Wrangler가 실행되는 인스턴스를 종료하는 것이 중요합니다.

Data Wrangler는 60초마다 데이터 흐름을 자동으로 저장합니다. 작업 손실을 방지하려면 Data Wrangler를 종료하기 전에 데이터 흐름을 저장하십시오.

  1. Studio에서 데이터 흐름을 저장하려면 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에다음을 선택 데이터 랭글러 흐름 저장.
  2. Data Wrangler 인스턴스를 종료하려면 Studio에서 다음을 선택합니다. 인스턴스 및 커널 실행.
  3. $XNUMX Million 미만 실행 중인 앱, sagemaker-data-wrangler-1.0 앱 옆에 있는 종료 아이콘을 선택합니다.
  4. 왼쪽 메뉴에서 모두 종료 확인.

Data Wrangler는 ml.m5.4xlarge 인스턴스에서 실행됩니다. 이 인스턴스는 다음에서 사라집니다. 실행 중인 인스턴스 데이터 랭글러 앱을 종료할 때.

Data Wrangler 앱을 종료한 후에는 다음에 Data Wrangler 흐름 파일을 열 때 다시 시작해야 합니다. 몇 분 정도 걸릴 수 있습니다.

결론

이 게시물에서는 Data Wrangler에서 사용자 정의 변환을 사용하는 방법을 시연했습니다. 내장된 데이터 변환 기능을 확장하기 위해 Data Wrangler 컨테이너 내의 라이브러리와 프레임워크를 사용했습니다. 이 게시물의 예제는 사용된 프레임워크의 하위 집합을 나타냅니다. 이제 Data Wrangler 흐름의 변환을 DataOps용 파이프라인으로 확장할 수 있습니다.

Data Wrangler에서 데이터 흐름을 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오. 데이터 랭글러 흐름 생성 및 사용Amazon SageMaker 요금. Data Wrangler를 시작하려면 다음을 참조하세요. Amazon SageMaker Data Wrangler로 ML 데이터 준비. SageMaker의 Autopilot 및 AutoML에 대해 자세히 알아보려면 다음을 방문하십시오. Amazon SageMaker Autopilot으로 모델 개발 자동화.


저자 소개

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.미낙시순다람 탄다바라얀 AWS의 수석 AI/ML 전문가입니다. 그는 AI 및 ML 여정에서 하이테크 전략 계정을 돕습니다. 그는 데이터 기반 AI에 대해 매우 열정적입니다.

 NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.소빅 쿠마르 나트 AWS의 AI/ML 솔루션 아키텍트입니다. 그는 기계 학습을 위한 종단 간 설계 및 솔루션에 대한 광범위한 경험을 가지고 있습니다. 재무, 운영 및 마케팅 분석 내의 비즈니스 분석; 보건 의료; 공급망; 그리고 IoT. 업무 외에는 여행과 영화 감상을 즐깁니다.

NLTK 및 SciPy PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker Data Wrangler에서 사용자 지정 변환을 작성합니다. 수직 검색. 일체 포함.애비 게일 Amazon SageMaker의 소프트웨어 개발 엔지니어입니다. 그녀는 고객이 DataWrangler에서 데이터를 준비하도록 돕고 분산 기계 학습 시스템을 구축하는 데 열정적입니다. 여가 시간에 Abigail은 여행, 하이킹, 스키, 베이킹을 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습