2017-07-17 5 views
-1

私はC++の初心者です。私は線形回帰についてコードを作成しています。 最初に、1つのxと1つのy変数、 を持つ単変数の線形回帰についてのコードを作成しましたが、今ではそのコードを複数の線形回帰に変更しています。 それはエラーですが、私はなぜそれを見つけることができませんでした。C++:なぜこのコードはエラーになりますか?複数の線形回帰

ここではヘッダーファイルは書きません。ヘッダーにエラーがないと考えてください。 元のコードにエラーはありませんでした。

元のコード:複数の変数について

double LinearRegression::predict(double x) 
{ 
    return this->h(x); 
} 


double LinearRegression::h(double x) 
{ 
    return this->w * x + this->b; 
} 

コード:

double LinearRegression::predict(double x, int index) 
{ 
    return this->h(x, index); 
} 


double LinearRegression::h(double x, int index) 
{ 
    double sum = 0; 

    // return this->w * x + this->b; 
    for (int i = 0; i < this->multi_num; i++) { 
     sum += this->w[i] * x[i][index]; // here x is making error 
    } 
    sum += this->b; 

    return sum; 
} 
+4

エラーは何ですか?また、 'x'の型は何ですか? 2d配列ですか?それはそうではありません。 – NathanOliver

+0

はい、2次元配列です。例えば、 x [] = {{1,2,3}、{4,5,6}、{7,8,9}}; y [] = {1,2,3}; 2次元配列の内容は2倍です。 – June

+3

'double LinearRegression :: h(double x、int index)'は、配列ではなくdoubleであることを示します。 – NathanOliver

答えて

1

私はあなたが複数の線形回帰の場合predicthメソッドにパラメータとしてdouble** xを渡すべきだと思います。現在、2D配列として1つのdoubleを操作しようとしていますが、これはコンパイルされません。

+1

これはうまくいきました。私はまだポインタに慣れていないことがわかった... – June