캐글 - 타이타닉 생존자 예측하기 [3/3] - modeling, validation, testing

Поделиться
HTML-код
  • Опубликовано: 20 сен 2024
  • github.com/min...
    타이타닉 예제의 마지막 영상입니다. 이전 비디오에서 만들어진 Feature Vectors를 kNN, decision tree, random forest, naive bayes, SVM 모델에 k-Fold 방법으로 cross validation 하여 가장 정확도가 높은 모델을 선택하여 테스팅을 돌린 후 캐글에 제출합니다.
    제가 만든 모든 머신러닝 관련 영상은 아래 재생목록에서 쉽게 찾으실 수 있습니다.
    • 머신러닝

Комментарии • 61

  • @coohde
    @coohde 4 года назад +9

    정말 잘 봤습니다. 덕분에 많은 것을 배웠습니다. 고맙습니다.

    • @TheEasyoung
      @TheEasyoung  4 года назад +2

      도움이 되었다니 제가 더 기쁘네요. 감사합니다.

  • @박기묵-i7v
    @박기묵-i7v 10 месяцев назад

    천천히 잘 알려주셔서 큰 도움이 됐습니다! 감사해요 ~

  • @효캉
    @효캉 Год назад +1

    캐글 데이터로 프로젝트까지 진행하는법을 몰랐는데, 강의를 보면서 따라하기 쉬웠고 학습도 너무 좋았습니다!
    앞으로도 좋은자료 많이 올려주시면 감사하겠습니다!

  • @user-zg8ue4gh9m
    @user-zg8ue4gh9m 3 года назад +2

    강의가 참 깔끔하고, 핵심을 잘 짚어주시는 것 같아요! 감사합니다

  • @K코
    @K코 6 лет назад +4

    좋은 강의 정말 감사합니다! 설명도 정말 쉽게 되어 단번에 이해할 수 있었고, data에 대한 Insight를 얻을 수 있어 좋았습니다. 양질의 강의에 다시 한 번 감사드립니다~

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      구자성 감사합니다, 덕분에 저도 힘이 듬뿍 나네요!

  • @sangwooklee8449
    @sangwooklee8449 6 лет назад +1

    드디어 올라왔네요~ 너무 유용한 강의였습니다~~ 늘 감사드립니다~~

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      Sang Wook Lee 감~사합니다!

  • @junseonglee201
    @junseonglee201 5 лет назад +3

    너무나 좋은 강의 감사드립니다! 학원도 다녀보고 kernel도 찾아봤는데 여전히 막막했지만 허민석님 덕분에 처음으로 submission도 해보네요 ㅎㅎ 이 외 영상들도 참고하면서 정말 많은 도움이 되었습니다. 감사합니다!

  • @지현-s2i
    @지현-s2i 2 года назад

    머신러닝에 대한 개념이 잘 잡히지 않았는데 덕분에 많은 도움이 되었습니다! 좋은영상 감사드립니다!!

  • @minimanimo2817
    @minimanimo2817 2 года назад +1

    좋은 강의 정말 감사합니다! 다른 동영상들도 정주행하겠습니다 >

  • @이건영-p9p
    @이건영-p9p 5 лет назад +1

    좋은 강의 감사합니다. 덕분에 너무 재미있데 머신러닝을 공부하고 있습니다. 하지만.. 많이 어렵네요.. ^^ 제가 너무 기초를 몰라서 드리는 질문일수도 있지만...
    위 강의에서처럼 SVM에서 accuracy가 제일 높아서 그걸 통해 PassengerId의 Survived여부를 submission 하셨는데요.
    결과적으로 Pclass, Sex, Age, Fare, Cabin, Embarked, Title, FamilySize 라는
    features가 각각 어떤 조건일때 Survived여부를 판단하고 있는지를 어떻게 알 수 있을까요?

    • @TheEasyoung
      @TheEasyoung  5 лет назад

      이건영 의사결정트리의 경우 특징별로 각각 어떤 조건일 때 survive 여부를 트리 시각화를 통해 쉽게 알 수 있습니다. svm 같은 경우 특징 세개 또는 두개별로 시각화 하실 수 있지만 이러한 조합으로 이런 결과를 얻었다를 알기 쉽지 않습니다.

    • @이건영-p9p
      @이건영-p9p 5 лет назад

      @@TheEasyoung 빠른 답변 감사합니다. 많은 도움이 될 것 같습니다. 즐거운 연휴 보내시구요.. (--)(__)

  • @suntacklim1273
    @suntacklim1273 2 года назад

    4:36 머신러닝에 주짓수에 mma.. 못하는게 없으시군요

  • @박경호-s4f
    @박경호-s4f 3 года назад +1

    도움 많이 되었습니다 감사합니다.
    판다스에 대한 기초를 다지고 나서 다시 시청해야할 것 같습니다! ㅎㅎ

  • @kyubonglee2661
    @kyubonglee2661 6 лет назад +2

    좋은 영상 올려주셔서 감사드립니다! 더불어 질문이 있는데요, 3:30 에 나오는 나이브베이즈 부분에서 P(survived l old, man) 의 뒤 수식은 어떻게 나오는건지 알 수 있을까요?~

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      안녕하세요. 조건부 확률 (conditional probability )과 베이지안 이론을 적용했습니다. old, man 을 old AND man으로 보시면 되겠습니다. 조건부 확률에 관련된 영상은 ruclips.net/video/hO9SVW6nnhM/видео.html
      베이지안 이론은 ruclips.net/video/3JWLIV3NaoQ/видео.html 을 보시면 이해되실 거 같아요.
      감사합니다.

  • @koreabigname
    @koreabigname 4 года назад +1

    좋은 강의 감사드립니다.

  • @jaesungsong4873
    @jaesungsong4873 6 лет назад +2

    항상 R로 하다가 파이선으로 처음 넘어왔는데 생소한 부분이 많지만 그래도 덕분에 잘 해결해 보았습니다. 계속 커리 따라가도록 하겠습니다 감사합니다!

  • @hooyounglee-z9f
    @hooyounglee-z9f 5 лет назад +2

    유익한 강의 감사합니다 ^^ 더 자주 올려주세요~

  • @권욱현-z1y
    @권욱현-z1y 3 года назад

    파이썬과 캐글을 활용하는 것은 처음인데, 정말 유익했습니다!
    제가 프로그램으로는 매트랩만 활용하였는데, 궁금한 점이 있어 댓글을 남깁니다.
    처음에 train.info로 확인하였을 때는 Embarked 889 non-null이 나오고,
    그 후에 train_test_data를 활용하여 Embarked missing 데이터에 'S'로 추가하고,
    그 뒤에 다시 train.info로 확인하였을 때는 Embarked 891 non-null로 나왔습니다.
    train_test_data에 train과 test를 합쳐 설정해준 것으로 생각이 되는데,
    후에 'S'를 추가하는 것이 어떻게 train 데이터에 역으로 추가가 되는지 궁금합니다!
    간단히 말씀드려, train이 아닌 train_test_data에 'S'를 추가해준 것인데
    이것이 역으로 어떻게 train에 추가된 것인지 궁금합니다!

  • @kazefi
    @kazefi 4 года назад +2

    변수들간의 자기상관성을 제거하면 더 좋을것같아요

  • @예광김-c2o
    @예광김-c2o 3 года назад +1

    잘봤습니다 감사합니다

  • @xodyd123123
    @xodyd123123 5 лет назад +1

    안녕하세요! 강의 잘들었습니다 ㅎㅎㅎ 다름이 아니라 이부분이 궁금해서 여쭈어 보고자 댓글남깁니다.
    for dataset in train_test_data:
    dataset['Title'] = dataset['Name'].str.extract(' ([A-Za-z]+)\.', expand=False)
    이부분에서 str.extract 튜플 안에있는 A-Za-z 는 이해 했는데
    +랑 백슬러쉬 그리고 온점을 찍은 의미와 expand=False 의 의미를 잘모르겠습니다 ㅠㅠㅠ
    책도 찾아보고 안나와서 송구스럽지만 댓글남깁니다. 좋은 강의 감사합니다!

    • @TheEasyoung
      @TheEasyoung  5 лет назад +1

      타이틀은 mr. mrs. 같이 점이 붙어있는 데 정규식에 이 점을 포함하기 위해 \.을 넣었어요. 그냥 . 을 넣을 경우 정규식은 .을 패턴 인식 스페셜 캐릭터로 인지하므로 \.으로 해서 점으로 인식하게 합니다. \은 에스케이프 용도로 사용되며 이번 예제와 같이 스페셜 캐릭터를 단순 캐릭터로 인지하기 위해 사용합니다. expand False는 데이터프레임이 아닌 시리즈 즉 컬럼으로 리턴받기 위해 사용합니다.

  • @elf7979
    @elf7979 6 лет назад +1

    강의 너무 잘 봤습니다.
    질문이 있어서요.
    생존자 예측 모델을 여러개 테스트 해서 SVM이 제일 우수하다라는 것을 알게 되었습니다.
    SVM 모델을 어떻게 이용하면 prediction과 실제결과가 나오는 비교할 수있나요?
    prediction이 지금 array인데 이걸 DF타입으로 바꿔서 train의 survived를 새로운 열로 붙이면 되는 걸까요?

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      제가 만든 주피터 노트북인데, 아래 링크 가셔서 최하단 부분의 코드를 활용하시면 될 거 같습니다.
      github.com/minsuk-heo/wikibooks_python_ml/blob/master/jupyter_notebook/svm_%EB%86%8D%EA%B5%AC%EC%84%A0%EC%88%98_%ED%8F%AC%EC%A7%80%EC%85%98_%EC%98%88%EC%B8%A1_%EC%8B%A4%EC%8A%B5.ipynb

    • @elf7979
      @elf7979 6 лет назад +1

      감사합니다.

  • @jobsub2613
    @jobsub2613 6 лет назад +1

    민석님, 질문입니다. k_fold = KFold(n_splits=10, shuffle=True, random_state=0) 에서요 "shuffle = True"로 하면 어떤 의미인가요? 혹시 매번 CV할때마다 Shuffle한다는 의미일까요? CV의 가장 주된 목적이 모든 데이터를 validation set으로 써서 accuracy variation을 줄인것으로 생각하면 CV로 쪼갤때 마다 Shuffle은 좀 아닌거 같은데요 ㅎㅎ 찾아봐도 그 의미가 잘 안나와서요. kfold 없이 그냥 cv = 10인거 계속 돌려도 같은 값이 나오네요 ㅎㅎ shuffle의미가 저에게 어렵습니다 ㅎㅎㅎ

    • @TheEasyoung
      @TheEasyoung  6 лет назад +1

      seongmin lee 안녕하세요, shuffle=True할 경우, k개로 데이터를 나누기 전에 단 한번 데이터를 뒤섞게 됩니다. 10개의 데이터가 생성된 후 라운드마다 인덱스 1부터 10까지 검증데이터로 사용하게 되어있어요. 셔플링은 k의 수에 상관없이 한번만 이루어집니다.

  • @elf7979
    @elf7979 6 лет назад +1

    여기 계속 여쭤봐도 되는지 모르겠네요.
    아래 댓글에 알려주신 링크를 참조해서 이렇게 작성을 해봤는데
    comparison = pd.DataFrame({'prediction':prediction, 'train':train['Survived']})
    comparison
    ValueError: array length 418 does not match index length 891 라는 에러가 떴어요.
    제가 뭔가 잘못 입력한 걸까요?

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      테스트 데이터의 갯수는 418개이고 트레이닝 데이터는 891개입니다. 'train':train['Survived'] 대신에 'test':test['Survived'] 쓰시면 해결될 거 같네요.

  • @joonsikwoo8856
    @joonsikwoo8856 6 лет назад +2

    좋은 강의 잘 보고 갑니다.. 감사^^

  • @heejoocho8428
    @heejoocho8428 6 лет назад +2

    좋은 강의 감사합니다 :D

  • @onkeunkwon2528
    @onkeunkwon2528 3 года назад +1

    감사합니니다..^^

  • @inseonchoi
    @inseonchoi 5 лет назад

    선댓글후감상입니다아아 감사합니다

  • @정진우-v7s
    @정진우-v7s 2 года назад

    ValueError: could not convert string to float: 'Braund, Mr. Owen Harris'
    이게 무슨 에러일가요..

  • @임페리얼
    @임페리얼 5 лет назад

    안녕하세요 다름이 아니라, 이해가 안가는 부분이 있어서요, 2개의 피처만 분석한다고 영상 초반에 설명 해주셨는데 코드부분에서는 어느 부분이 2개의 피처만 이용하겠다는 부분인가요?

  • @DongHwanYu
    @DongHwanYu 6 лет назад +1

    유용한 강의 감사합니다 :-)

  • @jobsub2613
    @jobsub2613 6 лет назад

    갑자기 너무 많은 질문을 드려 죄송합니다만 ㅎㅎㅎ KFold를 하는 이유가 seed 설정때문에 하는거죠? 그냥 cross_val_score(cv = 10)으로 해도 되는데 이러면 매번 값이 바뀌기 때문이죠? 그래서 cv = KFold로 설정하는거죠? 여기서 질문드립니다. 제가 최적화된 n_neighbor 값을 KNN모델에서 찾으려고 루프를 돌렸는데요, 뭐가 잘못되었는지 for문에서는 Kfold가 iterable하지 않다고 하네요... 이럴때 gridSearch를 해야하는지요? 두개 코드를 다 돌려보면 좀 결과가 다른데 이유가 무엇인지 좀 알 수 있을까요?
    [knn Parameter 찾기]
    neighbors = np.arange(1, 502, 5)
    #kfold = KFold(n_splits=5, random_state=123)
    score_list = []
    cv_score_list = []
    for n in neighbors:
    knn = KNeighborsClassifier(n_neighbors=n)
    knn.fit(X_train, y_train)
    score = knn.score(X_train, y_train)
    cv_score = cross_val_score(estimator=knn,
    scoring= 'accuracy',
    cv=5,
    X=X_train,
    y=y_train)
    score_list.append(score)
    cv_score_list.append(cv_score.mean())
    [Gridsearch해서 찾기]
    kfold = KFold(n_splits=5, random_state= 123)
    neighbors = np.arange(1, 502, 5)
    grid_param = {'n_neighbors':neighbors}
    knn = KNeighborsClassifier()
    grid = GridSearchCV(estimator=knn, param_grid = grid_param, cv= kfold, scoring='accuracy')
    grid_result = grid.fit(X_train, y_train)
    print(grid_result.best_score_)
    print(grid_result.best_params_)

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      cross_val_score(cv = 10) 은 kfold의 k=10과 동일합니다. scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html
      제가 kfold 를 쓴 별다른 이유는 없지만, kfold를 더욱 비디오에서 명시적으로 보여드릴 수 있어서 사용했어요.
      두번째 질문은 sklearn가 내부적으로 어떻게 작용하는 지 알아야 대답할 수 있을 것 같은데, 제가 거기까진 잘 모르겠네요. 제가 아는바로는 둘 다 stratified k-fold cross-validation를 사용하는 걸로 알고 있는데, 차이 나는 이유는 잘 모르겠습니다.

  • @김유빈-c2w
    @김유빈-c2w 2 года назад

    혹시 마지막 결과를 캐글말고 다른 곳에서 볼수있나요?

  • @김상진-j7p
    @김상진-j7p 6 лет назад +1

    In [77]에서 value error가 뜨는데 원인을 잘 모르겠습니다 ㅠㅠ 어떻게 해야 될까요? ㅠㅠ

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      error 가 뭐라고 뜨는 지 알려주시면 제가 도움을 드릴 수도 있겠네요.

    • @김상진-j7p
      @김상진-j7p 6 лет назад

      ValueError Traceback (most recent call last)
      in ()
      1 clf=KNeighborsClassifier(n_neighbors = 13)
      2 scoring= 'accuracy'
      ----> 3 score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring)
      4 print(score)...ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
      . . .

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      train data 에 NaN이 있는 지 확인해보셔야 할 것 같아요.train.info()에 NaN이 없나요?

    • @김상진-j7p
      @김상진-j7p 6 лет назад +1

      감사합니다 덕분에 원인을 찾아서 해결했습니다^^

    • @TheEasyoung
      @TheEasyoung  6 лет назад

      상진 김 잘해결하셔서 기뻐요!

  • @하희목
    @하희목 4 года назад +2

    존경하는 사람 : 허민석
    감사합니다.

  • @ksong5589
    @ksong5589 6 лет назад +1

    와우 감사합니다!!

  • @sunwooim1851
    @sunwooim1851 4 года назад

    안녕하세요. 혹시 강의에서 쓰인 테크닉 (for ~ 문자열에 각각 1,2,3 배정...) 과 라벨인코딩/원핫인코딩 을 사용하는것과의 차이점이 어떤게 있는지 궁금합니다. 혹시 성능등에 특별한 영향을 끼치기에 위와같은 테크닉을 사용하시는 건가요?

    • @TheEasyoung
      @TheEasyoung  4 года назад

      이건 간단한 예제라 대단한 의미는 없이 만들었습니다. 원 핫 인코딩의 경우 특징들간에 유사도가 아예 없어집니다. Integer encoding의 경우 가까운 숫자에 더 유사도가 생기게 됩니다.

  • @장재은-b6i
    @장재은-b6i 5 лет назад +1

    제출 결과에서 score가 test score이죠?

    • @TheEasyoung
      @TheEasyoung  5 лет назад

      네 맞아요!

    • @장재은-b6i
      @장재은-b6i 5 лет назад

      근데 test score가 training score보다 높게 나왔어요ㅜㅜ뭔가 잘못된거겠죠?

    • @TheEasyoung
      @TheEasyoung  5 лет назад

      training score가 높지 않을 것 같군요. 학습 데이터에 k fold 검증을 하여 validation 스코어를 확인하셔도 좋을 거 같습니다.