2018 동계 머신러닝 세미나
IVIS wiki
- 주제 : 하계 세미나 때 배운 내용을 바탕으로 kaggle dataset을 활용하여 데이터 분석을 해보자.
- 목표 : kaggle dataset을 활용하여 각자 모델링을 해보자
- 기간 : 총 6주, 12월 26일 ~ 19년 1월 30일 / 매주 수요일 18:30 ~ 20:00
- 장소 : 51310 강의실
- 참고 서적(밑바닥부터 시작하는 딥러닝) : http://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198
- 참고 강의(모두의 딥러닝 - Sung Kim) : https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm
- keynote / ppt 템플릿 :
- 세미나 목차
- 1주차 캐글 소개 및 머신러닝 환경을 구축해봅니다.
- 아나콘다 및 주피터 노트북 설치 : https://www.youtube.com/watch?v=8oaOE9LXY4w
- 주피터 노트북 사용법 : https://www.youtube.com/watch?v=SLPo0o_HArs
- 1주차 캐글 소개 및 머신러닝 환경을 구축해봅니다.
2019년도 모바일 엑스 동아리 기계학습 세미나 1주차 자료 : 파일:2019 MobileX ML ch01 sem01(머신러닝환경구축).key.zip
# Jupiter Tutorial ## 1.What is Jupyter Notebook? ## 2.Live Code Example ## 3.Equation ## 4.Visualization ### 4.1 image ### 4.2 video ### 4.3 table ### 4.4 chart ## 5.Performance check
1. What is Jupiter Notebook? The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and explanatory text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, machine learning and much more.
2. Live Code Example 3+4 def add(a,b): return a+b add(3,4)
3. Equation #sqrt(x^2+y^2+z^2) This expression $\sqrt{x^2 + y^2 + z^2}$ is an example of a TeX inline equation [More Examples click here](http://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Typesetting%20Equations.html)
4. Image from IPython.display import Image Image (url="http://localhost:8888/static/base/images/logo.png?v=641991992878ee24c6f3826e81054a0f",width=200,height=50)
Video from IPython.display import YouTubeVideo YouTubeVideo ('vJwrhhL5f8Y')
Table import pandas as pd url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv" pd.read_csv(url, nrows=10)
Chart import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('result') plt.show()
5. Performance check %timeit 3+4 %tiemit add(3,4) %%timeit a=[1,2,3] a=[x+1 for x in a] %%timeit b=[1,2,3] for i in range(len(b)): b[i]= b[i]+i
- 2~4주차 : 타이타닉 데이터 셋 활용
- 코드를 분석하며 배웠던 이론과 실제 어떤 코드를 쓰는지 접목하며 진행합니다.
- 2주차 : 타이타닉 데이터 셋 활용 강의 1
- 데이터 분석 : https://www.youtube.com/watch?v=aqp_9HV58Ls
- 타이타닉 문제 링크: https://www.kaggle.com/c/titanic
- 타이타닉 dataset: 파일:Input.zip
import pandas as pd train = pd.read_csv('input/train.csv') test = pd.read_csv('input/test.csv')
import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns sns.set() # setting seaborn default for plots
def bar_chart(feature) : survived = train[train['Survived']==1][feature].value_counts() dead = train[train["Survived"]==0][feature].value_counts() df = pd.DataFrame( [survived, dead] ) df.index = [ 'Survived', 'Dead' ] df.plot(kind='bar', stacked=True, figsize=(10, 5))
- 발표자료
- 소스 코드 : 파일:Untitled.ipynb.zip
- 발표 ppt : 파일:데이터 분석.key.zip
- 발표자료
- 3주차 : 타이타닉 데이터 셋 활용 강의 2
- Feature Engineering : https://www.youtube.com/watch?v=nXFXAxfdIls
- 발표자료
- 소스 코드 : 파일:MachineLearning.zip
- 발표 자료 : 파일:Feature Engineering.pdf
- 4주차 : 타이타닉 데이터 셋 활용 강의 3
- modeling, validation, testing : https://www.youtube.com/watch?v=FAP7JOECfEE
- 발표자료
- 발표 ppt : 파일:타이타닉(수정).zip
- 소스 코드 : 파일:Untitled3.ipynb.zip
Pclass1 = train[train['Pclass']==1]['Embarked'].value_counts() Pclass2 = train[train['Pclass']==2]['Embarked'].value_counts() Pclass3 = train[train['Pclass']==3]['Embarked'].value_counts() df = pd.DataFrame([Pclass1, Pclass2, Pclass3]) df.index = ['1st class','2nd class', '3rd class'] df.plot(kind='bar',stacked=True, figsize=(10,5))
for dataset in train_test_data: dataset['Embarked'] = dataset['Embarked'].fillna('S')
embarked_mapping = {"S": 0, "C": 1, "Q": 2} for dataset in train_test_data: dataset['Embarked'] = dataset['Embarked'].map(embarked_mapping)
train["Fare"].fillna(train.groupby("Pclass")["Fare"].transform("median"), inplace=True) test["Fare"].fillna(test.groupby("Pclass")["Fare"].transform("median"), inplace=True) train.head(50)
facet = sns.FacetGrid(train, hue="Survived",aspect=4) facet.map(sns.kdeplot,'Fare',shade= True) facet.set(xlim=(0, train['Fare'].max())) facet.add_legend()
for dataset in train_test_data: dataset.loc[ dataset['Fare'] <= 17, 'Fare'] = 0, dataset.loc[(dataset['Fare'] > 17) & (dataset['Fare'] <= 30), 'Fare'] = 1, dataset.loc[(dataset['Fare'] > 30) & (dataset['Fare'] <= 100), 'Fare'] = 2, dataset.loc[ dataset['Fare'] > 100, 'Fare'] = 3
Pclass1 = train[train['Pclass']==1]['Cabin'].value_counts() Pclass2 = train[train['Pclass']==2]['Cabin'].value_counts() Pclass3 = train[train['Pclass']==3]['Cabin'].value_counts() df = pd.DataFrame([Pclass1, Pclass2, Pclass3]) df.index = ['1st class','2nd class', '3rd class'] df.plot(kind='bar',stacked=True, figsize=(10,5))
cabin_mapping = {"A": 0, "B": 0.4, "C": 0.8, "D": 1.2, "E": 1.6, "F": 2, "G": 2.4, "T": 2.8} for dataset in train_test_data: dataset['Cabin'] = dataset['Cabin'].map(cabin_mapping)
train["Cabin"].fillna(train.groupby("Pclass")["Cabin"].transform("median"), inplace=True) test["Cabin"].fillna(test.groupby("Pclass")["Cabin"].transform("median"), inplace=True)
facet = sns.FacetGrid(train, hue="Survived",aspect=4) facet.map(sns.kdeplot,'FamilySize',shade= True) facet.set(xlim=(0, train['FamilySize'].max())) facet.add_legend() plt.xlim(0)
family_mapping = {1: 0, 2: 0.4, 3: 0.8, 4: 1.2, 5: 1.6, 6: 2, 7: 2.4, 8: 2.8, 9: 3.2, 10: 3.6, 11: 4} for dataset in train_test_data: dataset['FamilySize'] = dataset['FamilySize'].map(family_mapping)
features_drop = ['Ticket', 'SibSp', 'Parch'] train = train.drop(features_drop, axis=1) test = test.drop(features_drop, axis=1) train = train.drop(['PassengerId'], axis=1) train_data = train.drop('Survived', axis=1) target = train['Survived']
from sklearn.neighbors import KNeighborsClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC import numpy as np
from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score k_fold = KFold(n_splits=10, shuffle=True, random_state=0)
clf = KNeighborsClassifier(n_neighbors = 13) scoring = 'accuracy' score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring) print(score)
clf = DecisionTreeClassifier() scoring = 'accuracy' score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring) print(score)
clf = RandomForestClassifier(n_estimators=13) scoring = 'accuracy' score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring) print(score)
clf = GaussianNB() scoring = 'accuracy' score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring) print(score)
clf = SVC() scoring = 'accuracy' score = cross_val_score(clf, train_data, target, cv=k_fold, n_jobs=1, scoring=scoring) print(score)
clf = SVC() clf.fit(train_data, target) test_data = test.drop("PassengerId", axis=1).copy() prediction = clf.predict(test_data)
submission = pd.DataFrame({ "PassengerId": test["PassengerId"], "Survived": prediction }) submission.to_csv('submission.csv', index=False)
- 5주차 : 데이터 셋 설정 및 모델링에 필요한 알고리즘 복습
- 노트북 파일 : 파일:Titanic-ensemble-prac.ipynb.zip
- 데이터 : 파일:Input.zip
- 6주차 캐글에 제출 후 발표 및 비교하는 시간을 가져봅니다.
- 노트북 파일 : 파일:Titanic-ensemble-prac.ipynb.zip
- 7주차 모델링 알고리즘
- keynote 파일 : 파일:2019 MobileX ML week7 sem0.zip
- 5주차 : 데이터 셋 설정 및 모델링에 필요한 알고리즘 복습