일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 소프티어 장애물인식프로그램
- MySQL완전삭제
- MongoDB
- express
- 1987파이썬
- 금고털이 파이썬
- 파이썬데이터분석라이브러리
- 장애물인식프로그램 파이썬
- 프로그래머스
- 백준 전쟁 파이썬
- 백준 등수매기기
- 파이썬 평범한배낭
- 백준 전쟁-전투
- 백준 점프
- CRUD
- 등수매기기 파이썬
- 피아노체조 파이썬
- 백준 바이러스
- 백준 예산
- 소프티어 지도자동구축
- 백준 A->B
- 지도자동구축 파이썬
- 백준 평범한배낭
- 도커 컨테이너
- 백준알파벳파이썬
- 백준
- jenkins
- 백준 점프 파이썬
- 백준 피아노체조
- express mongodb
- Today
- Total
바위 뚫는중
[ML] 사이킷런 설치 및 구현 (m1 macbook) 본문
사이킷런
파이썬 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리
- 가장 파이썬스러운 API 제공
- 머신러닝을 위한 매우 다양한 알고리즘과 개발을 위한 편리한 프레임워크와 API 제공
- 오랜 기간 실전 환경에서 검증, 매우 많은 환경에서 사용됨
사이킷런 설치 (m1)
#책에서 요하는 버전
pip install scikit-learn==1.0.2
#향후 최신버전을 원할시
pip install -U scikit-learn
설치완료 후, jupyter notebook으로 버전확인
머신러닝 만들어 보기 - 붓꽃 품종 예측(분류 Classification)
붓꽃 데이터 세트는 꽃잎의 길이와 너비, 꽃받침의 길이와 너비 특징(Feature)을 기반으로 꽃의 품종을 예측
분류(Classification): 대표적인 지도학습(Supervised Learning)의 한 방법
지도학습은 학습을 위한 다양한 피처와 분류 결정값인 Lable 데이터로 모델을 학습한 뒤, 별도의 테스트 데이터 세트에서 미지의 레이블을 예측 → 정답이 주어진 데이터를 먼저 학습 한 뒤 미지의 정답을 예측
- 학습을 위해 주어진 데이터 세트: 학습 데이터 세트
- ML Model 예측 성능을 평가하기 위해 별도로 주어진 데이터 세트: 테스트 데이터 세트
주피터 노트북 생성 및 모듈 임포트
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
- sklearn.datasets : 사이킷런에서 자체적으로 제공하는 데이터 세트 생성 모듈 모임
- sklearn.tree: 트리 기반 ML 알고리즘을 구현한 클래스의 모임
- sklearn.model_selection: 학습데이터와 검증데이터, 예특데이터로 데이터를 분리하거나 최적의 파라미터로 평가하기 위한 다양한 모듈의 모임
- 하이퍼 파라미터: 머신러닝 알고리즘별 최적의 학습을 위해 직접 입력하는 파라미터를 통칭 → 이를 이용해 알고리즘 성능을 튜닝할 수 있음
붓꽃 데이터 세트 생성: load_iris()
ML알고리즘은 의사 결정 트리(Decision Tree) 알고리즘으로, 이를 구현한 DecisionTreeClassifier을 적용
데이터프레임으로 피처와 데이터 값을 확인
import pandas as pd
iris = load_iris()
iris_data = iris.data
iris_label = iris.target
print('iris target값:', iris_label)
print('iris target명:', iris.target_names)
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)
iris_df['label']=iris.target
iris_df.head(3)
Feature
- sepal length
- sepal width
- petal length
- petal width
Label
- 0 setosa 품종
- 1 versicolor 품종
- 2 virginica 품종
예측 정확도 구하기
X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, test_size=0.2, random_state=11)
#DecisionTreeClassifier 객체 생성
dt_clf = DecisionTreeClassifier(random_state=11)
#학습 수행
dt_clf.fit(X_train, y_train)
#학습이 완료된 DecisionTreeClassifier 객체에서 테스트 데이터 세트로 예측 수행
pred = dt_clf.predict(X_test)
from sklearn.metrics import accuracy_score
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test, pred)))
- 데이터 세트 분리: 데이터를 학습 데이터와 테스트 데이터로 분리
- train_test_split()
학습 데이터와 테스트 데이터를 test_size 파라미터 입력값의 비율로 쉽게 분할
ex) test_size=0.2 → 테스트 데이터 20%, 학습용 데이터 80%로 전체 데이터 분할
X_train → 학습용 피처 데이터 세트
X_test → 테스트용 피처 데이터 세트
Y_train → 학습용 레이블 데이터 세트
Y_test → 테스트용 레이블 데이터 세트
- 모델 학습: 학습 데이터를 기반으로 ML 알고리즘을 적용해 모델을 학습
- DecisionTreeClassifier 객체 생성
- 예측 수행: 학습된 ML 모델을 이용해 테스트 데이터의 분류(즉, 붓꽃 종류)를 예측
- predict() 메서드에 테스트용 피처 데이터 세트를 입력
- 평가: 이렇게 예측된 결괏값과 테스트 데이터의 실제 결괏값을 비교해 ML 모델 성능을 평가
- accuracy_score() 정확도 측정
사이킷런의 기반 프레임워크
Estimator 이해 및 fit(), predict()메서드
ML 모델 학습: fit()
학습된 모델의 예측: predict()
Estimator: 학습, 예측
- Classifier 분류
- 분류 구현 클래스
- DecisionTreeClassfier
- RandomForestClassfier
- GraadientBoostingClassfier
- GaussianNB
- SVC
- 분류 구현 클래스
- Regressor 회귀
- 회귀 구현 클래스
- LinearRegression
- Ridge
- Lasso
- RandomForestRegressor
- GradientBoostingRegressor
- 회귀 구현 클래스
내장된 예제 데이터 세트
사이킷런에 내장된 데이터 세트는 일반적으로 딕셔너리 형태
키는 보통 data, target, target_name, feature_names, DESCR로 구셩
- data: 피처의 데이터 셋을 가리킴
- target: 분류 시 레이블 값, 회귀일 떄는 숫자 결괏값 데이터 셋
- target_names: 개별 레이블의 이름
- feature_names: 피처의 이름
- DESCR: 데이터 셋에 대한 설명과 각 피처의 설명을 나타냄
data, target→ 넘파이 배열 ndarray 타입
target_names, feature_names → 넘파이 배열 또는 파이썬 리스트(list)타입
DESCR → 스트링 타입
iris_data = load_iris()
print(type(iris_data))
<class 'sklearn.utils.Bunch'>
Bunch class는 파이선 딕셔너리 자료형과 유사
keys = iris_data.keys()
print('붓꽃 데이터 세트의 키들:', keys)
붓꽃 데이터 세트의 키들: dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
데이터 키는 피처들의 데이터 값을 가리킴
데이터세트.data 또는 데이터세트[’data’] 를 이용하여 사용
'Data, AI' 카테고리의 다른 글
[딥러닝] 심층 신경망의 기본 동작 과정, DNN, 퍼셉트론, MLP, Softmax Classifier (0) | 2023.01.23 |
---|---|
데이터 분석을 위한 라이브러리_2 (0) | 2022.08.12 |
데이터 분석을 위한 라이브러리_1 (0) | 2022.08.12 |