Python 機械学習デシジョン ツリーの詳細な紹介
デシジョン ツリー (DT) は、分類と回帰に使用される教師なし学習方法です。
利点: 計算の複雑さは高くなく、出力結果は理解しやすく、中間値の欠落の影響を受けず、無関係な特徴データを処理できます
欠点: 過剰一致の問題が発生する可能性があります
適用可能なデータ型: 数値および標準ソースコードのダウンロードを入力 https://www.manning.com/books/machine-learning-in-action
デモを実行する
キーアルゴリズム
関数createBranchを分割する最適な特徴を見つけて、戻り結果をブランチノードに追加します
returnブランチノード
対応するコード def createTree(dataSet,labels):
class
List
if classList.
count(classList[0 ]) == len(classList): 返された分類リストのカウント型が同じ場合は、この型を返します。子ノードが分類できるかどうか、分類できる場合は 1 つのタイプを返します。そうでない場合は、
再帰下方分類 dataSet にそれ以上の特徴がありません。要素が 1 つしかない場合は、 return MajorCnt(classList) bestFeat = BESTFEATURETOSPLIT(DATASET)最適な機能インデックスBestFeatLabel = labels [bestfeat]を選択し、このラベルフリッパーまたはサーフェスを取得しますmytree = {bestfeatlabel:{}}たとえば、datasetにある
uniquevals = set set (featValues) set uniqueVALS の for 値の種類に応じて分類されます: Sublabels = label [:] #copy all oflabels, so time do台無しに既存のラベル mytree [Value] [Value] = CreateTree ( splitdataset (dataset , bestFeat, value),subLabels) return myTree
データセットを分割する前後の情報の変化を情報ゲインと呼びます。データセットを分割する最大の原理は、順序付けされていないデータをより順序付けすることです。 これは、パイカットの原則として理解されます:
単位エントロピーを使用して、情報の複雑さと量を説明します。 ケーキの密度に対応して、同じ密度の垂直にカットされたケーキであれば、
各部分の重量 g = 合計 G * 大圏におけるその割合! 同様に、除算後の情報エントロピーが同じである場合、データの各小さな部分の小さい h = pro * 合計 H、および合計 h[i] = H となります。
ただし、必要なのはその逆です。必要なのは、同じ情報エントロピーではなく、不均一な情報です。たとえば、上の緑のものは草の餡、黄色のものはリンゴの餡、青のものは紫色のサツマイモの餡である可能性があり、それぞれ密度が異なります。 !
正しく分割する必要があります!それを整理して、さまざまな詰め物を近似する線を見つけます。 ここでの小さな h は最小化され、最終的には面積が変化しない状態で合計 H が最小値に近づきます。これが最適化問題の解を求めます。
デバッグプロセス
calcShannonEnt
log(prob,2) log(1,2) = 0;2^0=1 でなければならないため、prob
dataSet の featVec の 25 行: 頻度のカウントfor prop
chooseBestFeatureToSplit()
0.9709505944546686 = calcShannonEnt(dataSet)
#データセットの各サブ項目が同じカテゴリに属しているかどうかを検出します: 値がすべて a である場合、結果はすべて y または n になります。したがって、パラメーターは 2 つだけ入力されます
0.5509775004326937 = += prob * calcShannonEnt(subDataSet) サブセットを分離した後、確率 * シャノン ドロップ、取得された合計、元の全体的なシャノンのドロップ率
# 数据越接近,香浓熵值越少,越接近0 ,越不同,越多分逻辑,香浓熵就越大 # 只计算 其dataSet的featVec[-1] 结果标签 def calcShannonEnt(dataSet):
0.4199730940219749 infoGain = BaseEntropy - newEntropy
概要:
最初はコードが理解できず、何をするのか理解できませんでした。分類、私たちの目標は、大量のデータを分類し、ラベルでラベルを付けることです。
k-nearby assign([0, 0], group,labels, 3) と同様に、新しいデータ [0,0] がグループに分類され、k=3 近傍アルゴリズムに従ってデータにラベルが付けられることを意味します。 グループがラベルに対応!
後で見ました
そして、データdataSetがディメンションの値を意味し、最後のものが魚であるかどうか、結果ラベルであることを理解しました
それで、私たちは次のようにする必要があります各次元を切り出します + 結果のラベルは比較と分類のために 2 次元配列に変換されます。テストでは、最初の n 次元の値をベクトルに入力し、出力は「はい」か「いいえ」になります。一見するとめまいがするように見えますが、コードを見るだけで簡単に理解できるので、考えを整理する必要があります。
ターゲットと初期データを理解すると、classList が結果ラベルであることがわかります。 、分類対象のデータセットに対応する対応する結果ラベルです
、ラベルは開始データセットの次元に対応する特徴名です。特徴の名前です。strname
bestFeatLabel は、最適な分類特徴の次元名です。 N
featValues は最初の次元または 2 番目の次元であり、bestFeatLabel の次元の下にある値の配列です。新しい分類比較を行うために使用されるのは、このディメンションの下のグループです。
uniqueVals は set を使用して同じカテゴリに属するかどうかを判断します。
例: dataSet = [[1, 1, 'yes'],[0, 1, 'yes'],[1, 0, 'no'] ,[1, 0 , 'no'],[0, 0, 'no']]
Labels = ['no surfaceing','flippers',]
createTree like this:{'flippers': {0: 'no ', 1: 'yes'}} は、表面化しない次元を直接省略します
以上がPython 機械学習デシジョン ツリーの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。
