구름 실습환경 클릭
내부 함수 목록 확인 및 사용법
dir을 통해 사용 가능한 함수 확인
import pandas as pd
print(dir(pd))
#데이터 프레임에서 할 수 있는 것들은?
print(dir(pd.DataFrame))
help을 통해 사용법 확인
#데이터 프레임에서 결측치 drop을 어떻게 사용했더라?
print(help(pd.DataFrame.drop))
#원핫인코딩 어떻게 사용했더라?
import pandas as pd
print(help(pd.get_dummies))
#sklearn까지만 외워주세요 :)
import sklearn
print(sklearn.__all__)
전처리 무엇을 할 수 있지?
import sklearn.preprocessing
print(sklearn.preprocessing.__all__)
문제에서 민맥스스케일을 적용하라고 하네. 어떻게 사용하지?
import sklearn.preprocessing
print(help(sklearn.preprocessing.MinMaxScaler))
데이터를 나눠야 하는데 풀네임이 뭐더라?
#데이터를 트레인과 테스트로 나눠야할 떼 model_selection안에 있다는건 아셔야 해요^^
import sklearn.model_selection
print(sklearn.model_selection.__all__)
#어떻께 사용하더라??
import sklearn.model_selection
print(help(sklearn.model_selection.train_test_split))
#앙상블 모델 쓸래!
import sklearn.ensemble
print(sklearn.ensemble.__all__)
#랜덤포레스트 어떻게 썻더라?
import sklearn.ensemble
print(help(sklearn.ensemble.RandomForestClassifier()))
작업형2 코드 구조
#출력을 원하실 경우 print() 함수 활용
#예시) print(df.head())
#getcwd(), chdir() 등 작업 폴더 설정 불필요
#파일 경로 상 내부 드라이브 경로(C: 등) 접근 불가
#데이터 파일 읽기 예제
import pandas as pd
X_test = pd.read_csv("./data/X_test.csv", encoding='euc-kr')
X_train = pd.read_csv("./data/X_train.csv", encoding='euc-kr')
y_train = pd.read_csv("./data/y_train.csv", encoding='euc-kr')
사용자 코딩
#eda
pd.set_option('display.max_columns', 100)
print("===============head===============")
print(X_test.head(3))
print(X_train.head(3))
print(y_train.head(3))
print("===============shape===============")
print(X_test.shape)
print(X_train.shape)
print(y_train.shape)
print("===============describe===============")
print(X_test.describe())
print(X_train.describe())
print(y_train.describe())
print("===============info===============")
print(X_test.info())
print(X_train.info())
print(y_train.info())
#결측치
print("===============isnull().sum()===============")
print(X_test.isnull().sum())
print(X_train.isnull().sum())
print(y_train.isnull().sum())
X_test['환불금액'] = X_test['환불금액'].fillna(0)
X_train['환불금액'] = X_train['환불금액'].fillna(0)
print("===============isnull().sum()===============")
print(X_test.isnull().sum())
print(X_train.isnull().sum())
print(y_train.isnull().sum())
print("===============데이터합치기===============")
X = pd.concat([X_train, X_test])
print(X.shape)
#원핫인코딩
print("===============원핫인코딩===============")
obj_var = ['주구매상품','주구매지점']
X = pd.get_dummies(X, columns=obj_var)
print("===============데이터다시분리===============")
X_train = X[:X_train.shape[0]].copy()
X_test = X[X_train.shape[0]:].copy()
print(X_train.shape)
print(X_test.shape)
#minmaxscale
print("===============minmaxscale===============")
num_var = ['총구매액','최대구매액','환불금액']
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train[num_var] = scaler.fit_transform(X_train[num_var])
X_test[num_var] = scaler.transform(X_test[num_var])
print(X_train[num_var].head())
print(X_test[num_var].head())
#print(help(MinMaxScaler))
print("===============열꺼내기===============")
X_train_id = X_train.pop('cust_id')
X_test_id = X_test.pop('cust_id')
y_train_id = y_train.pop('cust_id')
#데이터분리
print("===============데이터분리===============")
from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)
print(X_train.shape)
print(X_val.shape)
print(y_train.shape)
print(y_val.shape)
#print(help(train_test_split))
#모델학습
print("===============모델학습===============")
import sklearn.ensemble
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=500, max_depth=10, random_state=0)
model.fit(X_train, y_train)
print(model.score(X_train, y_train))
print("===============검증예측===============")
#print(model.score(X_est, y_test))
pred = model.predict_proba(X_val)
print(pred[:,1][:10])
#평가하기
print("===============평가하기===============")
from sklearn.metrics import roc_auc_score
print(roc_auc_score(y_val['gender'], pred[:,1]))
#예측하기
print("===============테스트예측===============")
pred = model.predict_proba(X_test)
#제출하기
pd.DataFrame({'cust_id': X_test_id, 'gender': pred[:,1]}).to_csv('003000000.csv', index=False)
test = pd.read_csv('003000000.csv')
print(test.shape)
print(test.head())
#답안 제출 참고
#아래 코드 예측변수와 수험번호를 개인별로 변경하여 활용
#pd.DataFrame({'cust_id': X_test.cust_id, 'gender': pred}).to_csv('003000000.csv', index=False)