편집자별 이미지
Scikit-learn은 Python으로 구축된 가장 일반적으로 사용되는 기계 학습 라이브러리 중 하나입니다. 그 인기는 초보자 개발자에게 친숙한 쉽고 일관된 코드 구조 때문일 수 있습니다. 또한 라이브러리를 강력하고 프로덕션에 적합하게 만드는 타사 기능을 통합할 수 있는 유연성과 함께 높은 수준의 지원이 제공됩니다. 라이브러리에는 분류, 회귀 및 클러스터링을 위한 여러 기계 학습 모델이 포함되어 있습니다. 이 튜토리얼에서는 다양한 알고리즘을 통해 다중 클래스 분류 문제를 탐구합니다. 바로 들어가서 scikit-learn 모델을 구축해 봅시다.
pip install scikit-learn
우리는 scikit-learn의 datasets 모듈에서 사용할 수 있는 "Wine" 데이터셋을 사용할 것입니다. 이 데이터 세트는 총 178개의 샘플과 3개의 클래스로 구성되어 있습니다. 데이터 세트는 이미 전처리되어 기능 벡터로 변환되었으므로 모델을 교육하는 데 직접 사용할 수 있습니다.
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
데이터의 67%는 교육용으로, 나머지 33%는 테스트용으로 보관합니다.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42
)
이제 복잡성이 다른 5가지 모델을 실험하고 데이터 세트에서 결과를 평가합니다.
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
y_pred_lr = model_lr.predict(X_test) print("Accuracy Score: ", accuracy_score(y_pred_lr, y_test))
print(classification_report(y_pred_lr, y_test))
산출
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
model_knn = KNeighborsClassifier(n_neighbors=1)
model_knn.fit(X_train, y_train)
y_pred_knn = model_knn.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_knn, y_test))
print(classification_report(y_pred_knn, y_test))
산출
Accuracy Score: 0.7796610169491526 precision recall f1-score support 0 0.90 0.78 0.84 23 1 0.75 0.82 0.78 22 2 0.67 0.71 0.69 14 accuracy 0.78 59 macro avg 0.77 0.77 0.77 59
weighted avg 0.79 0.78 0.78 59
매개변수 'n_neighbors=2'를 변경하면 정확도 값이 감소하는 것을 관찰할 수 있습니다. 따라서 데이터가 충분히 단순하고 고려할 단일 이웃으로 더 나은 학습을 달성한다는 것을 보여줍니다.
산출
Accuracy Score: 0.6949152542372882 precision recall f1-score support 0 0.90 0.72 0.80 25 1 0.75 0.69 0.72 26 2 0.33 0.62 0.43 8 accuracy 0.69 59 macro avg 0.66 0.68 0.65 59
weighted avg 0.76 0.69 0.72 59
from sklearn.naive_bayes import GaussianNB model_nb = GaussianNB()
model_nb.fit(X_train, y_train)
y_pred_nb = model_nb.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_nb, y_test))
print(classification_report(y_pred_nb, y_test))
산출
Accuracy Score: 1.0 precision recall f1-score support 0 1.00 1.00 1.00 20 1 1.00 1.00 1.00 24 2 1.00 1.00 1.00 15 accuracy 1.00 59 macro avg 1.00 1.00 1.00 59
weighted avg 1.00 1.00 1.00 59
from sklearn.tree import DecisionTreeClassifier model_dtclassifier = DecisionTreeClassifier()
model_dtclassifier.fit(X_train, y_train)
y_pred_dtclassifier = model_dtclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_dtclassifier, y_test))
print(classification_report(y_pred_dtclassifier, y_test))
산출
Accuracy Score: 0.9661016949152542 precision recall f1-score support 0 0.95 0.95 0.95 20 1 1.00 0.96 0.98 25 2 0.93 1.00 0.97 14 accuracy 0.97 59 macro avg 0.96 0.97 0.97 59
weighted avg 0.97 0.97 0.97 59
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV def get_best_parameters(): params = { "n_estimators": [10, 50, 100], "max_features": ["auto", "sqrt", "log2"], "max_depth": [5, 10, 20, 50], "min_samples_split": [2, 4, 6], "min_samples_leaf": [2, 4, 6], "bootstrap": [True, False], } model_rfclassifier = RandomForestClassifier(random_state=42) rf_randomsearch = RandomizedSearchCV( estimator=model_rfclassifier, param_distributions=params, n_iter=5, cv=3, verbose=2, random_state=42, ) rf_randomsearch.fit(X_train, y_train) best_parameters = rf_randomsearch.best_params_ print("Best Parameters:", best_parameters) return best_parameters parameters_rfclassifier = get_best_parameters() model_rfclassifier = RandomForestClassifier( **parameters_rfclassifier, random_state=42
) model_rfclassifier.fit(X_train, y_train) y_pred_rfclassifier = model_rfclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_rfclassifier, y_test))
print(classification_report(y_pred_rfclassifier, y_test))
산출
Best Parameters: {'n_estimators': 100, 'min_samples_split': 6, 'min_samples_leaf': 4, 'max_features': 'log2', 'max_depth': 5, 'bootstrap': True}
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
이 알고리즘에서는 최상의 정확도를 달성하기 위해 하이퍼파라미터 튜닝을 수행했습니다. 각 매개변수에 대해 선택할 여러 값으로 구성된 매개변수 그리드를 정의했습니다. 또한 Randomized Search CV 알고리즘을 사용하여 모델에 가장 적합한 매개변수 공간을 검색했습니다. 마지막으로 얻은 매개변수를 분류기에 공급하고 모델을 훈련합니다.
모델 | 정확성 | 관측 |
로지스틱 회귀 | 98.30% | 뛰어난 정확도를 달성합니다. 모델은 테스트 데이터 세트에서 잘 일반화할 수 있습니다. |
K- 최근 접 이웃 | 77.96% | 알고리즘이 데이터 표현을 잘 학습할 수 없습니다. |
나이브 베이 즈 | 100% | 모델이 덜 복잡하므로 절대 정확도를 얻기 위해 데이터를 과대적합합니다. |
의사 결정 트리 분류기 | 96.61% | 준수한 정확도를 달성합니다. |
랜덤 포레스트 분류기 | 98.30% | 앙상블 기반 접근 방식이므로 의사 결정 트리보다 성능이 좋습니다. 하이퍼파라미터 튜닝을 수행하면 로지스틱 회귀와 비슷한 정확도를 얻을 수 있습니다. |
이 튜토리얼에서는 scikit-learn에서 기계 학습 모델을 구축하고 훈련하는 방법을 배웠습니다. 우리는 성능에 대한 기본 아이디어를 얻기 위해 몇 가지 알고리즘을 구현하고 평가했습니다. 기능 엔지니어링, 하이퍼파라미터 튜닝 또는 성능 향상을 위한 교육을 위한 고급 전략을 언제든지 채택할 수 있습니다. scikit-learn이 제공하는 기능에 대해 자세히 알아보려면 공식 문서를 참조하세요. scikit-learn을 사용한 기계 학습 소개, scikit-learn을 사용한 Python의 기계 학습.
예샤 샤스트리 Université de Montréal에서 기계 학습 석사 과정을 밟고 있는 열정적인 AI 개발자이자 작가입니다. Yesha는 사회에 도움이 되는 문제를 해결하고 자신의 학습 내용을 커뮤니티와 공유하기 위해 책임 있는 AI 기술을 탐구하는 데 관심이 있습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://www.kdnuggets.com/getting-started-with-scikit-learn-for-classification-in-machine-learning.html?utm_source=rss&utm_medium=rss&utm_campaign=getting-started-with-scikit-learn-for-classification-in-machine-learning
- 1
- 10
- 100
- 67
- 77
- 84
- 9
- 98
- a
- 할 수 있는
- 소개
- 절대
- 달성
- 채택
- 많은
- AI
- 연산
- 알고리즘
- 이미
- 항상
- 과
- 접근
- 자동
- 가능
- 기본
- 이익
- BEST
- 더 나은
- 부트 스트랩
- 빌드
- 내장
- 과제
- 변화
- 왼쪽 메뉴에서
- 수업
- 분류
- 클러스터링
- 암호
- 일반적으로
- 커뮤니티
- 복잡한
- 복잡성
- 고려
- 일관된
- 구성
- 이 포함되어 있습니다
- 변환
- 데이터
- 데이터 세트
- 결정
- 감소
- 개발자
- 개발자
- 다른
- 다른
- 직접
- 선적 서류 비치
- 마다
- 엔지니어링
- 충분히
- 에테르 (ETH)
- 평가
- 평가
- 실험
- 탐험
- 특색
- 를
- 최종적으로
- 유연성
- 숲
- 친절한
- 에
- 기능성
- 추가
- 얻을
- 점점
- 큰
- 그리드
- 머리
- 높은
- 방법
- How To
- HTML
- HTTPS
- 하이퍼 파라미터 튜닝
- 생각
- 구현
- import
- 개선
- in
- 설치
- 통합
- IT
- 유지
- 배우다
- 배운
- 배우기
- 레벨
- 도서관
- 도서관
- 링크드인
- 기계
- 기계 학습
- 매크로
- 제작
- 석사
- 모델
- 모델
- 모듈
- 배우기
- 가장
- 여러
- 관찰
- 획득
- 제공
- 공무원
- ONE
- 매개 변수
- 매개 변수
- 열렬한
- 성능
- 실행할 수 있는
- 수행하다
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 인기
- Precision
- 문제
- 생산
- Python
- 무작위
- 읽기
- 대표
- 책임
- REST
- 결과
- return
- 강력한
- 사이 킷 학습
- 검색
- 공유
- 쇼
- 비슷한
- 단순, 간단, 편리
- 단일
- 사회
- 풀다
- 일부
- 스페이스 버튼
- 시작
- 전략들
- 구조
- 적당한
- SUPPORT
- 기법
- test
- 지원
- XNUMXD덴탈의
- 그들의
- 타사
- 을 통하여
- 에
- 금액
- Train
- 트레이닝
- 참된
- 지도 시간
- 사용
- 가치
- 마케팅은:
- 여러
- 어느
- 의지
- 작가
- X
- 제퍼 넷