본문 바로가기

카테고리 없음

[패스트캠퍼스 수강 후기] 데이터분석 인강 100% 환급 챌린지 28회차 미션

09. ch03. sklearn - 전처리 기본 - 03. 빈값 처리(Imputer) - 12. ch03. sklearn - 전처리 기본 - 06. Normalization(정규화)


09. ch03. sklearn - 전처리 기본 - 03. 빈값 처리(Imputer)


전처리: 결측치


결측치를 확인하는 방법은 pandas의 isnull()

그리고 합계를 구하는 sum()


train.isnull().sum()

개별 column 결측치

train['Age'].isnull().sum()


1. 수치형 (Numerical Column) 데이터에 대한 결측치 처리

train['Age'].fillna(0).describe()

train['Age'].fillna(train['Age'].mean()).describe()

imputer: 2개 이상의 column을 한 번에 처리

from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='mean')

fit() 을 통해 결측치에 대한 학습을 진행

imputer.fit(train[['Age', 'Pclass']])

transform() 은 실제 결측치에 대한 처리를 해주는 함수

result = imputer.transform(train[['Age', 'Pclass']])

result

train[['Age', 'Pclass']] = result

train[['Age', 'Pclass']].isnull().sum()

train[['Age', 'Pclass']].describe()

fit_transform()은 fit()과 transform()을 한 번에 해주는 함수

train = pd.read_csv('https://bit.ly/fc-ml-titanic')

train[['Age', 'Pclass']].isnull().sum()

imputer = SimpleImputer(strategy='median')

result = imputer.fit_transform(train[['Age', 'Pclass']])

train[['Age', 'Pclass']] = result

train[['Age', 'Pclass']].isnull().sum()

train[['Age', 'Pclass']].describe()

2. (Categorical Column) 데이터에 대한 결측치 처리

1개의 column 처리

train['Embarked'].fillna('S')

Imputer를 사용하는 경우 : 2개 이상의 column을 처리

imputer = SimpleImputer(strategy='most_frequent')

result = imputer.fit_transform(train[['Embarked', 'Cabin']])

train[['Embarked', 'Cabin']] = result

train[['Embarked', 'Cabin']].isnull().sum()




10. ch03. 전처리 기본 - 04. Label Encoder



Label Encoding : 문자(categorical)를 수치(numerical)로 변환


def convert(data):
if data == 'male':
return 1
elif data == 'female':
return 0

train['Sex'].value_counts()

train['Sex'].apply(convert)

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

le.fit_transform(train['Sex'])

train['Sex_num'] = le.fit_transform(train['Sex'])

train['Sex_num'].value_counts()


le.classes_


le.inverse_transform([0, 1, 1, 0, 0, 1, 1])

NaN 값이 포함되어 있다면, LabelEncoder가 정상 동작하지 않습니다.

le.fit_transform(train['Embarked'])

train['Embarked'] = train['Embarked'].fillna('S')

le.fit_transform(train['Embarked'])


11. ch03. 전처리 기본 - 05. One hot Encoding


원 핫 인코딩 (One Hot Encoding)

train['Embarked'].value_counts()

train['Embarked'] = train['Embarked'].fillna('S')

train['Embarked'].value_counts()

train['Embarked_num'] = LabelEncoder().fit_transform(train['Embarked'])

train['Embarked_num'].value_counts()

각각의 데이터에 독립성 부여

독립적인 데이터는 별도의 column으로 분리하고, 각각의 컬럼에 해당 값에만 True 나머지는 False를 갖습니다

train['Embarked'][:6]

train['Embarked_num'][:6]

pd.get_dummies(train['Embarked_num'][:6])

one_hot = pd.get_dummies(train['Embarked_num'][:6])

one_hot.columns = ['C', 'Q', 'S']

column 을 분리시켜 카테고리형 -> 수치형으로 변환하면서 생기는 수치형 값의 관계를 끊어주어서 독립적인 형태로




12. ch03. sklearn - 전처리 기본 - 06. Normalization(정규화)


전처리: Normalize(정규화)

column 간에 다른 min, max 값을 가지는 경우, 정규화를 통해 최소치/ 최대값의 척도를 맞추어 주는 것

movie = {'naver': [2, 4, 6, 8, 10],
'netflix': [1, 2, 3, 4, 5]
}

movie = pd.DataFrame(data=movie)
movie

from sklearn.preprocessing import MinMaxScaler

min_max_scaler = MinMaxScaler()

min_max_movie = min_max_scaler.fit_transform(movie)

pd.DataFrame(min_max_movie, columns=['naver', 'netflix'])



패스트캠퍼스 데이터분석 강의 링크
bit.ly/3imy2uN