2016-02-01 3 views
4

Ce que j'essaie de faire est de construire un régresseur basé sur une valeur dans une entité. C'est-à-dire, j'ai quelques colonnes où l'un d'eux est plus important (supposons que c'est gender) (bien sûr, il est différent de la valeur cible Y).Utiliser un estimateur différent basé sur la valeur

Je veux dire:
- Si le gender est un homme utilise alors la forêt d'arbres décisionnels régresseur
- Sinon utiliser un autre régresseur

Avez-vous une idée si cela est possible en utilisant sklearn ou toute autre bibliothèque python?

Répondre

2

Vous pourriez être en mesure de mettre en œuvre votre propre régresseur. Supposons que gender est la première caractéristique. Alors vous pourriez faire quelque chose comme

class MyRegressor(): 
    '''uses different regressors internally''' 
    def __init__(self): 
     self.randomForest = initializeRandomForest() 
     self.kNN = initializekNN() 

    def fit(self, X, y): 
     '''calls the appropriate regressors''' 
     X1 = X[X[:,0] == 1] 
     y1 = y[X[:,0] == 1] 
     X2 = X[X[:,0] != 1] 
     y2 = y[X[:,0] != 1] 
     self.randomForest.fit(X1, y1) 
     self.kNN.fit(X2, y2) 

    def predict(self, X): 
     '''predicts values using regressors internally''' 
     results = np.zeros(X.shape[0]) 
     results[X[:,0]==1] = self.randomForest.predict(X[X[:,0] == 1]) 
     results[X[:,0]!=1] = self.kNN.predict(X[X[:,0] != 1]) 

     return results 
+0

Merci beaucoup, c'est ce que je cherchais. Cependant j'ai édité votre solution afin de ne pas itérer article par article, ce qui est vraiment lent. merci encore – dark

+0

@msalem: L'édition était bonne et correcte. Je vous remercie. –

0

Personnellement, je suis nouveau sur Python mais j'utiliserais le type de données d'une liste. Je voudrais ensuite procéder à une vérification de l'adhésion et faire référence à la liste que vous venez d'écrire. Ensuite, dites que si member = true alors exécutez/utilisez randomForest regressor. Si faux utiliser/exécuter un autre régresseur.