기계 학습 - 간단한 분류보다 (포함 트리, 순진 베이 즈, 임의 숲, SVM의 SVM) 소스 코드 자율 학습 가이드를 포함하여

직접 코드 :

  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 개      전처리 벡터 데이터 ()

 

추천

출처www.cnblogs.com/smartisn/p/12578560.html