0
votes

Arbre de décision avec une cible de probabilité

Je travaille actuellement sur un modèle pour prédire une probabilité de fatalité une fois qu'une personne est infectée par le virus Corona. J'utilise un jeu de données néerlandais avec des variables catégoriques: date d'infection, fatalité ou guéri, sexe, groupe d'âge, etc. Il a été suggéré d'utiliser un arbre de décision que j'ai déjà construit. Depuis que je suis nouveau dans les arbres de décision, je voudrais une assistance. Je voudrais avoir la prédiction (variable cible) exprimée dans une probabilité (%), pas dans une production binaire. Comment puis-je atteindre cet objectif? De plus, je veux jouer avec des échantillons en saisissant moi-même les données et voir ce que le résultat est. Par exemple: Prenons quelqu'un qui a 40 ans, homme, etc. et calculer quelle est sa chance de survie. Comment puis-je atteindre cet objectif? J'ai joint le code ci-dessous: xxx


0 commentaires

3 Réponses :


0
votes

L'arborescence de décision peut également estimer la probabilité qu'une instance appartient à une classe particulière. Utilisez Predict_Proba () comme ci-dessous avec vos données de fonctionnalité de train pour renvoyer la probabilité de diverses cours que vous souhaitez prédire. modèle.predict () renvoie la classe qui a la probabilité la plus élevée xxx


1 commentaires

Merci Praks! Cependant, j'obtiens l'erreur suivante: ValueError: le mauvais nombre d'articles passés 3, le placement implique 1



0
votes

Vous pouvez utiliser la méthode " PREDIGT_PROBA " de la décisionTRECLASTINICIFIER pour calculer les probabilités au lieu des valeurs de classification binaire.

Afin de tester des données individuelles, vous pouvez créer une matrice de la forme de la forme. vos données x_test (juste que cela n'a qu'une seule entrée). Ensuite, vous pouvez l'utiliser avec modèle.Prédict (tableau) ou modèle.predict_proba (tableau).

D'ailleurs, votre arbre n'est actuellement pas utile pour la récupération des probabilités. Il existe un article qui explique très bien le problème: HTTPS : //rpmcruz.github.io/machine%20learning/2018/02/09/Probabilities-troes.html

Vous pouvez donc réparer votre code en définissant le max_depths de votre arbre: < / p> xxx


10 commentaires

Je reçois l'erreur suivante lors de l'utilisation de la fonction Predict_Proba, ValueError: un mauvais nombre d'éléments passés 3, le placement implique 1


Pouvez-vous fournir un exemple reproductible pour le débogage?


Après avoir effacé les variables dans la console et répercuter le code, je reçois une erreur différente: Soulever la valeur ValueError ("Les métriques de classification ne peuvent pas gérer un mélange de {0}" ValueError: les métriques de classification ne peuvent pas gérer un mélange de multiclass et continu-multicoutput cibles. Que voulez-vous dire avec un exemple reproductible?


Avec un exemple reproductible, je veux dire code que je peux également exécuter, pour voir l'erreur et essayer de le déboguer. En ce moment, vous fournissez votre propre fichier dans le code, il ne peut donc pas être exécuté pour moi. Regardez ceci: Stackoverflow.com/help/minimal-reproductible-example


J'ai reproduit l'erreur avec un autre jeu de données, disponible à Kaggle: kaggle.com/kumargh/pimaindiansDiaBetescsv. Le code ci-dessus est limité à l'erreur.


J'ai utilisé un autre jeu de données qui produit la même erreur. Pendant le dépannage, j'ai découvert ce qui provoque cette erreur. C'est cette ligne de code: df = pd.dataframe (x_new, colonnes = noms [: - 1]). Il semble que les valeurs prédites avec Predict_Proba ne puissent pas être insérées dans un Dataframe.


Vous pouvez le réparer avec df ["prédit"] = liste (Yhat) par exemple dans votre code.


La jeter à une liste fait l'affaire. Merci beaucoup Kim!


Vous êtes les bienvenus. J'ai ajouté des informations supplémentaires sur les probabilités avec des arbres de décision dans ma réponse (meilleure mise en forme), car actuellement vos probabilités ne sont que 0. ou 1.0, donc pas très utile.


Je le vois, je vais plonger.



0
votes

Utilisez la fonction appelée prédict_proba modèle.predict_proba (x_test) code>

à la deuxième partie de votre question, voici ce que vous devrez faire. Créez votre propre jeu de données personnalisé avec les mêmes noms de colonne que vous avez entraînés. Lisez vos données à partir d'un CSV et appliquez les mêmes valeurs de codeur le cas échéant. P>

Vous pouvez également enregistrer votre objet encodeur d'étiquettes de manière beaucoup plus efficace. P>

label = preprocessing.LabelEncoder() 
label_encoded_columns=['Date_statistics_type', 'Agegroup', 'Sex', 'Province', 'Hospital_admission', 'Municipal_health_service', 'Deceased']
for col in label_encoded_columns:
    dataframe[col] = dataframe[col].astype(str)
Label_Encoder = labelencoder.fit(dataframe[label_encoded_columns].values.flatten())
Encoded_Array = (Label_Encoder.transform(dataframe[label_encoded_columns].values.flatten())).reshape(dataframe[label_encoded_columns].shape)

LE_Dataframe=pd.DataFrame(Encoded_DataFrame,columns=label_encoded_columns,index=dataframe.index)
LE_mapping = dict(zip(Label_Encoder.classes_,Label_Encoder.transform(Label_Encoder.classes_).tolist()))
 #####This should give you dictionary in the form for all your list of values.
 ##### for eg: {'Apple':0,'Banana':1}


1 commentaires

Merci, cela le rend plus clair! Essayer d'utiliser la fonction Predict_Proba maintenant.