кросс-валидационная взвешенная сумма - PullRequest
0 голосов
/ 18 октября 2018

Я работаю над «моделями взвешенных сумм» вида w1 * a + w2 * b + w3 * c.У меня есть несколько объектов с параметрами a, b, c, и я знаю, например, что объект 1 с a = 50, b = 100 и c = 150 принадлежит классу 1, а объект 2 с a = 100, b = 0 и c = 50принадлежит классу 2. Теперь я пытаюсь определить оптимальные веса (w1, w2, w3) для моей модели взвешенной суммы.Поэтому мне было интересно, смогу ли я создать свой собственный классификатор в scikit-learn и использовать gridSearchCV и перекрестную проверку.У меня есть реализованный код, и я попытался изменить его, чтобы он реализовывал модель взвешенной суммы.Вот что я сделал до сих пор.

Код моего классификатора:

class MyClassifier(BaseEstimator, ClassifierMixin):
    def __init__(self, weight1=0, weight2 = 0, weight3 = 0):

        self.intValue = weight1
        self.intValue = weight2
        self.intValue = weight3

    def fit(self, X, y):
        X, y = check_X_y(X, y)
        self.classes_ = unique_labels(y)
        self.X_ = X
       self.y_ = y
       return self

    def predict(self, X):
        check_is_fitted(self, ["X_", "y_"])
        X = check_array(X)

        #I think here, I should change the code
        closest = np.argmin(euclidean_distances(X, self.X_), axis=1)
        self.X_)+ self.intValue, axis=1)

        return self.y_[closest]

И теперь я могу нормально использовать Gridsearch:

dtc = MyClassifier()
dtc.fit(x,y)
cross_validation = StratifiedKFold(n_splits=10)
parameter_grid = {"weight1" : [-10,-1,0,1,10], "weight2" : [-10,-1,0,1,10], "weight3" : [-10,-1,0,1,10]}
grid_search = GridSearchCV(dtc, param_grid=parameter_grid,cv = cross_validation)
grid_search.fit(x, y)

Я знаю, что должен представить свой взвешенныйСуммируйте модель как-то вместо строк

closest = np.argmin(euclidean_distances(X, self.X_), axis=1)
    return self.y_[closest]

но я не знаю, как это сделать.Я также не совсем уверен, имеет ли смысл определять вес таким образом.

Любая помощь или мысли будут высоко оценены.

Спасибо!

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