Scikit-Learn을 사용하여 여러 DataFrame 열을 인코딩하는 라벨
Pandas DataFrame에서 문자열 라벨로 작업할 때 이를 다음으로 인코딩해야 하는 경우가 많습니다. 기계 학습 알고리즘과의 호환성을 위한 정수입니다. Scikit-learn의 LabelEncoder는 이 작업에 편리한 도구이지만 각 열에 여러 LabelEncoder 개체를 사용하는 것은 지루할 수 있습니다.
이를 우회하려면 다음 접근 방식을 활용할 수 있습니다.
df.apply(LabelEncoder().fit_transform)
이는 DataFrame의 각 열에 LabelEncoder를 적용하여 모든 문자열 레이블을 효과적으로 인코딩합니다.
OneHotEncoder를 사용한 향상된 인코딩
Scikit-Learn의 최신 버전(0.20 이상)에서는 레이블 인코딩 문자열 입력에 OneHotEncoder() 클래스가 권장됩니다. :
OneHotEncoder().fit_transform(df)
OneHotEncoder는 효율적인 원-핫을 제공합니다. 범주형 데이터에 종종 필요한 인코딩입니다.
역 변환 및 변환 작업
인코딩된 레이블을 역 변환하거나 변환하려면 다음 기술을 사용할 수 있습니다.
from collections import defaultdict d = defaultdict(LabelEncoder) # Encoding fit = df.apply(lambda x: d[x.name].fit_transform(x)) # Inverse transform fit.apply(lambda x: d[x.name].inverse_transform(x)) # Transform future data df.apply(lambda x: d[x.name].transform(x))
from sklearn.preprocessing import ColumnTransformer, OneHotEncoder # Select specific columns for encoding encoder = OneHotEncoder() transformer = ColumnTransformer(transformers=[('ohe', encoder, ['col1', 'col2', 'col3'])]) # Transform the DataFrame encoded_df = transformer.fit_transform(df)
from neuraxle.preprocessing import FlattenForEach # Flatten all columns and apply LabelEncoder encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
특정 사항에 따라 다름 요구 사항에 따라 Scikit-Learn에서 여러 열의 레이블 인코딩에 가장 적합한 방법을 선택할 수 있습니다.
위 내용은 Scikit-Learn을 사용하여 여러 DataFrame 열을 효율적으로 인코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!