모델의 품질은 데이터의 품질에 의존합니다. “Garbage In, Garbage Out”이라는 원칙을 항상 기억해야 합니다.
Copy
import pandas as pd# CSV 파일에서 데이터 로드df = pd.read_csv("data/customer_data.csv")# 기본 정보 확인print(f"데이터 크기: {df.shape}") # (행 수, 열 수)print(f"결측치 현황:\n{df.isnull().sum()}")print(f"데이터 타입:\n{df.dtypes}")
import pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltdf = pd.read_csv("data/housing.csv")# 수치형 변수 기술통계print(df.describe())# 타겟 변수 분포 확인sns.histplot(df["price"], bins=50, kde=True)plt.title("주택 가격 분포")plt.xlabel("가격")plt.ylabel("빈도")plt.show()# 상관관계 히트맵sns.heatmap(df.corr(numeric_only=True), annot=True, cmap="coolwarm")plt.title("변수 간 상관관계")plt.show()
from sklearn.ensemble import RandomForestClassifierfrom sklearn.linear_model import LogisticRegressionfrom sklearn.svm import SVC# 여러 모델을 후보로 준비models = { "로지스틱 회귀": LogisticRegression(max_iter=1000), "랜덤 포레스트": RandomForestClassifier(n_estimators=100, random_state=42), "SVM": SVC(kernel="rbf", random_state=42),}# 각 모델 학습 및 기본 점수 확인for name, model in models.items(): model.fit(X_train, y_train) score = model.score(X_test, y_test) print(f"{name}: {score:.4f}")
import joblib# 모델 저장joblib.dump(best_model, "model/classifier_v1.joblib")joblib.dump(scaler, "model/scaler_v1.joblib")joblib.dump(imputer, "model/imputer_v1.joblib")# 모델 로드 및 추론loaded_model = joblib.load("model/classifier_v1.joblib")loaded_scaler = joblib.load("model/scaler_v1.joblib")# 새 데이터에 대한 예측new_data_scaled = loaded_scaler.transform(new_data)predictions = loaded_model.predict(new_data_scaled)