728x90
데이터 분석 과제테스트의 일반적인 특징과 준비 방법
- 보통 두 가지 유형의 문제로 구성됩니다. 첫 번째는 데이터를 가공하는 것, 두 번째는 머신러닝 모델링입니다.
- 데이터 가공 문제의 경우, 기본적인 데이터 처리부터 텍스트 형태로 주어진 데이터에서 특정 정보를 추출하는 등 다양한 유형이 나오니 최대한 많은 유형을 경험해보는게 좋은 것 같습니다.
- 모델링 문제는 Kaggle이나 Dacon과 같은 데이터 분석 경진대회와 유사한 형태로 나옵니다. 정형 데이터 분류/회귀 경진대회를 연습해보면 많은 도움이 됩니다.
- 데이터 전처리부터 모델링, csv 파일 형태로 제출까지 모든 과정을 알고 있어야합니다. 여기에 모델 튜닝, EDA를 통한 변수 선택/제거 등 성능 개선 방법을 잘 알고 있으면 좋습니다.
- 라이브러리도 기본적으로 암기하고 들어가는 것이 시간 절약에 도움이 됩니다! 회사마다 다르지만 검색을 허용하는 곳, 하지 않는 곳들이 있기 때문에 그냥 외우는게 마음이 편합니다.
- 일반적으로 환경은 JupyterNotbook으로 colab에서 사용하는 것과 동일합니다.
- EDA를 통해서 성능을 개선하고, 결측치, 이상치 처리할 때 기본적인 평균값, 중앙값 등인 방법 외에도 알고리즘을 활용한 방법 등 성능을 높일 수 있는 방법은 최대한 알고 가는게 좋습니다.
모델링 문제 기본 구성
1. 데이터 불러오기
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
# 데이터 로드
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
2. 타겟 변수 분리
# 타겟 변수 분리
X = train.drop('target', axis=1)
y = train['target']
3. 데이터 전처리
- 평균, 최빈값, 중앙값 모든 경우를 알고 있으면 좋아요.
# 결측치 처리
# 수치형 변수는 평균값으로 대체
numeric_columns = X.select_dtypes(include=['int64', 'float64']).columns
for col in numeric_columns:
X[col] = X[col].fillna(X[col].mean())
test[col] = test[col].fillna(test[col].mean())
# 범주형 변수는 최빈값으로 대체
categorical_columns = X.select_dtypes(include=['object']).columns
for col in categorical_columns:
X[col] = X[col].fillna(X[col].mode()[0])
test[col] = test[col].fillna(test[col].mode()[0])
# 이상치 처리 (IQR 방식)
for col in numeric_columns:
Q1 = X[col].quantile(0.25)
Q3 = X[col].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
X[col] = np.clip(X[col], lower_bound, upper_bound)
test[col] = np.clip(test[col], lower_bound, upper_bound)
# 범주형 변수 인코딩
le = LabelEncoder()
for col in categorical_columns:
X[col] = le.fit_transform(X[col])
test[col] = le.transform(test[col])
4.모델링 및 튜닝
분류 문제
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
# 모델 학습 및 튜닝
rf = RandomForestClassifier()
param_grid = {
'n_estimators': [100, 200],
'max_depth': [10, 20],
'min_samples_split': [2, 5],
'min_samples_leaf': [1, 2]
}
# GridSearchCV로 최적 파라미터 탐색
grid_search = GridSearchCV(rf, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)
# 최적 모델 선택
best_model = grid_search.best_estimator_
# 예측 및 성능 평가
val_pred = best_model.predict(X_val)
test_pred = best_model.predict(test)
회귀 경우
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
# 모델 학습 및 튜닝
rf = RandomForestRegressor()
param_grid = {
'n_estimators': [100, 200],
'max_depth': [10, 20],
'min_samples_split': [2, 5],
'min_samples_leaf': [1, 2]
}
# GridSearchCV로 최적 파라미터 탐색
grid_search = GridSearchCV(rf, param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(X_train, y_train)
# 최적 모델 선택
best_model = grid_search.best_estimator_
# 예측 및 성능 평가
val_pred = best_model.predict(X_val)
test_pred = best_model.predict(test)
5. Submission 파일 생성
submission = pd.DataFrame({
'id': range(len(test_pred)),
'target': test_pred
})
submission.to_csv('submission.csv', index=False)
728x90
반응형
'취업' 카테고리의 다른 글
[면접준비] 컴퓨터비전 면접준비 - 컴퓨터비전 1 (0) | 2024.05.18 |
---|---|
[면접준비] 컴퓨터비전 면접준비 - 컴퓨터비전 기본 (0) | 2024.05.13 |
[면접준비] 컴퓨터비전 면접 준비 - 딥러닝 (0) | 2024.05.11 |
[면접준비] 컴퓨터비전 면접 준비 - 머신러닝 (0) | 2024.05.11 |
[면접준비] 컴퓨터비전 면접 준비 - 선형 대수 & 확률 통계 (0) | 2024.05.10 |
728x90
데이터 분석 과제테스트의 일반적인 특징과 준비 방법
- 보통 두 가지 유형의 문제로 구성됩니다. 첫 번째는 데이터를 가공하는 것, 두 번째는 머신러닝 모델링입니다.
- 데이터 가공 문제의 경우, 기본적인 데이터 처리부터 텍스트 형태로 주어진 데이터에서 특정 정보를 추출하는 등 다양한 유형이 나오니 최대한 많은 유형을 경험해보는게 좋은 것 같습니다.
- 모델링 문제는 Kaggle이나 Dacon과 같은 데이터 분석 경진대회와 유사한 형태로 나옵니다. 정형 데이터 분류/회귀 경진대회를 연습해보면 많은 도움이 됩니다.
- 데이터 전처리부터 모델링, csv 파일 형태로 제출까지 모든 과정을 알고 있어야합니다. 여기에 모델 튜닝, EDA를 통한 변수 선택/제거 등 성능 개선 방법을 잘 알고 있으면 좋습니다.
- 라이브러리도 기본적으로 암기하고 들어가는 것이 시간 절약에 도움이 됩니다! 회사마다 다르지만 검색을 허용하는 곳, 하지 않는 곳들이 있기 때문에 그냥 외우는게 마음이 편합니다.
- 일반적으로 환경은 JupyterNotbook으로 colab에서 사용하는 것과 동일합니다.
- EDA를 통해서 성능을 개선하고, 결측치, 이상치 처리할 때 기본적인 평균값, 중앙값 등인 방법 외에도 알고리즘을 활용한 방법 등 성능을 높일 수 있는 방법은 최대한 알고 가는게 좋습니다.
모델링 문제 기본 구성
1. 데이터 불러오기
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
# 데이터 로드
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
2. 타겟 변수 분리
# 타겟 변수 분리
X = train.drop('target', axis=1)
y = train['target']
3. 데이터 전처리
- 평균, 최빈값, 중앙값 모든 경우를 알고 있으면 좋아요.
# 결측치 처리
# 수치형 변수는 평균값으로 대체
numeric_columns = X.select_dtypes(include=['int64', 'float64']).columns
for col in numeric_columns:
X[col] = X[col].fillna(X[col].mean())
test[col] = test[col].fillna(test[col].mean())
# 범주형 변수는 최빈값으로 대체
categorical_columns = X.select_dtypes(include=['object']).columns
for col in categorical_columns:
X[col] = X[col].fillna(X[col].mode()[0])
test[col] = test[col].fillna(test[col].mode()[0])
# 이상치 처리 (IQR 방식)
for col in numeric_columns:
Q1 = X[col].quantile(0.25)
Q3 = X[col].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
X[col] = np.clip(X[col], lower_bound, upper_bound)
test[col] = np.clip(test[col], lower_bound, upper_bound)
# 범주형 변수 인코딩
le = LabelEncoder()
for col in categorical_columns:
X[col] = le.fit_transform(X[col])
test[col] = le.transform(test[col])
4.모델링 및 튜닝
분류 문제
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
# 모델 학습 및 튜닝
rf = RandomForestClassifier()
param_grid = {
'n_estimators': [100, 200],
'max_depth': [10, 20],
'min_samples_split': [2, 5],
'min_samples_leaf': [1, 2]
}
# GridSearchCV로 최적 파라미터 탐색
grid_search = GridSearchCV(rf, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)
# 최적 모델 선택
best_model = grid_search.best_estimator_
# 예측 및 성능 평가
val_pred = best_model.predict(X_val)
test_pred = best_model.predict(test)
회귀 경우
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
# 모델 학습 및 튜닝
rf = RandomForestRegressor()
param_grid = {
'n_estimators': [100, 200],
'max_depth': [10, 20],
'min_samples_split': [2, 5],
'min_samples_leaf': [1, 2]
}
# GridSearchCV로 최적 파라미터 탐색
grid_search = GridSearchCV(rf, param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(X_train, y_train)
# 최적 모델 선택
best_model = grid_search.best_estimator_
# 예측 및 성능 평가
val_pred = best_model.predict(X_val)
test_pred = best_model.predict(test)
5. Submission 파일 생성
submission = pd.DataFrame({
'id': range(len(test_pred)),
'target': test_pred
})
submission.to_csv('submission.csv', index=False)
728x90
반응형
'취업' 카테고리의 다른 글
[면접준비] 컴퓨터비전 면접준비 - 컴퓨터비전 1 (0) | 2024.05.18 |
---|---|
[면접준비] 컴퓨터비전 면접준비 - 컴퓨터비전 기본 (0) | 2024.05.13 |
[면접준비] 컴퓨터비전 면접 준비 - 딥러닝 (0) | 2024.05.11 |
[면접준비] 컴퓨터비전 면접 준비 - 머신러닝 (0) | 2024.05.11 |
[면접준비] 컴퓨터비전 면접 준비 - 선형 대수 & 확률 통계 (0) | 2024.05.10 |