# AIVLE
CNN-5단계(roboflow 데이터셋 - YOLO8 모델)
ultralytics에서 제작한 Object Detection에 특화된 YOLO8n 모델을 사용할 것이다. 다양한 이미지 데이터셋을 제공하는 roboflow에서 데이터셋을 사용할 것이다. 데이터셋 코드는 원하는 데이터셋 페이지에서 복사해서 얻어오면 됨. roboflow에서 데이터셋 생성하는 방법은 강의자료ppt 참고. 뒤에 잘 나와있음. 1. 실습(데이터셋, 모델 1, 모델 2) > > > 2-1. 실습(예측 데이터가 여러개의 이미지인 경우) > 2-2. 실습(예측 데이터가 동영상인 경우) >
CNN-3단계(Checkpoint,Save,load / 구글 드라이브 연결)
1. Checkpoint/Save 가장 성능이 좋았던 학습된 모델을 저장할 수 있다. checkpoint의 경우, Earlystopping과 같은 단계에서 작성해준다. > 2. 구글 드라이브 연결 후 이미지 augmentation (colab) >
CNN-2단계(Data Augment)
지금까지는 tensorflow에서 제공된 이미지 데이터를 사용했는데, 실제 환경에서는 원하는 데이터를 충분히 확보하기는 힘들다. 그래서 필요한 방법이 데이터 증폭이다. 해당 방법은 제한된 데이터셋에 회전, 늘림, 방향 조정 등과 같이 조작을 하여, 많은 데이터셋을 확보하는 방법이다. Data Augment from tensorflow.keras.preprocessing.image import ImageDataGenerator 으로 라이브러리를 불러온다. 기본적으로 사용되는 매개변수 매개변수 중, zca_whitening = True를 입력하면, fit을 추가적으로 해줘야 한다. data augment를 사용한다면, train 데이터 셋에서 validation data를 따로 형성해줘야 한다. 원래는 model.fit(validationsize=0.2)이렇게 해줬는데, traintest_split를 통해서 처음에 쪼개줘야 한다. mo
딥러닝-4단계(transformers, gradio, open ai)
1. transformers 해당 웹에 들어가면 다양한 model을 만들어 놓은 사이트로 hugging face가 있다. 어떤 문자를 입력하면 긍정인지 부정인지 알려주는 것과 텍스트를 오디오로 바꿔주는 등등의 다양한 model들이 있다. 우리가 model을 만드는 것도 중요하지만, 이미 만들어진 model을 사용하는 것 또한 중요하다. 해당 라이브러리 설치는 !pip install transformers datasets xformers -q 이다. 파이프라인 task - identifier 1. classifier = pipeline('pipeline identifier')의 구조이며, 내가 하고자하는 Task에 맞는 pipeline identifier을 입력한다. 2. 실행하면 기본적인 model을 다운로드 받을 수 있다. 
1. 차원 우리가 numpy를 통해 만들었던 array에 대해서 살펴보자. image.shape을 했을 때, (1,)/(1,2)/(1,2,3)의 출력값을 본다면 순서대로 1차원, 2차원, 3차원이라고 생각한다. 이는 데이터 형태의 맥락에서 본 차원이다.python 데이터 준비 (xtrain, ytrain), (xtest, ytest) = tf.keras.datasets.mnist.load_data() print(xtrain.shape, ytrain.shape) print(xtest.shape, ytest.shape) (60000, 28, 28) (60000,) (10000, 28, 28) (10000,) -> 데이터 형태 : 3차원이다. -> 데이터 공간 : x, y 축 모두 28개의 관측치로 이뤄졌다. 즉, 784차원이다. > 데이터 확인 print('정답 :', y_train[10]) > plt.figure(figsi
머신러닝-5단계(클래스(target) 불균형, y_test 값 x)
0. 클래스 불균형 >- 실제 작업에서는 target 데이터가 불균형있게 나타나 있는 경우가 많다. ex) 공장 장비 고장을 예측하고 싶은 경우, 당연히 정상작동의 경우 980건 비정상작동의 경우 15건 이렇게 불균형인 경우. 불균형인 상태에서 y_pred를 구하고 값을 비교해보면 accuracy가 높지만 target의 납은 값에 대한 recall은 현저히 낮다. 해결 방법으로는 1) Under Sampling 2) Over Sampling이 있다. Under/Over sampling은 확률로 나타내는 정규화와 비슷하지만, 정규화와 다른 점이 있다. fit을 xtrain과 ytrain 2개에 진행한다. x_test는 건드리지 않는다. 1. 불균형 상태에서 그냥 진행 > 
[KT AIVLE School 4기] 4주차 - 머신러닝
4주차 이번 주차는 5일 모두 머신러닝에 대해서 배우는 시간이었습니다. 사실 강의 속도에 대해서 약간은 느리다는 생각이 들어서 아쉬운 부분도 있었지만, 그만큼 기초적으로 알아야 하는 부분들을 확실히 배워나가는 시간이 될 수 있었습니다. 머신러닝을 위한 기본적인 코딩 기법들 그리고 다양한 모델들의 알고리즘에 대해서 배웠지만 그 중에서 평가지표에 대한 이야기를 조금 해보고자 합니다. 평가 지표 케글 등을 나가보면 해당 대회는 r2 score를 사용합니다. 혹은 해당 대회는 accuracy를 사용합니다 등의 멘트를 볼 수 있습니다. 사실 그럴 때마다 그냥 모델 잘 만들면 어떤 지표를 사용하더라도 잘 나오는거겠지 하고 넘겼습니다. 하지만 우리의 목적은 케글에서 좋은 점수를 받는 게 아닌 실제로 어떤 태스크를 잘 해결할 수 있는 모델을 만들수 있는 사람이 되는 것이고 그러기 위해서는 평가 지표에 대한 이해도 어느 정도는 필요하다는 생각을 하게 되었습니다. 과제에 따른
머신러닝-5단계(앙상블-보팅/배깅/부스팅/스태킹)
- 1) 앙상블은 여러 개의 모델을 결합하여 훨씬 강력한 모델을 생성하는 기법이다. > 2) 앙상블은 1. 보팅 2. 배깅 3. 부스팅 4. 스태킹 방법이 있다. 3) 보팅(voting) > 하나의 데이터셋에 여러개의 알고리즘을 사용하는 기법이다. > 하드 보팅은 다수의 모델이 예측한 값을 최종 결과값으로 사용한다. 소프트 보팅은 각 모델이 확률 평균을 구한 뒤, 가장 확률이 높은 값을 결과값으로 사용한다. 4) 스태킹(stacking) > 하나의 데이터셋에 3개 이상의 알고리즘을 사용하여 예측 값을 만든다. 그리고 최종 모델의 학습 데이터로 사용한다. > ex) KNN,Logistic, XGBoost, 모델을 사용해 3종류 예측 값을 구하고, RandomForest 학습 데이터로 사용하여, 최종 예측값을 구한다. 5) 배깅(bagging, bootstra
머신러닝-4단계(튜닝 : Random Search/Grid Search)
1. 튜닝 개념 >- 1) KNN 알고리즘의 경우, n_neighbors 값의 설정에 따라 모델의 성능이 달라진다. >--- 2) Decision tree/Random Forest/XGBoost/LGB의 경우, max_depth 값의 설정에 따라 모델의 성능이 달라진다. 3) crossvarscore를 사용하여 성능 예측을 통해, 사용할 알고리즘을 선택한 경우, 해당 알고리즘의 매개변수를 어떻게 설정할 것인지, 결정할 때 튜닝을 사용한다. --- 4) 튜닝의 방법은 2가지가 있다. Grid Search : parameter에서 설정한 범위를 전부 탐색, n_iter 설정 x > Random Search : parameter에서 설정한 범위에서 n_iter=3일 때, 3개만 탐색 5) 튜닝 횟수는 (범위 * cv값)임으로 Grid 방법일 때, 많은 시간이 소요된다. 6 함수 불러오기
머신러닝-4단계(k분할교차검증-어떤 알고리즘 사용할까?)
1. k분할교차검증 개념 >- 1) 이전 단계까지는 데이터를 1) x와 y로 분리하고 2) 훈련용(70%), 테스트용(30%)로 분할했다. >_ 2) 테스트를 하기 전에, 사전 테스트를 함으로써, 더 나은 알고리즘을 체택하고, 정확도를 향상시키기 위해 k분할교차검증을 돌려준다. 3) 훈련용 데이터를 cv = 10이면 10등분해서 한 블록을 검증용으로 사용하며, 총 10번의 검증 테스트를 진행한다. 4) 검증 테스트를 할 때는, 정확성을 위해서 데이터가 섞이면 안된다. 5) k분할은 xtrain과 ytrain만 해당된다. 6) k분할은 데이터 분리 과정(+정규화 과정)을 진행한 후, 수행되며, 그 다음에 모델링 단계를 진행한다. 7) 회귀 유형에서 cv_score의 값은 R2이다. 8) 분류 유형에서 cvscore의 값은 accuracyscore이다. ex) >  )
1. 로지스틱회귀 개념 >- 1) 시그모이드 함수라고도 불름 2) 0과 1범위의 확률 값을 얻는다. 3) 기본적으로 0.5를 임계값으로 하여 이보다 크면 1, 아니면 0으로 분류한다. 4) 분류 유형에서만 사용한다. 5) p = 1/(1+e^(-f(x))으로 표현한다. -6) model.predictproba(xtest)를 통해 확률값을 확인하고 시그모이드 함수를 시각화해야한다. ex) >- 분류 유형의 문제들의 풀이 순서와 동일하다. 차이점으로는 확률의 값을 가진다는 점이다. 
1. 의사결정나무 개념 > 1) 분류와 회귀 둘 다 사용 가능하다. > 분류 : from sklearn.tree import DecisionTreeClassifier 회귀 : from sklearn.tree import DecisionTreeRegressor 2) Root Node : 시작 노드 // Terminal Node : 끝 마디(=Leaf Node) // Depth : 깊이 // 불순도 : 지니 불순도 3) 분류에서는 불순도(지니지수)를 측정하고 // 회귀에서는 MSE를 측정한다. 4) 가지가 내려갈수록 root node의 불순도 보다 terminal node의 가중평균 불순도가 더 낮아진다. 5) 정보 이득(gain) = 부모의 불순도 - 자식의 불순도 = 정보 이득이 크다는 의미는 불순도가 내려가고 있다를 의미한다. 6) dept
머신러닝-3단계(KNN-분류/회귀)
- 1) 분류 유형뿐만 아니라 회귀 유형에도 사용된다. 분류 -> 가장 많이 포함된 유형으로 분류 회귀 -> K개 값의 평균을 계산하여 값을 예측 >__ 2) K값의 중요성 K가 train 갯수라면, 평균값이 나온다. 즉, k의 수가 증가하면 모델은 단순해진다. 그래서 적절한 수의 k를 선택하는게 중요하다. (디폴트 = 5, k는 홀수로 설정) >__ 3) 거리 계산 : 유클리드 거리와 맨하튼 거리가 있다. >__ 4) 스케일링 x와 y의 데이터 단위의 차이가 있을 수 있다. 그래서 1. 정규화 방법 or 2. 표준화 방법을 이용해서 데이터 스케일링을 한다. 우리는 정규화 방법을 사용한다. 5) 정규화 : $$\huge x{norm}=\frac{x-x{min}}{
머신러닝-3단계(선형 회귀-회귀유형(only))
1. 선형회귀(linear regression) >- 1) 단순 회귀 : y = ax+b의 형태의 회귀선을 만드는 거다. 2) 다중 회귀 : 변수의 개수에 따라서, y = a1x1 + a2x2 + ...+ an xn의 회귀선이 생성된다. 9) 변수선택 변수를 적절하게 선택해야 과대적합이 발생하지 않는다. 변수들의 가중치가 동일하게 책정됨으로, 의미 없는 변수에 쓸데없는 가중치를 갖게 해서는 안된다. > 다른 변수들이 특정 변수와 연관이 있다고 생각이 된다면, 해당 변수를 target으로 놓고, r2값을 구해본다. > r2값이 높다면, 변수의 독립성이 낮다는 의미이고, 이는 다중공선성 문제를 일으킴으로, 해당 변수를 제거해준다. 3) 가중치 coef_ : 기울기(a) 4) 편향 intercept_ : 절편(b) > ex) > python tmp = pd.Dat
머신러닝-2단계(성능평가)
1. 성능평가 >- 회귀 모델 성능 평가 예측 값과 실제 값의 차이(오차) : SSE가 적어야 한다. 예측 값과 실제 값의 평균 : SSR이 커야 한다. 예측 값이 실제 값에 가까울수록 좋은 모델이다. 분류 모델 성능 평가 accuray, recall, precision이 커야 한다. 예측 값이 실제 값과 같을 수록 좋은 모델이다. 2. 회귀 모델 성능 평가 > >>1) MAE(Mean Absolute Error) $$\large MAE=\frac{1}{n}\sum{i=1}^{n}|y{i}-\hat{y}_{i}|$$ from sklearn.metrics import meanabsoluteerror > > >>2) MAPE(Mean Absolute Percentage Error) $$\large MAPE=\frac{1}{n}\sum_{i=1}^{n}\left |\fra

KT AIVLE School (에이블스쿨) AI 과정 4기 합격
에이블스쿨이란 KT의 'AI 인재 양성 경험과 노하우'를 내부에서 외부로 확장하여 고용노동부 K-Digital Training과 함께 '기업 실무형 AI/DX인재'로 양성하고 일자리 창출에 기여하는 교육 프로그램 모집분야 : AI / DX 선발과정 : 서류 전형 > 인적성 > 코테(AI트랙만) 4기 선발 일정 1) 에이블스쿨 4기 지원 기간 5월 30일 ~ 6월 16일 2) 서류 합격자 발표 6월 30일 3) 인적성 검사 7월 8일 4) 코딩테스트 7월 9일 5) 최종합격 발표 7월 17일 지원서 Q1. 에이블스쿨에 지원하게 된 이유, 앞으로 AI/DX 분야에서 어떠한 인재로 성장하고 싶은지 향후 계획, 포부 (800자) Q2. 본인의 성장, 취업을 위해 노력한 활동(공모전, 프로젝트, 인턴 등)과 이를 통해 얻은 결과 및 소감 (800자) 인적성 1교시 언어 20문항 / 20분 2교시 언어, 수추
머신러닝-1단계
1. 학습 방법 분류 >- 지도 학습 : 정답을 주고 규칙성인 데이터의 패턴을 배우게 하는 학습 방법 비지도 학습 : 정답이 없는 데이터 만으로 배우게 하는 학습 방법 강화 학습 : 선택한 결과에 대해 보상을 받아 행동을 개선하게 하는 학습 방법 2. 과제에 따른 분류 >- 분류 문제 : 분류된 데이터를 학습하여 규칙을 기반으로 주어진 데이터를 적절히 분류하는 것을 목적으로 함 -> 범줏값을 예측하는 것 ex) 내일 주가가 오를까? >__ 회귀 문제 : 값과 결과 값의 연관성을 찾고, 기반하여 새롭게 주어진 데이터의 값을 예측하는 것을 목적으로 함 -> 연속적인 연산값을 예측 및 확인하는 것 ex) 내일 주가가 얼마일까? > -클러스터링 : 분류 문제의 비지도 학습 방법이다. 3. 과대/과소 적합 >- 과대 적합 : 학습 데이터를 너무 과하게 학습하
머신러닝-전처리(변수제거, 결측치처리, 가변수화)
0. 과정 >전처리의 과정은 많지만 배운 내용에 대해서 작성해본다. 1) 불필요한 변수 제거 2) 결측치 처리 3) 가변수화 1. 불필요한 변수 제거 >- 1) target과 연관이 없거나, 2) 결측치가 많아 채울 방법이 마땅치 않은경우, 3) name과 같이 unique한 값인 경우에 변수를 제거해준다. >- 칼럼을 제거하고 커밋하는 방법은 1) inplace = True 2) titanic_2 = 과 같이 다른 변수에 집어 넣는 방법이 있다. 1, 2의 방법은 혼용해서 사용하면 안된다. 만약 혼용 시, titanic_2는 받을 값이 없어서 N/A가 된다. 2. 결측치 처리 > 3. 가변수화 >
이변량 분석: 숫자-범주
항상 기억하도록 >* 숫자-범주형의 경우 수치화 과정은 없다. 시각화는 1) hue를 이용한 histplot 2) hue와 common_norm/multiple 을 이용한 kdeplot 방법이 있다. 1-1. 시각화: histplot + hue >- hue = 'y-columns' > 2-1. 시각화: kdeplot() + hue + common_norm >- kdeplot( , hue = 'Survived, common_norm = False) common_norm이 False면 생존여부