Pythonマシン学習【二】-意思決定ツリー
Pythonマシン学習【二】-意思決定ツリー
原文アドレス:Pythonマシン学習【二】-意思決定ツリー
前回sklearn Pythonライブラリに基づいてK近隣モデル(KNN)を作成し、機械学習Hello Worldの例を実現した.KNNは最も簡単な分類アルゴリズムであり、簡単に言えば新しい値を予測する際に、その最近のK点がどのタイプであるかによってどのカテゴリに属するかを判断する.KNNをマスターしたのも简単な入门の机械の学习で、新しいものを学ぶのはいつも浅から深くて、今度は别の分类のアルゴリズムを学ぶつもりです:决定の木
一、意思決定ツリー
決定ツリーアルゴリズムはツリー構造を採用し,層推理を用いて最終的な分類を実現し,if−then−else規則に基づく監視学習アルゴリズムであり,決定ツリーのこれらの規則は人工的に制定されたものではなく訓練によって得られる.
監視学習:指定されたデータ、予測ラベル、タグ付きトレーニングデータから予測関数を導出します.監視なし学習:所与のデータは、非表示の構造を探し、標識のない訓練データから結論を推定する.
私达の生活の中で多くの决定木の例があって、简単な栗を挙げます:银行は取引先に対して信用登录の评価を行って、期限切れの记录があるかどうか、期限切れの未返済の记录があるかどうか、不动产があるかどうかなどの指标によって评価を行って、以下の最も简単な模型を得ることができます:
二、目標
178個のワインサンプルデータが知られており、各サンプルはアルコール、リンゴ酸、灰、灰のアルカリ性、マグネシウム、総フェノールなど計13個の特徴をサンプリングし、ワインは3種類に分けられ、それぞれclass_0、class_1、class_2を表示します.
178個のワインの中:class_0は59個、class_1は71個、class_2は48個あり、178個のデータの70%を訓練データとして取り、訓練モデル、モデル評価を経て、残りの30%のデータサンプルのタイプを予測し、精度を計算し、学習によって生成された決定ツリーを表示した.
三、実現手順 sklearn を取り付ける Python を実現取得データ データ前処理 トレーニングモデル モデル評価 は、決定ツリー を描く.
graphvizは図形描画ツールで、dotスクリプトに基づいて木の図を描くことができます.windowsプラットフォームでgraphvizを使用するにはgraphvizソフトウェアをインストールしてからgraphviz pythonモジュールをインストールする必要があります. graphvizソフトウェア をインストール
ダウンロードアドレス:graphvizソフトウェア注意インストール時にAdd Graphviz to the system PATHをチェックし、インストールに成功した後、PyCharmを再起動する必要がある graphvizモジュール をインストールは、決定ツリー を描く.
完全なコード
リファレンス決定木sklearnでの実現–実戦ワイン分類事例 Graphvizピクチャーは中国語の文字化けしの問題を表示します
原文アドレス:Pythonマシン学習【二】-意思決定ツリー
前回sklearn Pythonライブラリに基づいてK近隣モデル(KNN)を作成し、機械学習Hello Worldの例を実現した.KNNは最も簡単な分類アルゴリズムであり、簡単に言えば新しい値を予測する際に、その最近のK点がどのタイプであるかによってどのカテゴリに属するかを判断する.KNNをマスターしたのも简単な入门の机械の学习で、新しいものを学ぶのはいつも浅から深くて、今度は别の分类のアルゴリズムを学ぶつもりです:决定の木
一、意思決定ツリー
決定ツリーアルゴリズムはツリー構造を採用し,層推理を用いて最終的な分類を実現し,if−then−else規則に基づく監視学習アルゴリズムであり,決定ツリーのこれらの規則は人工的に制定されたものではなく訓練によって得られる.
監視学習:指定されたデータ、予測ラベル、タグ付きトレーニングデータから予測関数を導出します.監視なし学習:所与のデータは、非表示の構造を探し、標識のない訓練データから結論を推定する.
私达の生活の中で多くの决定木の例があって、简単な栗を挙げます:银行は取引先に対して信用登录の评価を行って、期限切れの记录があるかどうか、期限切れの未返済の记录があるかどうか、不动产があるかどうかなどの指标によって评価を行って、以下の最も简単な模型を得ることができます:
二、目標
178個のワインサンプルデータが知られており、各サンプルはアルコール、リンゴ酸、灰、灰のアルカリ性、マグネシウム、総フェノールなど計13個の特徴をサンプリングし、ワインは3種類に分けられ、それぞれclass_0、class_1、class_2を表示します.
178個のワインの中:class_0は59個、class_1は71個、class_2は48個あり、178個のデータの70%を訓練データとして取り、訓練モデル、モデル評価を経て、残りの30%のデータサンプルのタイプを予測し、精度を計算し、学習によって生成された決定ツリーを表示した.
三、実現手順
pip install -U scikit-learn
from sklearn import datasets
# ,sklearn
wines = datasets.load_wine()
"""
178 , 13 (feature_names)
feature_names:
alcohol:
malic_acid:
ash:
alcalinity_of_ash:
magnesium:
total_phenols:
flavanoids:
nonflavanoid_phenols:
proanthocyanins:
color_intensity:
hue:
od280/od315_of_diluted_wines: od280/od315
proline:
(classes)
classes:
class_0
class_1
class_2
"""
print(" ", list(wines.target_names)) # ['class_0', 'class_1', 'class_2']
print(" ", list(wines.feature_names)) # ,
print(" ", wines.data.shape) # (178, 13)
x_train, x_test, y_train, y_test = train_test_split(wines.data, wines.target, test_size=0.3) # 、 0.3
print(" ", x_train.shape) # (124, 13)
print(" ", x_test.shape) # (54, 13)
clf = tree.DecisionTreeClassifier(criterion="entropy") #
clf = clf.fit(x_train, y_train)
score = clf.score(x_test, y_test)
print(" ", score) # 0.9629629629629629
graphvizは図形描画ツールで、dotスクリプトに基づいて木の図を描くことができます.windowsプラットフォームでgraphvizを使用するにはgraphvizソフトウェアをインストールしてからgraphviz pythonモジュールをインストールする必要があります.
ダウンロードアドレス:graphvizソフトウェア注意インストール時にAdd Graphviz to the system PATHをチェックし、インストールに成功した後、PyCharmを再起動する必要がある
pip install graphviz
import graphviz
feature_name = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'od280/od315 ', ' ']
class_names = ["class_0", "class_1", "class_2"]
dot_data = tree.export_graphviz(clf, out_file='tree.dot', feature_names=feature_name, class_names=class_names, filled=True, rounded=True)
#
with open("tree.dot", encoding='utf-8') as f:
dot_graph = f.read()
graph = graphviz.Source(dot_graph.replace("helvetica", "FangSong"))
graph.view()
完全なコード
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import tree
import graphviz
# ,sklearn
wines = datasets.load_wine()
"""
178 , 13 (feature_names)
feature_names:
alcohol:
malic_acid:
ash:
alcalinity_of_ash:
magnesium:
total_phenols:
flavanoids:
nonflavanoid_phenols:
proanthocyanins:
color_intensity:
hue:
od280/od315_of_diluted_wines: od280/od315
proline:
(classes)
classes:
class_0
class_1
class_2
"""
print(" ", list(wines.target_names)) # ['class_0', 'class_1', 'class_2']
print(" ", list(wines.feature_names)) # ,
print(" ", wines.data.shape) # (178, 13)
x_train, x_test, y_train, y_test = train_test_split(wines.data, wines.target, test_size=0.3) # 、 0.3
print(" ", x_train.shape)
print(" ", x_test.shape)
clf = tree.DecisionTreeClassifier(criterion="entropy") #
clf = clf.fit(x_train, y_train)
score = clf.score(x_test, y_test)
print(" ", score)
feature_name = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'od280/od315 ', ' ']
class_names = ["class_0", "class_1", "class_2"]
dot_data = tree.export_graphviz(clf, out_file='tree.dot', feature_names=feature_name, class_names=class_names, filled=True, rounded=True)
#
with open("tree.dot", encoding='utf-8') as f:
dot_graph = f.read()
graph = graphviz.Source(dot_graph.replace("helvetica", "FangSong"))
graph.view()
リファレンス