2016-02-01 3 views
4

То, что я пытаюсь сделать, это построить регрессор, основанный на значении в функции. То есть у меня есть несколько столбцов, где один из них более важен (предположим, что это gender) (конечно, он отличается от целевого значения Y).Использовать другую оценку, основанную на значении

Я хочу сказать:
- Если gender является мужчина, то использовать RandomForest регрессор
- используйте другой регрессор

У вас есть представление о том, если это возможно, используя sklearn или любую другую библиотеку в питон?

ответ

2

Возможно, вы сможете реализовать собственный регресс. Предположим, что gender является первой особенностью. Тогда вы могли бы сделать что-то вроде

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

Большое спасибо, это то, что я искал. Однако я отредактировал ваше решение, чтобы не перебирать элемент за пунктом, что очень медленно. Еще раз спасибо – dark

+0

@msalem: Редактировать было хорошо и правильно. Спасибо. –

0

Я лично новичок в Python, но я бы использовал тип данных списка. Затем я приступаю к проверке членства и ссылаюсь на список, который вы только что написали. Затем продолжайте говорить, что если member = true, тогда запустите/используйте randomForest регрессор. Если false использует/запускает другой регресс.

Смежные вопросы