Scikit 학습 – Python을 사용한 기계 학습



Scikit 학습 블로그에서 Python으로 머신 러닝을 소개합니다. 여기에는 scikit learn을 사용하여 로지스틱 회귀를 구현하는 사용 사례가 포함됩니다.

이 블로그에서는 Scikit이 파이썬으로 배우는 것에 대해 논의 할 것입니다. Scikit 학습에 대해 이야기하기 전에 기계 학습의 개념을 이해해야합니다.사용 방법을 알아야합니다. . 머신 러닝을 사용하면 인사이트를 수동으로 수집 할 필요가 없습니다. 알고리즘 만 있으면 기계가 나머지 작업을 수행합니다! 흥미롭지 않나요? Scikit learn은 Python을 사용하여 기계 학습을 구현할 수있는 매력 중 하나입니다. 그것데이터 분석 및 마이닝 목적을위한 간단하고 효율적인 도구가 포함 된 무료 기계 학습 라이브러리입니다.다음 주제에 대해 설명하겠습니다.이 주제는 향후 블로그의 기초가 될 것입니다.

머신 러닝이란?

기계 학습은 소프트웨어 애플리케이션이 데이터에서 학습하고 사람의 개입없이 결과를 더 정확하게 예측할 수 있도록하는 인공 지능의 한 유형입니다. 하지만 어떻게되는 걸까요? 이를 위해 기계는 일부 데이터에 대해 교육을 받아야하며이를 기반으로 모델을 생성하는 패턴을 감지합니다.데이터에서 지식을 얻고 강력한 통찰력을 제공하는이 프로세스는 모두 기계 학습에 관한 것입니다. 작동에 대해 더 잘 이해하려면 아래 이미지를 참조하십시오.





MachineLearning-Scikit Learn-Edureka

시스템은 데이터를 사용하여 알고리즘을 학습 한 다음이를 사용하여 예측 모델을 구축합니다. 나중에 모델을 조정하거나 피드백 데이터를 사용하여 모델의 정확도를 향상시킵니다. 이 피드백 데이터를 사용하여 모델을 조정하고 새 데이터 세트에 대한 조치를 예측합니다. 우리는논의 중이다 사용 사례 특정 문제에 적합한 지 여부를 더 잘 이해할 수 있도록 데이터를 훈련하고 테스트하는 알고리즘 접근 방식 중 하나입니다.



다음으로 세 가지 유형의 기계 학습이 있습니다.

    • 지도 학습 : 학습 데이터 세트에서 학습하는 알고리즘 프로세스입니다. 지도 학습은 입력 변수 (X)와 출력 변수 (Y) 사이에 매핑 함수를 생성하고 알고리즘을 사용하여 둘 사이에 함수를 생성하는 곳입니다. 데이터를 사용하여 예측하는 프로세스를 나타내는 예측 모델링이라고도합니다. 일부 알고리즘에는 선형 회귀, 로지스틱 회귀, 의사 결정 트리, 랜덤 포레스트 및 Naive Bayes 분류 기가 포함됩니다. 우리는 다음을 사용하여 기계를 훈련시키는지도 학습의 사용 사례에 대해 더 논의 할 것입니다. 로지스틱 회귀 .
    • 비지도 학습 : 레이블이 지정되지 않은 정보를 사용하여 모델을 학습하는 프로세스입니다. 이 프로세스는 통계적 속성을 기반으로 클래스의 입력 데이터를 클러스터링하는 데 사용할 수 있습니다. 비지도 학습은 c라고도합니다.광택 분석은 개체 또는 개체의 관계를 설명하는 데이터에서 찾은 정보를 기반으로 개체를 그룹화하는 것을 의미합니다. 목표는 한 그룹의 개체가 서로 유사하지만 다른 그룹의 개체와는 달라야한다는 것입니다. 일부 알고리즘에는 K- 평균 클러스터링, 계층 적 클러스터링 등이 포함됩니다.
    • 강화 학습 : 강화 학습은 공간 또는 환경과 상호 작용하여 학습합니다.RL 에이전트는 명시 적으로 배우는 것이 아니라 행동의 결과로부터 배웁니다. 과거 경험 (착취)과 새로운 선택 (탐사)을 바탕으로 행동을 선택합니다.

Scikit Learn 개요

Scikit learn은 Python에서 기계 학습을 수행하는 데 사용되는 라이브러리입니다. Scikit learn은 BSD에 따라 라이센스가 부여 된 오픈 소스 라이브러리이며 다양한 컨텍스트에서 재사용 할 수있어 학술 및 상업적 사용을 장려합니다. Python에서 다양한지도 및 비지도 학습 알고리즘을 제공합니다.Scikit learn은 인기있는 알고리즘과 라이브러리로 구성됩니다. 그 외에도 다음 패키지도 포함됩니다.



  • NumPy
  • Matplotlib
  • SciPy (Scientific Python)

Scikit 학습을 구현하려면 먼저 위의 패키지를 가져와야합니다. 이 라이브러리에 익숙하지 않은 경우 이전 블로그에서 과 . 명령 줄을 사용하거나 P를 사용하는 경우이 두 패키지를 다운로드 할 수 있습니다.와이Charm, 다른 패키지에서와 동일한 방식으로 설정으로 이동하여 직접 설치할 수 있습니다.

다음으로 비슷한 방식으로, Sklearn을 가져와야합니다..Scikit learn은 Scikit-learn을 사용하기 전에 설치해야하는 SciPy (Scientific Python)를 기반으로합니다. 이것을 참조 할 수 있습니다 웹 사이트 같은 것을 다운로드합니다. 또한 Scipy 및 wheel 패키지가없는 경우 설치합니다. 아래 명령을 입력 할 수 있습니다.

pip 설치 scipy

이미 다운로드하여 설치했습니다. 혼동이있는 경우 아래 스크린 샷을 참조하십시오.

위의 라이브러리를 가져온 후 Scikit learn이 정확히 어떻게 사용되는지 자세히 살펴 보겠습니다.

자바 프로그램 종료 방법

Scikit learn은 다음과 같은 샘플 데이터 세트와 함께 제공됩니다. 아이리스숫자 . 데이터 세트를 가져 와서 가지고 놀 수 있습니다. 그런 다음 Support Vector Machine을 나타내는 SVM을 가져와야합니다. SVM은 데이터 분석에 사용되는 기계 학습의 한 형태입니다.

우리가 취할 예를 들어 보겠습니다. 숫자 예를 들어 0 1 2 3 4 5 6 7 8 9. 아래 코드를 참조하십시오.

import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svm numbers = datasets.load_digits () print (digits.data)

출력 –

[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0. 0. 10. ..., 12. 1. 0.]]

여기에서 라이브러리, SVM, 데이터 세트를 가져 와서 데이터를 인쇄했습니다. 데이터가 저장되는 긴 숫자 데이터 배열입니다. 이를 분류하는 데 사용할 수있는 기능에 대한 액세스를 제공합니다. 숫자 견본. 다음으로 대상, 이미지 등과 같은 다른 작업을 시도 할 수도 있습니다. 아래 예를 고려하십시오.

import matplotlib.pyplot as plt from sklearn import 데이터 셋 from sklearn import svm numbers = datasets.load_digits () print (digits.target) print (digits.images [0])

산출 -

[01 2 ..., 8 9 8] // 데이터 대상 [[0. 0. 5. 13. 9. 1. 0. 0.] // 데이터 이미지 [0. 0. 13. 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]

위에서 볼 수 있듯이 목표 숫자와 숫자 이미지가 인쇄됩니다. digits.target 에 대한 지상 진실을 제공합니다 숫자 데이터 세트, 즉 각 숫자 이미지에 해당하는 숫자입니다. 다음으로 데이터는 원래 데이터의 모양이 다를 수 있지만 항상 모양 (n_samples, n_features)을 갖는 2D 배열입니다. 그러나 숫자의 경우 각 원본 샘플은 모양 (8,8)의 이미지이며 다음을 사용하여 액세스 할 수 있습니다. 숫자 . 영상.

학습 및 예측

다음으로 Scikit learn에서 데이터 세트 (10 개의 가능한 클래스 샘플, 0에서 9까지의 숫자)를 사용했으며 이미지가 제공 될 때 숫자를 예측해야합니다. 수업을 예측하려면 평가자 보이지 않는 샘플이 속하는 클래스를 예측하는 데 도움이됩니다. Scikit learn에는 메서드를 구현하는 파이썬 객체 인 분류를위한 추정기가 있습니다. 적합 (x, y)예측 (T). 아래 예를 살펴 보겠습니다.

import matplotlib.pyplot as plt from sklearn from sklearn import datasets from sklearn import svm numbers = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0.001, C = 100) print (len (digits.data)) x, y = digits.data [:-1], digits.target [:-1] // 데이터 훈련 clf.fit (x, y) print ( 'Prediction :', clf.predict (digits.data [-1]) ) // 데이터 예측 plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolation = 'nearest') plt.show ()

출력 –

1796 년
예측 : [8]


위의 예에서 먼저 길이를 찾고 1796 개의 예를로드했습니다. 다음으로이 데이터를 마지막 요소와 첫 번째 부정적인 요소를 테스트해야하는 학습 데이터로 사용했습니다. 또한 기계가 올바른 데이터를 예측했는지 여부도 확인해야합니다. 이를 위해 숫자 이미지를 표시 한 Matplotlib를 사용했습니다.결론적으로, 숫자 데이터가 있고, 목표가 있고,이를 맞추고 예측할 수 있습니다. 정말 빠르고 쉽습니다.

이미지로 대상 레이블을 시각화 할 수도 있습니다. 아래 코드를 참조하십시오.

자바 로거는 무엇입니까
import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svm numbers = datasets.load_digits () # 이미지와 대상 레이블을 목록에 결합 images_and_labels = list (zip (digits.images, digit.target)) # 모든 요소에 대해 in the list for index, (image, label) in enumerate (images_and_labels [: 8]) : # i + 1 번째 위치에서 2X4의 서브 플롯을 초기화합니다. plt.subplot (2, 4, index + 1) # 이미지 표시 모든 서브 플롯에서 plt.imshow (image, cmap = plt.cm.gray_r, interpolation = 'nearest') # 각 서브 플롯에 제목 추가 plt.title ( 'Training :'+ str (label)) # 플롯 plt를 표시합니다. 보여 주다()

산출-


위의 코드에서 볼 수 있듯이 'zip'함수를 사용하여 이미지와 대상 레이블을 목록에 결합한 다음 변수 (예 : images_and_labels)에 저장했습니다. 그 후, 각 위치에서 2 x 4 그리드의 처음 8 개 요소를 인덱싱했습니다. 그 후 Matplotlib의 도움으로 이미지를 표시하고 제목을 'training'으로 추가했습니다.

사용 사례 - 로지스틱 회귀를 사용한 예측

문제 설명 - 자동차 회사가 새로운 SUV를 시장에 출시했습니다. SUV 판매에 대한 이전 데이터를 사용하여 구매에 관심이있는 사람들의 카테고리를 예측하려고합니다.

이를 위해 내가 가지고있는 데이터 세트를 보겠습니다. UserId, 성별, 나이, 예상 급여 및 구매 열로. 이것은 샘플 데이터 세트 일뿐입니다. 전체 데이터 세트를 여기 . pyCharm에서 데이터를 가져 오면 다음과 같이 보입니다.

이제이 데이터를 이해합시다. 위의 데이터 세트에서 볼 수 있듯이 ID, 성별, 연령 등의 범주가 있습니다. 이제 이러한 범주를 기반으로 기계를 훈련하고 번호를 예측할 것입니다. 구매. 그래서 여기에 독립 변수 ‘연령’,‘예상 급여’, 종속 변수 '구매 함'으로 표시됩니다. 이제지도 학습을 적용합니다. 로지스틱 회귀 알고리즘 기존 데이터를 사용하여 구매 횟수를 확인합니다.

먼저 로지스틱 회귀에 대한 개요를 살펴 보겠습니다.

로지스틱 회귀 – 로지스틱 회귀는 범주 형 종속 변수의 결과를 예측하는 데 사용되는 이진 형식으로 결과를 생성합니다. 종속 변수가 이진일 때 가장 널리 사용됩니다. 즉, 사용 가능한 범주의 수는 로지스틱 회귀의 일반적인 출력이 다음과 같이 2 개입니다.

  • 예 그리고 아니오
  • 진실과 거짓
  • 높고 낮은
  • 통과 및 실패

이제 코드로 시작하기 위해 먼저 Numpy, Matplotlib 및 Pandas 라이브러리를 가져옵니다. 아래 단계에 따라 Pycharm에서 팬더를 가져 오는 것은 매우 쉽습니다.

설정-> 패키지 추가-> Pandas-> 설치

그런 다음 데이터 세트와 별도의 종속 변수 (구매)와 독립 변수 (연령, 급여)를 다음과 같이 가져옵니다.

데이터 세트 = pd.read_csv ( 'Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. values ​​y = dataset.iloc [:, 4] .values ​​print (X) print (y)

다음 단계는 데이터를 훈련하고 테스트하는 것입니다. 일반적인 전략은 레이블이 지정된 모든 데이터를 학습 및 테스트 하위 집합으로 분할하는 것입니다. 일반적으로 학습 하위 집합의 경우 70-80 %, 테스트 하위 집합의 경우 20-30 %의 비율로 취합니다. 따라서 cross_validation을 사용하여 훈련 및 테스트 세트를 생성했습니다.

자바에서 객체를 복사하는 방법
sklearn.cross_validation에서 import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 0)

또한 아래와 같이 StandarScaler를 사용하여 더 나은 성능을 위해 입력 값을 조정할 수 있습니다.

sklearn.preprocessing에서 import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

이제 로지스틱 회귀 모델을 생성합니다.

sklearn.linear_model에서 가져 오기 LogisticRegression 분류기 = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

이것을 사용하여 테스트 세트의 결과를 예측할 수 있습니다.

y_pred = 분류 자. 예측 (X_test)

이제 정확한 예측 수와 사용하지 않은 예측 수를 확인할 수 있습니다. 혼동 행렬 . Y를 양성 사례로 정의하고 N을 음성 사례로 정의하겠습니다. 네 가지 결과는 아래와 같이 2 * 2 혼동 행렬로 공식화됩니다.

sklearn.metrics에서 import confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

산출-

[[65 3] [8 24]]

다음으로 혼동 행렬을 기반으로 정확도를 계산할 수 있습니다. 따라서 위의 예에서 정확도는 다음과 같습니다.

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

= 89 %

우리는 이것을 수동으로했습니다! 이제 다음과 같이 정확도를 계산하고 인쇄하는 내장 함수 'accuracy_score'가 있으므로 기계가 동일한 계산을 수행하는 방법을 살펴 보겠습니다.

from sklearn.metrics import precision_score // import the function precision_score print (accuracy_score (y_test, y_pred) * 100) // 인쇄 정확도

출력 –

89.0

만세! 따라서 우리는 89 %의 정확도로 Scikit learn을 사용하여 로지스틱 회귀를 성공적으로 구현했습니다.

여기를 클릭하세요 위 예측의 완전한 소스를 얻으려면 Python Scikit 학습 라이브러리를 사용합니다.

이것으로, 우리는 파이썬이 제공해야하는 많은 인기있는 알고리즘 중 하나만 다루었습니다.우리는 Scikit의 모든 기본 사항을 다루었습니다.이제 연습을 시작할 수 있습니다. 더 많이 연습할수록 더 많이 배울 것입니다. 더 많은 파이썬 튜토리얼 블로그를 기대 해주세요!

질문이 있으십니까? 이 'Scikit learn'블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 연락 드리겠습니다. 다양한 애플리케이션과 함께 Python에 대한 심층적 인 지식을 얻으려면 다음을 수행 할 수 있습니다. 연중 무휴 지원 및 평생 액세스가 가능한 라이브 온라인 교육.