학원보다 강사 퀄리티가 중요하다. 간혹 일반 it 학원에 찐 전문 강사님들이 오시기도 하심!
강사평가 자체가 주관적이여서 좋고 나쁜 강사평가 자체가 의미가 없을 순 있겠지만
나는 개인적으로 감정을 케어하시는 분 보다는 설명력을 이해하기 쉽게 풀어주시는 분을 좋아한다.
한번은 다른 강사님의 설명에 3일간 이해를 못하다가 그냥 암기를 했었는데 5개월 뒤 유태영 강사님 수업을 듣고 10분만에 바로 이해했다. 진짜 삽질을 해서 직접 배우신거구나를 느낄 수 있었다. 진짜 강의만 봐도 느껴지는게 이 강사가 그냥 복붙만한 SI 개발자출신이였는지 아니면 창업까지 하시면서 개발자체를 즐기시는 개발자출신이셨는지 바로 느껴지고 강의 퀄리티가 달라짐을 느꼈다.
3. 여러강사가 있어야 좋다
한명의 강사가 파이썬, 자바, 데이터를 다 설명하는 경우가 있다.
국비교육이다보니 이것저것 기업들이 원하는거 다 때려박는 경우가 있는데 이것보다 문제인게
한명의 강사가 이걸 다 설명한다는게 문제이다. 제대로 이해도 못하고 수업준비를 위해 그냥 암기식으로 설명하는 경우가 허다하다.
각각 분야에 맞는 강사가 있는지 반드시 확인해라.
4. 주관사에 대한 이해
나 같은 경우 이직을 위해 1년 반동안 개발공부를 하겠다고 계획을 잡았고 6개월 백엔드/ 6개월 네트워크 및 AI / 6개월 AI(CV)과정을 을 준비했고, 어떤 과정을 들을지 살펴보다 재미있는걸 알아냈다.
교육처에 따라 지원부서가 달랐고 고용노동청 뿐만아니라 과기정통부에서도 국비교육을 한다는것을 알게되었다.
고용노동부주관 hrd KDT 수업을 듣게된다면 내일배움카드의 500만원을 한번에 소진함 -> 다른 국비교육 못들음
# 도형 1
fruit = ['사과','바나나','딸기','오렌지','포도']
result = [7,6,3,2,2]
import matplotlib.pyplot as plt
plt.pie(result)
plt.show()
# 도형 2
# 생성한 원이 타원 -> 원형으로 변환
plt.figure(figsize=(5,5))
plt.pie(result, labels = fruit, autopct = '%.1f%%')
plt.show()
도형 1도형 2
# 시계방향순 데이터 정렬
plt.figure(figsize=(5,5))
plt.pie(result, labels = fruit, autopct = '%.1f%%', startangle=90, counterclock=False )
# startangle=90 x축 기준 90도 에서 시작 (생략시 0도)
# autopct 소수점 보여줄꺼
# counterclock=False 시계방향
plt.show()
explode_value = (0.1, 0,0,0,0) # 1번째 요소 0.1 만큼 파이에서 나오게
# 시계방향 순으로 데이터 pie_chart를 생성
plt.figure(figsize=(5,5))
plt.pie(result, labels = fruit, autopct = '%.1f%%', startangle =90, counterclock=False, explode=explode_value, shadow=True)
# img 저장하기
plt.savefig('./save_test0.png')
plt.show()
# 사진의 해상도 높이기 dpi(dot per inch)
import matplotlib as mpl
mpl.rcParams['figure.figsize']
# 해상도 보기 dpi를 찍어보기
mpl.rcParams['figure.dpi']
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5)
x
y1 = x
y2 = x+1
y3 = x+2
y4 = x+3
<y= x 꼴 그래프 만들어보기>
plt.plot(x,y1, x,y2, x,y3, x,y4)
plt.grid()
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Saving a figure')
# 위의 이미지 저장
plt.savefig('./save_test10', dpi=1000)
import matplotlib.pyplot as plt
import numpy as np
height = [165,177,160,180,185,155,172] # 키 데이터
weight = [62,67,55,74,90,43,64] # 몸무게 데이터
plt.scatter(height, weight)
plt.xlabel('Height(cm)')
plt.ylabel('Weight(kg)')
plt.title('Height & Weight')
plt.grid() # 그리드
plt.scatter(height, weight, s=500, c='r') # s: 마커크기, c: 색
plt.show()
# 마커 크기를 변경하는 방법
plt.scatter(height, weight, s=500, c='r') # s: 마커 크기, c: 색깔
plt.show()
# 데이터마다 마커의 크기와 컬러를 다르게 지정
size = 100* np.arange(1, 8)
colors = ['r', 'g', 'b', 'c', 'm', 'k','y']
plt.scatter(height, weight, s=size, c=colors)
height = [165,177,160,180,185,155,172] # 키 데이터
weight = [62,67,55,74,90,43,64] # 몸무게 데이터 # 165, 62가 1번째 Red -> 177, 67 Green 순서대로
plt.show()
https://hyunmin1906.tistory.com/30
import numpy as np
city = ['서울','인천','대전','대구','울산','부산','광주']
# 위도(latitude)와 경도(longitude)
lat = [37.56, 37.45, 36.35, 35.87, 35.53, 35.18, 35.16]
lon = [126.97, 126.70, 127.38, 128.60, 129.31, 129.07, 126.85]
# 인구밀도
pop_den = [16154, 2751, 2839, 2790, 1099, 4454, 2995]
size = np.array(pop_den) * 0.2 # 마커의 크기 지정
colors = ['r','g','b','c','m','k','y'] # 마커의 컬러 지정
plt.scatter(lon, lat, s= size, alpha=0.5)
plt.xlabel('경도')
plt.ylabel('위도')
plt.title('지역별 인구밀도')
for x,y, city_name in zip(lon, lat,city):
plt.text(x,y, city_name) # 경도, 위도에 따른 도시이름 mapping
plt.show()
import sklearn
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
print(sklearn.__version__) # 사이킷런 버전확인
#붓꽃 데이터 세트를 로딩
iris=load_iris()
#iris.data는 Iris 데이터 세트에서 피처(feature)만으로 된 데이터를 numpy로 가지고 있음.
iris_data=iris.data # x값 들
#iris.target은 붓꽃 데이터 세트에서 레이블(결정 값)데이터를 numpy로 가지고 있다.
iris_label=iris.target #y값 들
print('iris target값:', iris_label)
print('iris target명:', iris.target_names) # ['setosa' 'versicolor' 'virginica'] 문자타입을 0, 1, 2숫자로 변환!
#붓꽃 데이터 세트를 자세히 보기 위해 DataFrame으로 변환한다.
iris_df = pd.DataFrame(iris_data,columns=iris.feature_names)
iris_df['label']=iris.target
iris_df.tail()
다음으로 학습용 데이터와 테스트용 데이터를 분리해보자. 학습용 데이터와 테스트용 데이터는 반드시 분리해야 한다.
학습데이터로 학습된 모델이 얼마나 뛰어난 성능을 가지는지 평가하려면 테스트 데이터 세트가 필요하기 때문이다.
이를 위해 사이킷런은 train_test_split()API를 제공한다. train_test_split()을 이용하면 학습 데이터와 테스트 데이터를 test_size 파라미터 입 값의 비율로 쉽게 분할이 가능하다. 예를 들어 test_size =0.2로 입력 파라미터를 설정하면 전체 데이터 중 테스트 데이터가 20%, 학습데이터가 80%로 데이터를 분할한다. 먼저 train_test_split()을 호출한 후 좀 더 자세히 입력 파라미터와 변환값을 살펴보자.
# 함수 설정하기
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-4.5, 5.0, 0.5)
y1 = 2*x**2
y2 = 5*x + 30
y3 = 4*x**2 + 10
# 시각화 방법 1
plt.plot(x,y1)
plt.plot(x,y2)
plt.plot(x,y3)
plt.show()
# 더 간단하게도 가능
#plt.plot(x,y1,x,y2,x,y3)
# plt.show()
여러 그래프를 여러 창에 넣어보기
# 넘파이로 함수 생성
import numpy as np
# 데이터 생성
x = np.arange(-5,5, 0.1)
y1 = x**2 -2
y2 = 20*np.cos(x)**2
#plt.figure 로 새창을 만들고 (숫자)로 여러 창 생성가능
plt.figure(1) # 1번 그래프를 창에 넣기
plt.plot(x, y1)
plt.figure(2) # 2번 그래프를 창에 넣기
plt.plot(x, y2)
plt.show()
# 3. Pclass 1인 정보 추출하기
titan_df[titan_df.Pclass==1] # <class 'pandas.core.series.Series'>
# titan_df[titan_df['Pclass']==1] # 이렇게 해도됨
#titan_df[titan_df.Pclass==1].Pclass.value_counts() # 갯수
# print(type(titan_df[titan_df.Pclass==1])) => <class 'pandas.core.frame.DataFrame'>
# print(type(titan_df.Pclass==1])) => <class 'pandas.core.series.Series'>
여러가지 조건
# and 조건일 때는 & / or 조건일 때는 | / Not 조건일 때는 ~
# 60세넘는 1등급 여성 추출
titan_df[(titan_df.Pclass==1) & (titan_df.Sex=='female') & (titan_df['Age'] > 60)]
# Not 조건인 경우 (반대조건)
# titan_df[~((titan_df.Pclass==1) & (titan_df.Sex=='female') & (titan_df['Age'] > 60))]
2-2 여러가지 기능들
# 해당 열(Name)에 글자가 포함된 데이터 출력
titan_df[titan_df.Name.str.contains('Mrs')]
# 인덱스번호 재정렬
titan_df[titan_df.Name.str.contains('Mrs')].reset_index()
# 인덱스번호 재정렬상태에서 상위3개만 보여주기
# titan_df[titan_df.Name.str.contains('Mrs')].reset_index().head(3) # 상위 3개
# titan_df[titan_df.Name.str.contains('Mrs')].reset_index()[:3] # 상위 3개
# titan_df[titan_df.Name.str.contains('Mrs')].reset_index().tail(3) # 하위
# 결측치받기
.isna() # 표로 보여주기
.isna().sum() # 합쳐서 보여주기
3. 선택된 행(row) 가로만 뽑아보기
titan_df.loc[[0]] # loc 이름이 0인 행만 추출해줘 titan_df.iloc[[0]] # iloc 위치가 0번째 행인 값들만 추출해줘
# 단일값을 불러오기1 - loc(label::명칭) // iloc(Positional-위치)
titan_df.loc[[0]] # loc 이름이 0인 행만 추출해줘
titan_df.iloc[[0]] # iloc 위치가 0번째 행인 값들만 추출해줘
# iloc 경우 슬라이스 가능
# iloc [시작:끝:옵션]
# 테스트하기 위해서 행 이름 바꿀때
# data_df.rename(index={'two': 1, 'one': 3}, inplace=True) # inplace 원본도 바꿀래?
data_df
3-1. loc/iloc 을 통한 행열 을 사용하여 하나의 값 뽑기
titan_df.loc[0,'Pclass']
# 3 출력
# titan_df.loc[[0,'Pclass']] 로 하면 "['Pclass'] not in index" 에러 뜸
3-2. loc/iloc 을 통한 행열 을 사용하여 여러개의 값 뽑기
titan_df.loc[:,'Pclass':'Age']
# 행 [:] = 전부 , 열 ['Pclass':'Age'] Pclass부터 ~ Age 까지3-1. loc을 통한 행열 을 사용하여 하나의 값 뽑기
titan_df.iloc[:,2:6]
# 와 동일한 값 (2열부터 ~ 2,3,4,5 까지) 6열 포함x