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!