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
카테고리 없음