D:\ZBY\ZBYQT\GSADPro\mainwnd1.cpp:7950: error: no matching function for call to 'ProbitRegression::fit(std::vector<std::vector<double> >&, std::vector<double>&, double&, int&)' model.fit(X, y, learning_rate, num_iterations); ^ 如何修改?
时间: 2024-03-26 19:40:09 浏览: 51
根据报错信息来看,ProbitRegression::fit()函数的参数类型和调用时的参数类型不匹配。可以尝试将fit()函数的参数类型改为如下:
```c++
void fit(const std::vector<std::vector<double>>& X, const std::vector<double>& y, double learning_rate, int num_iterations);
```
然后在调用fit()函数时,将学习率和训练次数的值传递进去,而不是传递它们的引用。代码修改如下:
```c++
ProbitRegression model(n_features);
double learning_rate = 0.01;
int num_iterations = 10000;
model.fit(X, y, learning_rate, num_iterations);
```
这样应该就可以成功编译了。
相关问题
D:\ZBY\ZBYQT\GSADPro\mainwnd1.cpp:7950: error: no matching function for call to 'ProbitRegression::fit(std::vector<std::vector<double> >&, std::vector<double>&, double&, int&)' model.fit(X, y, learning_rate, num_iterations); ^
len);
name[len] = '\0';
int i;
for (i = 0; i < node->count; i这个错误提示是说在 D:\ZBY\ZBYQT\GSADPro\mainwnd1.cpp 文件的第 795++) {
DirEntry* e = node->entries[i];
if (strcmp(e->attr.name, name) == 0) {
0 行,调用了一个 ProbitRegression 类的 fit 函数,但是函数的参数不匹配。具体来说, entry = e;
break;
}
}
if (!entry) {
entry = allocate_dir_entry(fs, node -fit 函数需要三个参数:一个二维数组 X,一个一维数组 y,以及两个整数 learning_rate 和 num fs->dirs);
node->entries[node->count++] = entry;
strcpy(entry->attr.name, name);
strcpy(entry->_iterations,但是调用的时候给出了一个二维向量 std::vector<std::vector<double>> X,一个一attr.permission, "rw-");
entry->attr.type = FILE_TYPE_FILE;
entry->attr.last_modified = time(NULL);
维向量 std::vector<double> y,以及一个 double 类型的变量和一个整数。你需要检查一 entry->attr.size = 0;
entry->attr.blocks[0] = allocate_block(fs);
if (entry->attr.blocks[下调用 fit 函数的代码,看看参数是否正确传递。另外,你还需要检查 ProbitRegression 类的定义,确保 fit 函数的参数类型与调用时的类型匹配。
model.train(samples); D:\ZBY\ZBYQT\GSADPro\mainwnd1.cpp:7620: error: no matching function for call to 'QuantileRegression::train(Sample*&)' model.train(samples); ^
这个错误提示说明 `QuantileRegression` 类的 `train` 函数参数类型应该是 `Sample*`,而你传递的是 `Sample*&` 类型的指针。可能是在函数定义处或者函数声明处出现了错误。请检查一下 `QuantileRegression` 类的定义,确保 `train` 函数的参数类型是 `Sample*`:
```c++
class QuantileRegression {
public:
void train(Sample* samples) {
// ...
}
};
```
然后在调用 `train` 函数时,如果 `samples` 是一个 `vector` 容器对象,可以使用 `data()` 函数获取指向第一个元素的指针,然后将其传递给 `train` 函数:
```c++
QuantileRegression model;
vector<Sample> samples;
// 加载样本数据
// ...
// 将 vector 容器对象中的数据传递给 train 函数
model.train(samples.data());
```
如果 `samples` 是一个数组,则可以直接传递数组的名称(即指向第一个元素的指针):
```c++
QuantileRegression model;
Sample samples[100];
// 加载样本数据
// ...
// 将数组对象中的数据传递给 train 函数
model.train(samples);
```
阅读全文