프로그래밍-AI & 빅데이터/머신러닝(9)
-
[파이썬 머신러닝] 사이킷런을 이용해 피마 인디언 당뇨병 예측하기
피마 인디언 당뇨병 데이터는 여러가지 feature로 구성되어 있다. 데이터를 받아서 뽑아보았다. 전체 데이터 중, Negative값이 500개, Positive 값이 268개이다. 각 컬럼별로 데이터를 살펴보니, 모두 숫자타입의 feature 데이터이고 null값은 없었다 따라서 별도의 encoding은 필요하지 않다. 해당 데이터의 정확도는 74퍼센트, 재현율은 46.3퍼센트로 측정되었다. 전체의 55퍼센트가 Negative이므로, 정확도보다는 재현율을 조금 더 올려보겠다. 약 0.34쯤의 threshold를 가지면 precision과 recall이 균형을 이룬다. 그러나 절대적인 수치는 둘다 0.65쯤으로 낮은편이다. 따라서 데이터를 한 번 더 점검해보겠다 피쳐값의 분포도를 보니, min이 0인 값..
2021.03.11 -
[파이썬 머신러닝] 4. Evaluation
데이터 가공/변환 -> 모델 학습-> 예측 -> 평가 1) Accuracy - 전체 예측 데이터 건수 대비 예측 결과가 동일한 데이터 건수 - 그러나 단순 Accuracy로 판단하는 것은, 데이터의 분포에 따라 왜곡이 커질 수 있다. 예컨데 여자는 무조건 살고, 남자는 무조건 죽는 엔진으로 학습해도, 80퍼센트에 가까운 정확도가 나온다 데이터가 이미 편중되어있기 때문이다 (예시 코드에서는 이전 타이타닉 예시에서 만든 total_function함수를 사용했다. 따라서 accuracy는 imbalanced한 데이터에 대한 evaluation지표로는 부적절하다. 예컨데 전체 데이터중 0이 90개 1이 10개라고 하더라도, 무조건 0으로 예측한다면 정확도가 90이 되는것이다. 비슷한 예로 True or Fals..
2021.03.09 -
[파이썬 머신러닝] 사이킷런을 이용해 타이타닉 생존자 예측하기
1. 필요한 라이브러리 및 데이터 import 타이타닉 데이터를 구성하는 column들과 확인하였다 또한 info메소드를 통해 각 컬럼의 정보를 확인하였다. 전체 row는 891개다. 2. Null값 처리 이 시점에서 주목할 부분은 Null값이다. 사이킷런 알고리즘은 Null을 허용하지 않는다. info의 결과를 보면 Age, Cabin, Embarked가 null을 가지고 있다 fillna 메소드를 통해 처리하였다. 3. 이상한 분포에 대한 문자열 처리 판다스의 object타입은 string으로 봐도 무방하다. 따라서 object로 표현된 Sex, Cabin, Embarked는 처리가 필요할 수도 있다. 처리를 위해 먼저 분포를 살펴본다 sex와 Embarked는 상식적인 분포를 가지고 있으나, Cab..
2021.03.08 -
[파이썬 머신러닝] 3. 싸이킷런(3) - 데이터 전처리
1. Label Encoding: 카테고리 피처를 코드형 숫자로 변환(ex) 메로나1: 1, 스크류바: 2...) 사이킷런의 LabelEncoder를 이용 단, 단순한 코드일 뿐이지만 어쨋든 숫자임으로 크고작음을 인식할 우려가 있다. 이러한 이유로 회귀같은 알고리즘에선 사용되지 않는다 2. One-Hot Encoding: 크기에 따른 가중치 설정을 방지하기 위해, 배열을 만들고 해당 컬럼만 1로 표시하는 방법 이 경우에는 일단 label encoder를 통해 숫자로 데이터를 바꾼 후, 인코딩을 한번 더 진행한다 판다스에 굉장히 편한 api가 있었다.... 굳이 인코더를 두개나 쓸 필요가 없다 - 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업 Standardization: 기존value에서 평균..
2021.03.08 -
[파이썬 머신러닝] 3. 싸이킷런 (2) - Model Selection
보통 위와 같이 import 크게 다섯가지의 속성을 가짐 가장 중요한 data, target은 모두 ndarray 형태의 자료이다 data : 피처 데이터 셋 feature_name: 피처 데이터 셋의 이름 target: classification에서는 라벨 데이터, regression에서는 결과 데이터 target_name: 라벨 데이터 이름 DESCR: 각각에 대한 설명 앞서 말했던바와 같이 모델을 학습용, 테스트용으로 분리하거나 튜닝에 사용 특히 overfit을 방지하기 위해 교차검증이 필요 보편적으로 사용되는 K폴드 방식 이는 데이터셋을 K개로 나누어 한개를 검증 세트로 사용하는 것 테스트 데이터셋은 별도로 존재하고, 기존 학습데이터를 K번 쪼개 검증에 이용하는 것이다. 피쳐 데이터 셋, 라벨 셋..
2021.03.04 -
[파이썬 머신러닝] 3. 사이킷런 (1)
실습1) 붓꽃 품종 예측하기 - 지도학습: 레이블 데이터로 학습한 뒤, 별도의 테스트 데이터 세트에서 레이블 예측 - 데이터 분류: 학습데이터와 테스트데이터로 분류 - Feature : 데이터 수집 후 learning전, feature selection을 통해 feature를 뽑는다. 이를 통해 Label을 찾아낸다. Step1- 사전 세팅 sklearn의 datasets 모듈은 데이터 세트, tree 모듈은 트리 기반 ML 알고리즘들의 모음, model_selection은 학습,검증,예측 데이터를 구분하는 도구들의 모음이다 각각의 모듈에서 from절로 필요한 함수 및 데이터를 import 한다. 예시의 경우 DecisionTreeClassifier라는 함수를 알고리즘으로, train_test_split..
2021.02.03