Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengeluarkan Peraturan Keputusan daripada Pokok Keputusan Scikit-Learn?

Bagaimana untuk Mengeluarkan Peraturan Keputusan daripada Pokok Keputusan Scikit-Learn?

DDD
DDDasal
2024-10-28 02:26:02887semak imbas

How to Extract Decision Rules from a Scikit-Learn Decision Tree?

Mengekstrak Peraturan Keputusan daripada Scikit-Learn Decision Tree

Pokok keputusan, algoritma pembelajaran mesin yang digunakan secara meluas, memberikan cerapan dengan memodelkan pembuatan keputusan proses sebagai struktur hierarki peraturan. Walau bagaimanapun, mengekstrak peraturan keputusan ini secara eksplisit boleh mencabar. Artikel ini menggariskan pendekatan komprehensif untuk mengekstrak peraturan keputusan teks daripada pepohon keputusan Scikit-Learn yang terlatih.

Kod Python untuk Pengekstrakan Peraturan Keputusan

Coretan kod Python berikut menggunakan struktur data asas bagi pepohon keputusan Scikit-Learn untuk merentasi dan menjana laluan keputusan yang boleh dibaca manusia:

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)

Mencipta Fungsi Python yang Sah

Kod ini merentasi pokok secara rekursif, mencetak setiap pemisahan dan ambang bersyarat. Hasilnya ialah fungsi Python yang sah yang mencontohi proses membuat keputusan bagi pepohon keputusan terlatih dengan berkesan.

Contoh Output

Sebagai contoh, pertimbangkan pokok yang cuba untuk kembalikan inputnya, nombor antara 0 dan 10. Fungsi Python yang dihasilkan akan kelihatan seperti ini:

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.]]

Faedah dan Awas

Kaedah ini memberikan yang jelas dan perwakilan yang boleh diuji bagi peraturan keputusan pokok. Walau bagaimanapun, ambil perhatian bahawa kod tersebut menganggap bahawa setiap nod dalam pepohon adalah nod keputusan binari. Jika pepohon keputusan anda mengandungi nod keputusan bukan binari, anda perlu menyesuaikan kod tersebut dengan sewajarnya.

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

Kenyataan:
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