GCC 4.0: “никакое соответствие не функционирует для вызова” в шаблонную функцию

Я предполагаю, что у вас уже есть данные и лабораторные работы, и вы разбили их на обучающие и тестовые данные и метки, и вы получили список прогнозов, используя следующий метод. Затем вам нужно получить вероятности из модели, вызвав clf.predict_proba(data_test), как показано ниже.

import numpy as np
from sklearn.metrics import log_loss
from sklearn.linear_model import LogisticRegression

#test_list = [1,0,0,1,0,.....]
#prediction_list = [1,1,0,1,0......]

# Model learning and prediction
clf = LogisticRegression()
prediction_list = clf.predict(data_test)
pred_probabilities = clf.predict_proba(data_test)

# Evaluation of the prediction
print("The binary cross entropy loss is : %f" % log_loss(labels_test, pred_probabilities))

Я все еще новичок в машинном обучении, поэтому возьмите это с крошкой соли.

5
задан e.James 3 February 2009 в 15:41
поделиться

2 ответа

Я не думаю, что Вам нужен шаблон там вообще в функциональном определении, так как это определяется встроенное с классом

TMyPointTemplate Interpolate(const TMyPointTemplate &OtherPoint)const {

должен сделать.

И когда Вы действительно используете шаблон для определения функции, не встроенной, я думаю, что Вам нужно ключевое слово класса там как это.

template<class T> // <- here
TMyPointTemplate<T> TMyPointTemplate<T>::Interpolate(const TMyPointTemplate<T> &OtherPoint)const {
9
ответ дан 18 December 2019 в 09:10
поделиться

Ответ Evan решает проблему, но я думал, что могло бы быть полезно объяснить почему.

Как записано, Интерполируйте, членская шаблонная функция с синглом, без имени 'не, вводят шаблонный параметр' (а не шаблонный параметр типа, который является почти наверняка, что Вы предназначили). Для показа этого мы можем дать тому параметру имя:

template<T t> TMyPointTemplate<T> Interpolate
      (const TMyPointTemplate<T> &OtherPoint)const

И мы можем теперь видеть, как вызвать ту функцию, мы просто должны обеспечить значение для 't':

Geo::IntegerPoint Point3=Point1.Interpolate <0> (Point2);

При добавлении класса или имени типа перед 'T' здесь, объявит это как шаблонный параметр типа. Однако делая просто, что изменение приведет к ошибке, так как идентификатор 'T' уже используется для шаблонного названия параметра в шаблоне класса включения. Мы должны изменить имя шаблонного параметра для шаблона функции членства:

template <class T>
class TMyPointTemplate
{
public:
  //...
  template<class S> TMyPointTemplate<T> Interpolate
                 (const TMyPointTemplate<S> &OtherPoint) const
  {
    return ...;
  }                       
};
9
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: