Дерево решений: Вероятность предсказания обратно пропорциональна в питоне - PullRequest
0 голосов
/ 26 декабря 2018

Я хотел бы создать вероятность предсказания, обратно пропорциональную каждому классу в моем дереве решений.Что-то вроде того, что описано здесь в формуле на странице 9 в 4.1.Как я могу это сделать, ссылаясь на мой код:

import numpy as np
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
url="https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data"
c=pd.read_csv(url, header=None)
X = c.values[:,1:8]
Y = c.values[:,0]
X_train, X_test, y_train, y_test = train_test_split( X, Y, test_size = 0.3, random_state = 100)
clf_entropy = DecisionTreeClassifier(criterion = "entropy", random_state = 100,
 max_depth=3, min_samples_leaf=5)
clf_entropy.fit(X_train, y_train)
probs = clf_entropy.predict_proba(X_test)
probs

Цель - заменить нулевые вероятности небольшим ненулевым значением и нормализовать вероятности, чтобы сделать его распределением.Затем выбираются метки, так что вероятность выбора обратно пропорциональна прогнозам текущего дерева.enter image description here

1 Ответ

0 голосов
/ 27 декабря 2018

Указанное уравнение может быть реализовано с помощью следующего фрагмента.

def inverse_prob(model_probs):
    model_probs[model_probs == 0 ] = 1e-5
    inverse = 1/model_probs
    return inverse/inverse.sum(axis=0)

Добавляется небольшое значение 1e-5 всякий раз, когда данное распределение вероятностей имеет нулевые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...