Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengeluarkan Peraturan Keputusan daripada scikit-learn Decision Trees?

Bagaimana untuk Mengeluarkan Peraturan Keputusan daripada scikit-learn Decision Trees?

Mary-Kate Olsen
Lepaskan: 2024-10-27 09:14:03
asal
1087 orang telah melayarinya

How to Extract Decision Rules from scikit-learn Decision Trees?

Pengeluaran Peraturan Keputusan daripada scikit-learn Decision Trees

Pernyataan Masalah:

Bolehkah peraturan keputusan yang mendasari model pepohon keputusan terlatih diekstrak sebagai senarai teks?

Penyelesaian:

Menggunakan fungsi tree_to_code, adalah mungkin untuk menjana fungsi Python yang sah yang mewakili peraturan keputusan pepohon keputusan scikit-learn:

<code class="python">from sklearn.tree import _tree

def tree_to_code(tree, feature_names):
    tree_ = tree.tree_
    feature_name = [
        feature_names[i] if i != _tree.TREE_UNDEFINED else "undefined!"
        for i in tree_.feature
    ]
    print("def tree({}):".format(", ".join(feature_names)))

    def recurse(node, depth):
        indent = "  " * depth
        if tree_.feature[node] != _tree.TREE_UNDEFINED:
            name = feature_name[node]
            threshold = tree_.threshold[node]
            print("{}if {} <= {}:".format(indent, name, threshold))
            recurse(tree_.children_left[node], depth + 1)
            print("{}else:  # if {} > {}".format(indent, name, threshold))
            recurse(tree_.children_right[node], depth + 1)
        else:
            print("{}return {}".format(indent, tree_.value[node]))

    recurse(0, 1)</code>
Salin selepas log masuk

Contoh:

Untuk pepohon keputusan yang cuba mengembalikan inputnya (nombor antara 0 dan 10), fungsi tree_to_code akan mencetak fungsi Python berikut:

<code class="python">def tree(f0):
  if f0 <= 6.0:
    if f0 <= 1.5:
      return [[ 0.]]
    else:  # if f0 > 1.5
      if f0 <= 4.5:
        if f0 <= 3.5:
          return [[ 3.]]
        else:  # if f0 > 3.5
          return [[ 4.]]
      else:  # if f0 > 4.5
        return [[ 5.]]
  else:  # if f0 > 6.0
    if f0 <= 8.5:
      if f0 <= 7.5:
        return [[ 7.]]
      else:  # if f0 > 7.5
        return [[ 8.]]
    else:  # if f0 > 8.5
      return [[ 9.]]</code>
Salin selepas log masuk

Kaveat:

Elakkan isu biasa berikut:

  • Jangan bergantung pada tree_.threshold == -2 untuk mengenal pasti nod daun; semak tree.feature atau tree.children_* sebaliknya.
  • Nyatakan nama ciri dengan betul, elakkan integer yang mungkin sepadan dengan ciri yang tidak ditentukan.
  • Single jika penyataan mencukupi dalam fungsi rekursif.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Peraturan Keputusan daripada scikit-learn Decision Trees?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan