직접 코드 :
1 # - 코딩 : GBK - 2 에서 sklearn.datasets 가져 load_breast_cancer 3 에서 sklearn.tree 수입 DecisionTreeClassifier 4 에서 sklearn.model_selection의 수입 train_test_split 5 에서 sklearn.tree 오기 export_graphviz 6 수입 PD로 팬더 7 수입 은 GraphVIZ 8 오기 mglearn 9 행 sklearn.ensemble 수입 RandomForestClassifier (10) 에서sklearn.datasets을 가져 make_moons 11 에서 sklearn.ensemble 수입 GradientBoostingClassifier 12 에서 sklearn.svm의 수입 SVC (13) 로부터 pylab의 수입 * 14 DEF :决策树() 15 암 = load_breast_cancer () 16 X_train, X_test, y_train, y_test = train_test_split ( 17 암 .DATA, cancer.target, 계층화 = cancer.target, random_state = 42 ) 18 트리 DecisionTreeClassifier = (random_state = 0) (19) 인쇄(X_train) 20 인쇄 (y_train.shape) 21 tree.fit (X_train, y_train) 22 y_predict = tree.predict (X_test) 23 인쇄 ( " 트레이닝 세트에 대한 정확도 {.3f} " .format (tree.score ( X_train, y_train))) (24) 인쇄 ( " 테스트 세트에 정확도 : {: .3f} " .format (tree.score (X_test, y_test))) 25 '' ' 26 export_graphviz (나무, out_file로 쓰기 = "tree.dot" , class_names은 = "악성", "양성"은, feature_names는 = cancer.feature_names는 27 불순물, = FALSE 작성 = 참) (28) (29) ( "tree.dot") AS F 열기 : 30 dot_graph 도달, f.read = () 31이다 graphviz.Source (dot_graph) 32 '' ' (33)는 인쇄 ( " \ N- {} 기능 키 " .format (tree.feature_importances_ )) (34)가 35 DEF 랜덤 포레스트 () : 36 . X-, Y = make_moons (N_SAMPLES = 100, 소음 = 0.25 random_state = 3 ) 37 . X_train, X_test, y_train, android.permission.FACTOR = train_test_split (X-, Y, 층화 = Y, random_state = 42 ) 38 '' ' 다섯 개 랜덤 포레스트 ' '' 39 숲 = RandomForestClassifier (= n_estimators. (5)random_state = 2 ) 40 forest.fit (X_train, y_train) 41 y_pred = forest.predict (X_test) 42 인쇄 (y_pred) 43 인쇄 (y_test) 44 인쇄 (np.mean (y_test == y_pred)) (45) 도, 축 = plt.subplots (2 3, figsize = (20, 10 )) (46) 에 대한 I (AX, 트리) 에 열거 (지퍼 (axes.ravel () forest.estimators_)) ax.set_title ( " 트리 {} " .format (I )) 47 mglearn.plots.plot_tree_partition (X_train, y_train, 목, AX = AX) 48 (숲 X_train 채우기 = TRUE, 축 AX = [-1, -1, 알파 = 0.4 mglearn.plots.plot_2d_separator ) 49 축 [-1, -1] .set_title ( " 랜덤 포레스트 " ) 50 mglearn. discrete_scatter (X_train [:, 0] X_train [:, 1 ] y_train) 51 52 DEF 梯度提升树() 53 암 = load_breast_cancer () 54 X_train, X_test, y_train, y_test = train_test_split (cancer.data 암. 타겟 random_state = 0) 55 # gbrt = GradientBoostingClassifier (random_state = 0 MAX_DEPTH = 1) 56 gbrt = GradientBoostingClassifier (random_state = 0 learning_rate = 0.01) (57)는 gbrt.fit (X_train, y_train) 58 y_pred = gbrt.predict (X_test) (59) 이 전단 (y_pred) 60 인쇄 (np.mean (y_pred == android.permission.FACTOR.)) (61)가 62 인 DEF SVM을 용이 벡터 () : 63 인 X-, = Y의 mglearn.tools.make_handcrafted_dataset ()는 (64) '' ' 65 감마 파라미터는 가우시안 커널의 폭을 제어하기위한 소정의 파라미터의 식이다. 그것은 "닫기"사이의 점을 결정 얼마나 많은 거리를 의미한다. 66 C 매개 변수는 사용 된 선형 모델과 동일한 정규화 파라미터이다. 그것은 (각 지점 dual_coef_, 더 정확하게, 또는) 각 지점의 중요성을 제한합니다. (67) 68 '' 69 SVM = 소듐 증기 챔버 (커널 = " RBF ' , C = 10, 감마 = 0.1) .fit (X, Y) (70) mglearn.plots.plot_2d_separator (SVM, X, EPS = 0.5 ) 71 mglearn.discrete_scatter (X [:, 0] X [1 :, , Y) 72 # 画出支持向量 73 SV = svm.support_vectors_ 74 sv_labels svm.dual_coef_.ravel = ()> 0 75 mglearn.discrete_scatter (SV [:, 0] SV [:, 1] sv_labels는, S = 15 markeredgewidth = 3 ) 76 PLT .xlabel ( " 기능 0 " ) 77 plt.ylabel ( " 특징 1 " ) 78 plt.show () 79 80 DEF 전처리 벡터 데이터 () 81 암 = load_breast_cancer () 82 X_train, X_test, y_train, android.permission.FACTOR = train_test_split (cancer.data, cancer.target, random_state =. 0) 83 SVC = 소듐 증기 챔버 () 84 svc.fit (X_train , y_train) 85 y_pred = svc.predict (X_test) (86) 이 전단 (np.mean (y_pred == android.permission.FACTOR.)) (87) (88) '' ' 예비 - 크게 ' '' 89 min_on_training = X_train.min (축 = 0) 90 = range_on_training (X_train - min_on_training) .max (축 = 0) (91)는 92 X_train_scaled = (X_train - min_on_training) / range_on_training 93 X_test_scaled = (X_test - min_on_training) / range_on_training 94 인쇄 ( " 각 기능 \ n {}의 최소 " .format (X_train_scaled.min (축선 = 0))) 95 인쇄 ( " 최대 각 기능 \ n {}에 대한 " .format (X_train_scaled.max (축선 = 0))) (96) (97) '' ' 变换' '' 98 min_on_training) / - X_test_scaled = (X_test range_on_training 99 SVC = SVC (가) 100 svc.fit (X_train_scaled, y_train) 101 y_pred = svc.predict (X_test_scaled) (102) 전단 (np.mean (y_pred == android.permission.FACTOR).) 103 IF __name__ == ' __main__ ' : 104 개 전처리 벡터 데이터 ()