scikit learn이 뭐예요? - 유행 머신러닝 파이썬 라이브러리 입문 안내서.
Scikit learn은 데이터 과학과 기계 학습에서 가장 광범위하게 사용되는 Python 소프트웨어 패키지 중의 하나이다.그것은 당신으로 하여금 많은 조작을 실행할 수 있게 하고 각종 알고리즘을 제공할 수 있게 한다.Scikit learn은 클래스, 방법, 함수에 대한 우수한 문서와 알고리즘 배경에 대한 설명을 제공합니다.
Scikit 학습 지원:
Scikit learn은 머신러닝과 관련된 모든 기능을 제공하지 않습니다.예를 들어, 다음과 같은 모든 기능이 지원되지 않습니다.
Scikit learn은 오픈 소스 패키지입니다.파이썬 생태계의 대다수 물건처럼 상업용도로도 무료로 사용할 수 있다.BSD 라이센스에 따라 승인됩니다.
본고는 scikit 학습의 일부 가능성을 간단명료하게 소개하고 너무 많은 세부 사항을 필요로 하지 않는 데 목적을 둔다.
데이터 사전 처리
scikitlearn을 사용하여 기계 학습 알고리즘을 위해 데이터를 준비할 수 있습니다. 표준화 또는 규범화 데이터, 인코딩 분류 변수 등입니다.
우선 사용할 NumPy 배열을 정의합니다.
>>> import numpy as np
>>> x = np.array([[0.1, 1.0, 22.8],
... [0.5, 5.0, 41.2],
... [1.2, 12.0, 2.8],
... [0.8, 8.0, 14.0]])
>>> x
array([[ 0.1, 1. , 22.8],
[ 0.5, 5. , 41.2],
[ 1.2, 12. , 2.8],
[ 0.8, 8. , 14. ]])
이러한 방식으로 데이터를 변환해야 합니다. 열(특징)당 평균 값은 0이고 표준 차이는 1입니다.너는 sklearn 과정을 신청할 수 있다.사전 처리.StandardScaler에서 다음을 수행합니다.>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler()
>>> scaled_x = scaler.fit_transform(x)
>>> scaler.scale_
array([ 0.40311289, 4.03112887, 14.04421589])
>>> scaler.mean_
array([ 0.65, 6.5 , 20.2 ])
>>> scaler.var_
array([1.6250e-01, 1.6250e+01, 1.9724e+02])
>>> scaled_x
array([[-1.36438208, -1.36438208, 0.18512959],
[-0.3721042 , -0.3721042 , 1.4952775 ],
[ 1.36438208, 1.36438208, -1.23894421],
[ 0.3721042 , 0.3721042 , -0.44146288]])
>>> scaled_x.mean().round(decimals=4)
0.0
>>> scaled_x.mean(axis=0)
array([ 1.66533454e-16, -1.38777878e-17, 1.52655666e-16])
>>> scaled_x.std(axis=0)
array([1., 1., 1.])
>>> scaler.inverse_transform(scaled_x)
array([[ 0.1, 1. , 22.8],
[ 0.5, 5. , 41.2],
[ 1.2, 12. , 2.8],
[ 0.8, 8. , 14. ]])
때로는 의미 있는 숫자로 변환해야 하는 분류 데이터가 있을 수도 있습니다.그 중 하나는 sklearn 클래스를 사용하는 것이다.사전 처리.OneHotEncoder.다음 회사의 역할 그룹에 대한 예제를 고려하십시오.>>> from sklearn.preprocessing import OneHotEncoder
>>> roles = np.array([('Tom', 'manager'),
... ('Mary', 'developer'),
... ('Ann', 'recruiter'),
... ('Jim', 'developer')])
>>> roles
array([['Tom', 'manager'],
['Mary', 'developer'],
['Ann', 'recruiter'],
['Jim', 'developer']], dtype='<u9')>>> encoder = OneHotEncoder()
>>> encoded_roles = encoder.fit_transform(roles[:, [1]])
>>> encoded_roles.toarray()
array([[0., 1., 0.],
[1., 0., 0.],
[0., 0., 1.],
[1., 0., 0.]])</u9')>
위의 예시에서 object encoded_roles의 첫 번째 열은 모든 직원이 개발자인지 여부를 표시합니다.두 번째와 네 번째 직원 (마리와 짐) 은.두 번째 열은 사장의 직위와 관련이 있다.첫 번째 직원(Tom)만이 이 직위를 가지고 있다.마지막으로 세 번째 열은 채용 인원에 대응하고 세 번째 직원(Ann)은 채용 인원이다.항복하다
차원을 낮추는 것은 다차원 데이터 집합을 선택하거나 추출하는 데 가장 중요한 구성 요소(특징)와 관련된다.Scikit learn은 몇 가지 차원을 낮추는 방법을 제공했다.그중 하나는 주성분 분석이나 주성분 분석이다.
모델 선택
기계 학습 모델을 훈련하고 테스트할 때 데이터 집합을 무작위로 훈련 집합과 테스트 집합으로 분할해야 한다.이것은 입력과 그에 상응하는 출력을 포함한다.함수 sklearn.model_선택.train\u test\u split () 는 다음과 같은 경우에 유용합니다.
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
>>> x, y = np.arange(1, 21).reshape(-1, 2), np.arange(3, 40, 4)
>>> x
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12],
[13, 14],
[15, 16],
[17, 18],
[19, 20]])
>>> y
array([ 3, 7, 11, 15, 19, 23, 27, 31, 35, 39])
>>> x_train, x_test, y_train, y_test =\
... train_test_split(x, y, test_size=0.4, random_state=0)
>>> x_train
array([[ 3, 4],
[13, 14],
[15, 16],
[ 7, 8],
[ 1, 2],
[11, 12]])
>>> y_train
array([ 7, 27, 31, 15, 3, 23])
>>> x_test
array([[ 5, 6],
[17, 18],
[ 9, 10],
[19, 20]])
>>> y_test
array([11, 35, 19, 39])
일반 데이터 집합 분할을 실행하는 것 외에 scikitlearn은 교차 검증을 실현하는 방법을 제공했다. 격자 검색을 이용하여 모델의 초 파라미터를 조정하고 모델의 성능을 나타내는 많은 수량(예를 들어 확정 계수, 균형 오차, 해석 방차 분수, 혼동 행렬, 분류 보고서, f-도량 등)을 계산했다.데이터 집합
Scikit learn은 학습과 테스트 모델에 적합한 몇 가지 데이터 집합을 제공합니다.이것들은 대부분 모두가 알고 있는 데이터 집합이다.그것들은 충분히 커서 테스트 모델에 충분한 데이터량을 제공할 수 있지만 충분히 작아서 받아들일 수 있는 훈련 지속 시간을 실현할 수 있다.
예를 들어 함수 sklearn.데이터 세트.load_boston () 은 보스턴 지역의 주택 가격에 대한 데이터를 반환합니다 (가격은 업데이트되지 않습니다!).관찰 값은 총 506개이고 입력 행렬은 13열(피쳐)입니다.
>>> from sklearn.datasets import load_boston
>>> x, y = load_boston(return_X_y=True)
>>> x.shape, y.shape
((506, 13), (506,))
이 데이터 집합은 다원 회귀에 적용된다.또 다른 예는 포도주와 관련된 데이터 집합이다.그것은 함수 sklearn을 통해 얻을 수 있다.데이터 세트.load_wine():
>>> from sklearn.datasets import load_wine
>>> x, y = load_wine(return_X_y=True)
>>> x.shape, y.shape
((178, 13), (178,))
>>> np.unique(y)
array([0, 1, 2])
이 데이터 집합은 분류에 적합하다.그것은 이탈리아에서 온 세 종류의 다른 포도주 재배자와 관련된 13개의 특징을 포함하고 있다.모두 178차례의 관찰이 있었다.회귀
Scikitlearn은 다양한 회귀 방법을 지원한다. 선형 회귀와 k근린부터 다항식 회귀, 벡터 회귀 지원, 정책 결정 트리 등을 통해 무작위 삼림과 사다리 향상 등 집적 방법을 지원한다.신경 네트워크도 지원하지만 TensorFlow 등 전문 라이브러리와는 다르다.
우리는 이곳에서 무작위 삼림 회귀를 표시할 것이다.
일반적으로 필요한 패키지, 클래스 및 함수를 가져오여 회귀 프로세스를 시작합니다.
>>> import numpy as np
>>> from sklearn.datasets import load_boston
>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.model_selection import train_test_split
다음 단계는 처리할 데이터를 얻고 데이터 집합을 훈련과 테스트 서브집합으로 나누는 것이다.본고는 보스턴 데이터 세트를 사용합니다.>>> x, y = load_boston(return_X_y=True)
>>> x_train, x_test, y_train, y_test =\
... train_test_split(x, y, test_size=0.33, random_state=0)
어떤 방법은 데이터를 확장(표준화)해야 하지만, 다른 방법은 선택할 수 있다.이번에 우리는 계속 확장을 진행하지 않을 것이다.이제 회귀기를 만들고 훈련에 사용할 데이터 서브셋을 선택하여 맞춤 (훈련) 해야 합니다.
>>> regressor = RandomForestRegressor(n_estimators=10, random_state=0)
>>> regressor.fit(x_train, y_train)
RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,
max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10,
n_jobs=None, oob_score=False, random_state=0, verbose=0,
warm_start=False)
일단 모델에 대한 훈련이 진행되면 우리는 훈련 집합에 있는 점수(결정 계수)와 테스트 집합에서 더욱 중요한 것이 무엇인지 검사할 것이다. 즉, 모델을 의합하는 데 사용되지 않는 데이터를 사용하는 것이다.>>> regressor.score(x_train, y_train)
0.9680930547240916
>>> regressor.score(x_test, y_test)
0.8219576562705848
이 방법을 사용하면 충분한 모델을 사용하여 새로운 입력 데이터 x_new의 출력을 예측할 수 있습니다.predict (): 회귀기.예측(x_new).분류
Scikit learn은 회귀와 매우 유사한 방식으로 분류를 수행합니다.논리적 회귀와 k근접, 벡터기, 소박한 베일스, 의사결정 트리, 그리고 랜덤 숲, AdaBoost와 사다리 향상 등 다양한 분류 방법을 지원한다.
본고는 무작위 삼림 방법을 어떻게 사용하여 분류하는지 설명하였다.이 방법은 컴백 상황과 매우 비슷하다.그러나 현재 우리는 포도주 데이터 집합을 사용하여 분류기를 정의하고 계수를 확정하는 것이 아니라 분류 정밀도로 평가한다.
>>> import numpy as np
>>> from sklearn.datasets import load_wine
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.model_selection import train_test_split
>>> x, y = load_wine(return_X_y=True)
>>> x_train, x_test, y_train, y_test =\
... train_test_split(x, y, test_size=0.33, random_state=0)
>>> classifier = RandomForestClassifier(n_estimators=10, random_state=0)
>>> classifier.fit(x_train, y_train)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10,
n_jobs=None, oob_score=False, random_state=0, verbose=0,
warm_start=False)
>>> classifier.score(x_train, y_train)
1.0
>>> classifier.score(x_test, y_test)
1.0
이 방법을 사용하면 충분한 모델을 사용하여 새로운 입력 데이터의 출력을 예측할 수 있다.predict (): 회귀기.예측(x_new).분류 분석
분류는 무감독 학습의 한 부분으로 scikit 학습에서 광범위한 지지를 받는다.k-means 집합을 제외하고 친화 전파, 스펙트럼 집합, 응집 집합 등도 응용할 수 있다.
우리는 본문에서 k-means 집합을 보여줄 것이다.그것을 실현할 때, 표준화 또는 규범화 데이터가 의미가 있는지, 특히 어떤 거리의 도량이 적합한지 조심하십시오. (대부분의 경우, 그것은 유클리드 거리일 수 있습니다.)
마찬가지로, 우리는 데이터를 가져오고 얻는 것부터 시작한다.이번에 우리는 NumPy와 sklearn을 가지고 갈 것이다.족족KMeans:
이 방법을 사용하면 충분한 모델을 사용하여 새로운 입력 데이터 x_new의 출력을 예측할 수 있습니다.predict (): 회귀기.예측(x_new).
분류
Scikit learn은 회귀와 매우 유사한 방식으로 분류를 수행합니다.논리적 회귀와 k근접, 벡터기, 소박한 베일스, 의사결정 트리, 그리고 랜덤 숲, AdaBoost와 사다리 향상 등 다양한 분류 방법을 지원한다.
본고는 무작위 삼림 방법을 어떻게 사용하여 분류하는지 설명하였다.이 방법은 컴백 상황과 매우 비슷하다.그러나 현재 우리는 포도주 데이터 집합을 사용하여 분류기를 정의하고 계수를 확정하는 것이 아니라 분류 정밀도로 평가한다.
>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> x = np.array([(0.0, 0.0),
... (9.9, 8.1),
... (-1.0, 1.0),
... (7.1, 5.6),
... (-5.0, -5.5),
... (8.0, 9.8),
... (0.5, 0.5)])
>>> x
array([[ 0. , 0. ],
[ 9.9, 8.1],
[-1. , 1. ],
[ 7.1, 5.6],
[-5. , -5.5],
[ 8. , 9.8],
[ 0.5, 0.5]])
다음 단계는 데이터를 확장하는 것이지만, 항상 강제적인 것은 아니다.그러나 많은 상황에서 이것은 확실히 좋은 생각이다.그러나 데이터의 사전 처리가 완료되면 KMeans 인스턴스를 생성하여 데이터와 일치시킵니다.>>> cluster_analyzer = KMeans(n_clusters=3, init='k-means++')
>>> cluster_analyzer.fit()
>>> cluster_analyzer.fit(x)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
n_clusters=3, n_init=10, n_jobs=None, precompute_distances='auto',
random_state=None, tol=0.0001, verbose=0)
이제 클러스터 중심의 좌표와 각 관측에 속한 클러스터의 레이블과 같은 결과를 얻을 준비가 되었습니다.>>> cluster_analyzer.cluster_centers_
array([[ 8.33333333, 7.83333333],
[-0.16666667, 0.5 ],
[-5. , -5.5 ]])
>>> cluster_analyzer.labels_
array([1, 0, 1, 0, 2, 0, 1], dtype=int32)
너는 이 방법을 사용할 수 있다.predict () 는 새로운 관찰을 위해 가장 가까운 분류를 가져옵니다.결론
본고는 scikitlearn의 기초 지식을 보여주었는데 이것은 매우 유행하는 데이터 과학과 기계 학습Python 패키지이다.이 라이브러리는 이러한 목적으로 사용되는 기본 Python 라이브러리 중 하나입니다.
더 많은 정보를 알고 싶다면, 사용할 수 있는 많은 자원을 쉽게 찾을 수 있습니다.Duomly의 기계 학습 과정은 scikit learn의 많은 기능을 포함한다.앞에서 말한 바와 같이 공식 문서의 내용은 광범위하고 전면적이다.클래스나 함수를 적용하기 전에 검사를 해야 합니다.
읽어주셔서 감사합니다!
Reference
이 문제에 관하여(scikit learn이 뭐예요? - 유행 머신러닝 파이썬 라이브러리 입문 안내서.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/duomly/what-is-scikit-learn-a-beginner-guide-to-popular-machine-learning-python-library-1f06텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)