문제 1. 설명
그녀는 매우 흥미로운 발견 홍채 애호가의 식물 품종을 가정 해 봅시다. 그녀는 각각의 꽃 아이리스 일부 측정을 수집 :
- 길이 및 폭뿐만 아니라 길이와 폭은 꽃잎 꽃받침, 모든 단위는 cm 측정이다.
그녀는 또한 측정 데이터 조리개의 숫자, 그들이, 식물 전문가 setosa에 속하는 베르 virginica 1 년 또는 3 개 종류로 확인되기 전에 꽃을했다. 이러한 측정을 위해, 그녀는 각각의 꽃 종에 속하는 결정 조리개 될 수있다.
우리는 식물학 매니아 야생에서 세 개의 홍채가 발생하는 것으로 가정합니다. 우리의 목표는 기계 학습 모델을 구축하는 것입니다,
우리는 새로운 홍채 품종을 예측할 수하기 위해 홍채 측정 데이터의 이러한 알려진 품종에서 배울 수 있습니다
. A는이 그래서 우리는, 홍채 측정 데이터의 종류를 알고 있기 때문에
학습 감독
문제. 이 문제에서 우리는 여러 옵션 하나 (아이리스 종)을 예측합니다. 이 문제의 분류 (classifification) 예이다. 가능한 출력 (홍채의 다른 종류)라는 카테고리 (클래스). 이 세 분류 문제 있도록 각 데이터 세트 아이리스 꽃은 세 가지 범주 중 하나에 속합니다.
2, 테스트 코드
1 # 으로 / usr / bin / env를 파이썬! 2 # - * - 코딩 : UTF-8 - * - 3 # @file : Iris.py 4 # @Author :赵路仓 5 # @date : 2020년 2월 26일 6 # @ 내용 : 7 # @Contact : [email protected] 8 9 오기 NP NumPy와 같은 10 수입 PLT 같은 matplotlib.pyplot 11 수입 PD 등 팬더 12 오기 mglearn 13 수입 PD 등 팬더 14 에서 sklearn.datasets가 가져 load_iris # 고전에서 기계 학습, 통계 데이터 세트 인 아이리스 (홍채) 데이터 세트 (15) 에서 sklearn.model_selection 임포트 train_test_split 16 17 iris_dataset = load_iris () #의 load_iris 홍채 무리 객체가 사전 갖는 객체 매우이다 리턴 유사하게, 상기 키 값을 포함하는 (18)는 인쇄 ( " \ N- {} 키나 iris_dataset " .format (iris_dataset.keys ())) #의 인쇄 . 19 인쇄 (iris_dataset [ ' DESCR ' ] [193] + " \ N-. .. " ) #의 데이터 세트의 간단한 설명에 대응 DESCR 키 값. 키 값에 해당하는 target_names 우리가 꽃의 종류를 예측하려는 포함하는 문자열 배열 (20) 인쇄 ( "이름 대상 : {} " .format (iris_dataset [ ' target_names ' ])) # 꽃의 유형 이름 세 종류의 (21)는 인쇄 ( " 피쳐 이름 : {} " .format (iris_dataset [ ' feature_names ' ])) # 꽃 특성 세 종류의, 폭 꽃잎 꽃받침 길이의 길이와 폭 (22)은 인쇄 ( " 데이터 유형 : {} " .format (유형 (iris_dataset [ ' 데이터 ' ]))) # 꽃에 대응하는 데이터 배열의 각 행의 열은 각각의 꽃을 나타내는 네 개의 측정 데이터 (23)는 인쇄 ( " : {} 데이터의 모양 " .format (iris_dataset [' 데이터 ' ] .shape)) #의 배열이 측정 데이터 (150)이 다른 꽃 포함 24 인쇄 ( " 데이터의 처음 다섯 행 : \ N- {} " .format (iris_dataset [ ' 데이터 ' ] :. 5])) # 전면 꽃 5 개 개의 데이터 (25) 전단 ( " 타겟의 타입 : {} " .format (유형 (iris_dataset [ ' 타겟 ' ]))) #는 1 차원 배열 각 꽃에 대응하는 데이터 인 26 인쇄 ( " 타겟의 형상 {} " .format (iris_dataset [ ' 타겟 ' ]. 모양)) # 27 인쇄 ( " 대상 : \ N- {} " .format (iris_dataset [ ' 타겟 ' ])) #의 종 012 세 종류를 나타내는 세 개의 정수로 28 (29) . X_train, X_test, Y_train, android.permission.FACTOR을 Train_test_split = (iris_dataset [ ' 데이터 ' ] iris_dataset [ ' 타겟 ' , random_state = 0) (30) 이 전단 ( " X_train 모양 {} " .format (X_train.shape)) (31)는 인쇄 ( " Y_train 모양 {} " .format (Y_train. 모양)) (32) 인쇄 (" X_test 형상 {}는 " .format (X_test.shape)) (33)는 인쇄 ( " . android.permission.FACTOR 형태 : {} " .format (Y_test.shape)) (34)는 35 개 # 데이터 X_train DataFrame 사용하여 만든 36 # iris_dataset.feature_names를 이용하여 문자를 표시 데이터 (37) [ iris_dataframe = pd.DataFrame (X_train, 열 = iris_dataset.feature_names) # 횡축 횡축 제목 38 # 사용 DataFrame가 y_trian 들여진 산점도 행렬 작성 39 (iris_dataframe를 GRR = pd.plotting.scatter_matrix을 Y_train = C, figsize = (15, 15), 표시 자 = ' O ' , hist_kwds = { " 빈 "20}, S = 60, 알파 = 0.8, = cmap를 mglearn.cm3) 40 plt.show ()
주 : 꽃의 데이터 배열을 나타내는 각각의 로우는 4 개의 열은 각각 꽃, 꽃 (150)의 다른 전체의 측정 데이터를 나타내는 것을 특징으로한다. 타겟이 1 차원 배열이며, 각 꽃 대표 데이터는 그 내부에, 0,1,2 세 개의 꽃 세 가지 종의 정수를 나타낸다.
3, 측정 성공 : 훈련 데이터와 테스트 데이터
첫째, 모델은 모델들이 경기를 100 %이어야합니다 테스트에 사용되는 데이터 모델을 구축하도록되어 있기 때문에, 모델을 구축하기 위해 데이터를 평가하는 데 사용할 수 없습니다. 따라서 모델을 테스트하기 위해 새로운 데이터를 사용합니다.
기계 학습 모델을 구성하는 데 사용되는 데이터의 일부라는 교육
훈련 데이터 (교육 자료)
또는
트레이닝 세트 (교육 SET)
모델을 학습 기계를 구성하는 데 사용되는 데이터입니다. 나머지 데이터라는 모델의 성능을 평가하는 데 사용되는
테스트 데이터 (테스트 데이터)
,
- 테스트 세트 (테스트 세트)
또는
휴가 세트 (SET의 HOLD-OUT을)
. train_test_split scikit 배울 데이터 세트 및 분할을 방해 할 수 기능을. 75 %의 라벨 및 트레이닝 세트와 같은 대응하는 데이터 선, 및 상기 테스트 데이터 세트와 탭은 25 %, 75 % 및 25 %는 상황에 따라 변경 될 수있다.
즉, 훈련은 데이터 모델을 구축하고, 테스트 데이터는 성공의 모델 여부를 테스트하는 것입니다. X 입력에 의해 표현되는 각각 Y 출력에 의해 표시되는 네 개의 데이터 꽃.
random_state 파라미터를 지정 난수 발생기 시드를 이용하여, 상기 데이터 세트를 생성 방해 의사 난수를 사용 train_test_split 기능. 함수의 출력이 고정되도록,이 라인의 출력은 항상 동일하다.
코드의 부분은 다음과 같습니다 :
X_train, X_test, Y_train, Y_test = train_test_split (iris_dataset [ ' 데이터 ' ] iris_dataset [ ' 타겟 ' , random_state = 0) 인쇄 ( " X_train 형상 {} " .format (X_train.shape)) 인쇄 ( " Y_train 형상 {} " .format (Y_train.shape)) 인쇄 ( " X_test 형상 {} " .format (X_test.shape)) 인쇄 ( " Y_test 형상 {} " .format (Y_test.shape))
4, 관찰
시각적 렌더링 방식은 산포도 (산점도)이다. 또 다른 특징에 특성 X 축, Y 축으로하는 산포도 데이터는 데이터 요소들 각각은도에 지점으로 플롯. 불행하게도, 컴퓨터 화면 두 치수는, 그래서 우리는 두 가지 기능 (아마도 세)을 그릴 수 있습니다. 더 세 이상 이런 식으로 설정 하드 특성 데이터 역모를 꾸몄다. 이 문제를 해결하는 한 가지 방법은 산점도 행렬 (쌍 플롯)을 그리는 것이다.
코드의 부분은 다음과 같습니다 :
1 개 # 사용 데이터를 생성 DataFrame X_train 2 # 사용 iris_dataset.feature_names 문자 데이터를 표시 . 3 iris_dataframe = pd.DataFrame (X_train, 열 = iris_dataset.feature_names)는 # 횡축 횡축 이름 4 # 이용 산포도가 DataFrame 만들어 행렬 y_trian 착색 따른 . 5 GRR = pd.plotting.scatter_matrix (iris_dataframe, C = Y_train, figsize = (15, 15), 표시 자 = ' O ' , hist_kwds = { ' 빈들 ' } 20, S = 60, = 알파 0.8, CMAP = mglearn.cm3) . 6 plt.show ()
데이터 표시 결과 :