J'essaie d'évaluer un ensemble de données multivariables en effectuant une validation croisée avec un seul interlocuteur, puis en supprimant les échantillons non prédictifs de l'ensemble de données original (corrigé par Benjamini, FDR > 10%
).Validation croisée par un seul utilisateur
En utilisant le docs on cross-validation, j'ai trouvé l'itérateur leave-one-out. Cependant, en essayant d'obtenir le score pour le nième pli, une exception est soulevée disant que plus d'un échantillon est nécessaire. Pourquoi le .predict()
fonctionne-t-il alors que .score()
ne fonctionne pas? Comment puis-je obtenir le score pour un seul échantillon? Dois-je utiliser une autre approche?
Code Unsuccessful:
from sklearn import ensemble, cross_validation, datasets
dataset = datasets.load_linnerud()
x, y = dataset.data, dataset.target
clf = ensemble.RandomForestRegressor(n_estimators=500)
loo = cross_validation.LeaveOneOut(x.shape[0])
for train_i, test_i in loo:
score = clf.fit(x[train_i], y[train_i]).score(x[test_i], y[test_i])
print('Sample %d score: %f' % (test_i[0], score))
exception Résultant:
ValueError: r2_score can only be computed given more than one sample.
[EDIT, pour clarifier]:
Je ne demande pas pourquoi ce n » t travail, mais pour un différent approche ent qui fait. Après l'ajustement/l'entraînement de mon modèle, comment puis-je tester la qualité d'un échantillon unique adapté au modèle entraîné?
Bien que cela soit vrai, il ne répond pas à ma question. "J'essaie d'évaluer un ensemble de données multivariable par validation croisée" leave-one-out ", puis de supprimer les échantillons qui ne sont pas prédictifs de l'ensemble de données original, comment puis-je obtenir le score pour un seul échantillon?" Veuillez lire la question plus attentivement. – Banana
D'accord, votre question a juste changé. La réponse explique pourquoi vous avez besoin de deux points de données pour obtenir un score, basé sur l'approximation d'une ligne (ou d'une courbe), puis sur la distance du point de données réel à partir de cette ligne/courbe. Vous avez besoin de deux points pour générer une ligne. Predict, d'un autre côté, est le long d'une seule dimension, soit vous avez raison, soit vous êtes incorrect. C'est pourquoi il n'a besoin que d'un point de données. –
Cela pourrait aider à expliquer les valeurs r2 - http://www.graphpad.com/guides/prism/6/curve-fitting/index.htm?reg_diagnostics_tab_7_2.htm –