機械学習 - ソースコード自習ガイドなど、より簡単な分類(含むツリー、ナイーブベイズ、ランダム森林、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_NAMEに= 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      '' ' 5つのランダムフォレスト' '' 
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、ツリー)列挙(ZIP(axes.ravel()、forest.estimators_)):ax.set_title(" ツリー{} " .format(I ))
 47      mglearn.plots.plot_tree_partition(X_train、y_train、木、AX = AX)
 48     mglearn.plots.plot_2d_separator(森林、X_train、フィル= trueの場合、AX =軸[-1、-1]、アルファ= 0.4 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.0157は     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 = SVC(カーネル= ' 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 = 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      X_test_scaled =(X_test - min_on_training)/ 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