개vs고양이 분류기 만들기(간편.ver)

2020. 12. 21. 02:12·머신러닝-딥러닝/Kaggle
from PIL import Image 
#Python Image Library를 통해 Image를 열어볼 수 있는 기회를 갖자! 이미지 크기도 보고, 어떻게 생겼나도 확인
Image.open('') 
import glob #glob() 함수는 경로에 대응되는 모든 파일 및 디렉터리의 리스트를 반환합니다
train=pd.DataFrame({'path':glob.glob('')}) 
#glob에서 파일을 어떻게 반환할건지=> /*로 파일명으로 라벨이 구분되어있는지 /*/*로 폴더명으로 라벨이 구분되어있는지 확인
pd.options.display.max_coldwidth=999 #너무 작으면 늘려줘
train 
train['target']=train['path'].apply(lambda x:x.split...)
#target 프레임도 만들어준다. target이 라벨임
from sklearn.model_selection import train_test_split
x_train,x_valid=train_test_split(train,test_size=0.2,random_state=42,stratify=train['target'])
#random_state 는 항상 그 이미지가 그 라벨로 나오게 고정해주는것, stratify는 원본데이터의 클래스 비율유지하는것
from keras.preprocessing.image import ImageDataGenerator
idg=ImageDataGenerator(horizontal_fliip=True)
#좌우반전, 한번 에폭 돌 때 마다 10,000개의 데이터가 들어온다고 하면, 50퍼센트의 확률로 이미지가 좌우반전이 된다. 
#그 중 5000개 그냥 바뀌는거, 그래서 에폭을 한번만 하면 안되고 최대한 늘려줘야한다. 이미지가 추가되는게아님

train_gen=idg.flow_from_dataframe(x_train,x_col='path',y_col='target',target_size=(100,100),batch_size=256)
#batch_size 한번 가중치를 업데이트할 때 마다 256개씩 한 뭉텅이로 함.
valid_gen=idg.flow_from_dataframe(x_valid,x_col='path',y_col='target',target_size=(100,100),batch_size=256)

#test
test=pd.DataFrame({'path':glob.glob('../input/state-farm-distracted-driver-detection/imgs/test/*')})
test
test_gen=idg.flow_from_dataframe(test,x_col='path',y_col=None,target_size=(100,100),class_mode=None,shuffle=False,batch_size=256)
#원래 class_mode가 categorical이 되어있음, 그걸 None으로 변환 - if class_mode is "categorical" (default value) it must include
the y_col column with the class/es of each image 즉 categorical로 되어있으면 y값이 있어야되는데 우린 없어서 안됨
#shuffle=None은 shuffle을 true로 하면 데이터가 제출을 할 때 섞이게 된다. 그럼 그 번호에 해당하는 이미지와 그 번호에 해당하는 라벨값이 섞여서 안맞게 됨.

from tensorflow.keras import Sequential
from tensorflow.keras.layers import *
from tensorflow.keras.applications.efficientnet import EfficientNetB0 
# 숫자가 올라갈수록 복잡해지고, 잘 나올 가능성이 높아짐

eb0=EfficientNetB0(include_top=False,pooling='avg')
#include_top은 출력층임, 출력층을 없애줘야됨. 이게 그대로 있으면 (True면) 밑에 softmax부분이 반복됨. avg는 얘가 flatten도 시켜줌
model.add(eb0)
model.add(Dense(10,activation='softmax'))
#마지막 출력층도 없고, softmax부분도 없어서 Dense로 만들어주고 (fully-connected) 출력층이 클래스의 개수만큼 나올 수 있게 해준다.
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['acc'])
#loss='binary_crossentropy'가 들어갈 수 도있다.Sigmoid activation으로 대신 바꿔줘야겠지?
result=model.predict(test_gen,verbose=1)
#verbose = 학습 중 출력되는 문구를 설정합니다.
#- 0 : 아무 것도 출력하지 않습니다.
#- 1 : 훈련의 진행도를 보여주는 진행 막대를 보여줍니다.
#- 2 : 미니 배치마다 손실 정보를 출력합니다.
result=pd.DataFrame(result,coulmns=train['target'].unique())
#result로 dataframe을 만든다. 열은 target 값임 클래스별로 열을 만들고, unique()는 특정칼럼에 접근해서, 거기 종류별로 만듬
#알파벳 순이기 때문에 cat이 왼쪽이고 dog가 오른쪽 순임. 
sub=pd.read_csv('')
sub['id']=test['path']
sub['id']=sub['id'].apply(lambda x:x.split(''[])
#데이터 프레임 생성
sub['label']=result[:,0]
sub
#모든 데이터의 0번째, 즉 첫번째 값이 'label'에 들어감. 즉 cat일 확률이 들어가는거임
sub.to_csv('sub.csv',index=0)
#sub을 csv파일 파일명이 sub인걸로 만듬 index는 머냐..
display(sub,test)
#sub과 test가 나오겠지 이건 실행해봐야알듯

 

1

 

'머신러닝-딥러닝 > Kaggle' 카테고리의 다른 글

1주차 머신러닝  (0) 2021.01.22
9주차 review  (0) 2021.01.14
7주차 review  (0) 2020.12.28
CNN 성능 향상시키기 (6시차-review)  (0) 2020.12.22
5주차 과제_정리 #axis, #state_farm(kaggle)  (0) 2020.12.22
'머신러닝-딥러닝/Kaggle' 카테고리의 다른 글
  • 9주차 review
  • 7주차 review
  • CNN 성능 향상시키기 (6시차-review)
  • 5주차 과제_정리 #axis, #state_farm(kaggle)
복복씨
복복씨
  • 복복씨
    정리노트
    복복씨
  • 전체
    오늘
    어제
    • 분류 전체보기 (115)
      • 개발새발자 (20)
        • 의 삶 (6)
        • 의 회고 (9)
        • 의 낙서장 (5)
        • 영어 (0)
      • Flutter (37)
        • 새싹 (5)
        • Dart (8)
        • Flutter (13)
        • iOS 에서 Flutter 로 전환하며 (2)
        • 챗지피티랑놀.기 (3)
        • 하루 한 입 플러터 (2)
      • CS (7)
        • 짤막지식 (6)
      • IOS (6)
        • Swift (0)
        • UIKit (1)
        • SwitUI (4)
      • 머신러닝-딥러닝 (28)
        • 논문리뷰 (3)
        • study (16)
        • Kaggle (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    핫 리로드
    시그널링데이터
    부트캠프
    dart
    테킷
    iOS 개발자
    FLUTTER
    flutter lottie
    swiftui 플러터
    initState()
    IOS
    한주 회고
    용산캠
    코드 결합도
    깊은참조
    Flutter Lifecycle
    플러터 새싹
    새싹 플러터
    정말 최고의 유튜바
    사그널링서버
    부트캠프 떠돌이
    새싹 용산
    flutter 애니메이션
    새싹
    멋쟁이 사자처럼
    테킷 앱스쿨
    플러터 di
    왜 글쓸 때랑 글쓴 후랑 코드 색감이 다르게 나오지?
    getit
    플러터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
복복씨
개vs고양이 분류기 만들기(간편.ver)
상단으로

티스토리툴바