-
Colab을 활용해서 정형데이터 딥러닝으로 예측모델 만들기딥러닝/Colab을 활용한 정형데이터 & 딥러닝 2023. 4. 13. 14:53
Colab에 접속하여 Google drive mount 한다.
파일 -> 새노트
하기의 구글드라이브 마운트 버튼을 클릭하여 구글드라이브 마운팅한다.
sample_data 폴더 상위에 drive가 하나 더 생성된것을 알 수 있다.
MyDrive는 이제 내 로컬 또는 클라우드의 구글드라이브의 위치이니 해당위치에 csv파일 등 필요한 데이터를 옮겨서 사용하면 된다.
이때 딥러닝을 사용하고자 하니 GPU로 연산방법 변경이 필요하다.
위와 같이 런타임 -> 런타임 유형 변경에서
하드웨어 가속기 - GPU 변경 후 저장(클라우드에서 GPU를 사용하는것이므로 내컴퓨터 사양과는 무관하다)
from google.colab import drive drive.mount('/content/drive/') # google drive mount하기 위함 path = '/content/drive/MyDrive/Colab Notebooks/004_jeon_bok/' # 위경로는 본인의 예시이고 사용자마다 경로를 별도로 해보고 지정해주어야함 '/004_jeon_bok/'는 임의로 설정된 경로임 train = pd.read_csv(path + 'train.csv') # 일반적으로 데이터 불러오고 최종적으로 전처리한 데이터를 X_train, y_train 나눈다. # y값이 Target 컬럼일 경우 X_train = train.drop("Target" , axis = 1) y_train = train["Target"] test = pd.read_csv(path + "test.csv") X_test = test # 위코드는 전처리가 반영안된것이므로 전처리를 꼭 한 후에 마지막에 데이터를 분리하는것을 추천 # train , test는 동일한 전처리가 반영되어야함
1) 회귀분석일 경우 : 딥러닝 구조를 간략히 선언하고 예측하는 결과를 도출한다.
from tensorflow.keras.layers import * from tensorflow.keras.models import * from tensorflow.keras.optimizers import * from tensorflow.keras.callbacks import * ## 딥러닝 keras 모듈 추가 # 1) 회귀분석일 경우 하기와 같이 # # # input_dim 의 값은 feature 즉 X_train ,X_test 컬럼 갯수와 동일 model = Sequential() model.add(Dense(16, input_dim=11, activation='elu')) model.add(Dense(32, activation='elu')) model.add(Dense(64, activation='elu')) model.add(Dropout(0.5)) model.add(Dense(32, activation='elu')) model.add(Dense(16, activation='elu')) model.add(Dense(1)) model.compile(loss='mean_absolute_error', optimizer='Nadam', metrics=['mae']) model.fit(X_train, y_train, validation_split=0.3, epochs=500, batch_size=32, verbose=1) pred = model.predict(X_test).flatten() # pred가 최종 예측 결과임
2) 분류 분석 : Binary Classification(0,1 두개 비교)
# 2) 분류 분석(binary classification)인 경우 # # # input_dim 의 값은 feature 즉 X_train ,X_test 컬럼 갯수와 동일 model = Sequential() model.add(Dense(16, input_dim=11, activation='elu')) model.add(Dense(32, activation='elu')) model.add(Dense(64, activation='elu')) model.add(Dropout(0.5)) model.add(Dense(32, activation='elu')) model.add(Dense(16, activation='elu')) model.add(Dense(1,activation = 'sigmoid')) model.compile(loss='binary_crossentropy', optimizer='Nadam', metrics=['accuracy']) model.fit(X_train, y_train, validation_split=0.3, epochs=500, batch_size=32, verbose=1) pred = model.predict(X_test).flatten() # pred가 최종 예측 결과임
3) 분류 분석 : Multi classification
# 3) 분류 분석(multi classification)인 경우 # # # input_dim 의 값은 feature 즉 X_train ,X_test 컬럼 갯수와 동일 model = Sequential() model.add(Dense(16, input_dim=11, activation='elu')) model.add(Dense(32, activation='elu')) model.add(Dense(64, activation='elu')) model.add(Dropout(0.5)) model.add(Dense(32, activation='elu')) model.add(Dense(16, activation='elu')) model.add(Dense(10,activation = 'softmax')) # 바로 위 숫자 갯수가 y값의 unique 갯수입니다. 10이면 10개로 분류 현재 10개인 값 model.compile(loss='sparse_categorical_crossentropy', optimizer='Nadam', metrics=['accuracy']) model.fit(X_train, y_train, validation_split=0.3, epochs=500, batch_size=32, verbose=1) ## 오래걸리면 epochs는 100 이하로 조정 pred = model.predict(X_test).flatten() # pred가 최종 결과임
머신러닝 모델과 앙상블해서 사용하면 높은 scoring을 얻을 수 있다.