Featuretools는 자동화된 기능 엔지니어링을 위한 Python 라이브러리입니다. 기능 엔지니어링 프로세스를 단순화하고 기계 학습 모델의 성능을 향상시키는 것을 목표로 합니다. 라이브러리는 원시 데이터에서 유용한 기능을 자동으로 추출하여 사용자가 시간과 노력을 절약하는 동시에 모델 정확도를 높이는 데 도움을 줍니다.
Featuretools를 사용하여 기능 엔지니어링을 자동화하는 방법에 대한 단계는 다음과 같습니다.
Featuretools를 사용하기 전에 데이터 세트를 준비해야 합니다. 데이터 세트는 Pandas DataFrame 형식이어야 하며, 여기서 각 행은 관찰을 나타내고 각 열은 기능을 나타냅니다. 분류 및 회귀 문제의 경우 데이터 세트에 목표 변수가 포함되어야 하고, 클러스터링 문제의 경우 데이터 세트에 목표 변수가 필요하지 않습니다. 따라서 Featuretools를 사용할 때 데이터 세트가 이러한 요구 사항을 충족하는지 확인하여 기능 엔지니어링 및 기능 생성을 효율적으로 수행할 수 있습니다.
특성 엔지니어링을 위해 Featuretools를 사용할 때는 먼저 엔터티와 관계를 정의해야 합니다. 엔터티는 관련된 특성 집합을 포함하는 데이터 집합의 하위 집합입니다. 예를 들어 전자상거래 웹사이트에서는 주문, 사용자, 제품, 결제 등이 서로 다른 개체로 처리될 수 있습니다. 관계는 엔터티 간의 연결입니다. 예를 들어 주문은 사용자와 연결될 수 있으며 사용자는 여러 제품을 구매할 수 있습니다. 엔터티와 관계를 명확하게 정의함으로써 데이터 세트의 구조를 더 잘 이해할 수 있으므로 기능 생성 및 데이터 분석이 용이해집니다.
Featuretools를 사용하면 엔터티와 관계를 정의하여 엔터티 세트를 만들 수 있습니다. 엔터티 세트는 여러 엔터티의 모음입니다. 이 단계에서는 각 엔터티의 이름, 데이터 세트, 인덱스, 변수 유형, 타임스탬프 등을 정의해야 합니다. 예를 들어 주문 및 사용자 엔터티를 포함하는 엔터티 세트는 다음 코드를 사용하여 생성할 수 있습니다.
import featuretools as ft # Create entity set es=ft.EntitySet(id='ecommerce') # Define entities orders=ft.Entity(id='orders',dataframe=orders_df,index='order_id',time_index='order_time') users=ft.Entity(id='users',dataframe=users_df,index='user_id') # Add entities to entity set es=es.entity_from_dataframe(entity_id='orders',dataframe=orders_df,index='order_id',time_index='order_time') es=es.entity_from_dataframe(entity_id='users',dataframe=users_df,index='user_id')
여기에서는 EntitySet을 사용하여 "ecommerce"라는 엔터티 세트를 생성하고 Entity, Orders 및 Users를 사용하여 두 엔터티를 정의합니다. . 주문 엔터티의 경우 주문 ID를 인덱스로, 주문 시간을 타임스탬프로 지정했습니다. 사용자 엔터티의 경우 사용자 ID만 인덱스로 지정했습니다.
이 단계에서는 엔터티 간의 관계를 정의해야 합니다. Featuretools를 사용하면 엔터티 간의 공유 변수, 타임스탬프 등을 통해 관계를 정의할 수 있습니다. 예를 들어 전자상거래 웹사이트에서 각 주문은 사용자와 연결됩니다. 주문과 사용자 간의 관계는 다음 코드를 사용하여 정의할 수 있습니다.
# Define relationships r_order_user = ft.Relationship(orders['user_id'], users['user_id']) es = es.add_relationship(r_order_user)
여기에서는 Relationship을 사용하여 주문과 사용자 간의 관계를 정의하고 add_relationship을 사용하여 엔터티 세트에 추가했습니다.
위 단계를 완료한 후 Featuretools의 심층 특징 합성 알고리즘을 사용하여 자동으로 특징을 생성할 수 있습니다. 이 알고리즘은 집계, 변환, 조합과 같은 새로운 기능을 자동으로 생성합니다. 다음 코드를 사용하여 심층 기능 합성 알고리즘을 실행할 수 있습니다.
# Run deep feature synthesis algorithm features, feature_names = ft.dfs(entityset=es, target_entity='orders', max_depth=2)
여기에서는 dfs 함수를 사용하여 심층 기능 합성 알고리즘을 실행하고 대상 엔터티를 순서 엔터티로 지정하고 최대 깊이를 2로 설정합니다. 이 함수는 새로운 기능과 기능 이름 목록이 포함된 DataFrame을 반환합니다.
새로운 기능을 얻은 후에는 이를 사용하여 기계 학습 모델을 훈련할 수 있습니다. 다음 코드를 사용하여 원본 데이터세트에 새로운 기능을 추가할 수 있습니다.
# Add new features to original dataset df=pd.merge(orders_df,features,left_on='order_id',right_on='order_id')
여기에서는 훈련 및 테스트를 위해 병합 기능을 사용하여 원본 데이터세트에 새로운 기능을 추가합니다. 그런 다음 새로운 기능을 사용하여 기계 학습 모델을 훈련할 수 있습니다. 예:
# Split dataset into train and test sets X_train, X_test, y_train, y_test = train_test_split(df[feature_names], df['target'], test_size=0.2, random_state=42) # Train machine learning model model = RandomForestClassifier() model.fit(X_train, y_train) # Evaluate model performance y_pred = model.predict(X_test) accuracy_score(y_test, y_pred)
여기에서는 Random Forest 분류기를 기계 학습 모델로 사용하고 훈련 세트를 사용하여 모델을 훈련합니다. 그런 다음 테스트 세트를 사용하여 정확도를 평가 지표로 사용하여 모델 성능을 평가합니다.
Featuretools를 사용하여 기능 엔지니어링을 자동화하는 단계에는 데이터 준비, 엔터티 및 관계 정의, 엔터티 세트 생성, 관계 정의, 심층 기능 합성 알고리즘 실행 및 모델 구축이 포함됩니다. Featuretools는 원시 데이터에서 유용한 기능을 자동으로 추출하여 사용자가 많은 시간과 노력을 절약하고 기계 학습 모델의 성능을 향상시키는 데 도움을 줍니다.
위 내용은 Featuretools를 사용하여 자동 기능 엔지니어링 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!