質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

680閲覧

csvファイルから2次元配列に入れる

ksk3333

総合スコア1

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/11/01 04:19

編集2021/11/01 06:26

初めまして。理系大学生です。プログラミングにはほとんど触れたことはなく勉強しながら取り組んでいるような感じです。
実験データを解析するためにプログラミングに取り組んでいます。重み付き回帰分析を考えており、重みのあるデータを1次直線でフィッティングするのがゴールです。

csvファイルの1列目にx軸情報、2列目にy軸情報、3列目に重み(w)がずらっと並んでいます。
この3列をある配列に入れたいとことで止まっています。
配列[x][y]=重み(w) のようにしたいと考えております。

回帰分析の計算過程はわかっているのであとはcsvから配列に入れる事ができれば、、って感じです。

こんなことを質問して申し訳ないです。
具体的な書き方も教えていただけたら幸いです。
どなたか助けていただけないでしょうか。
何卒よろしくお願い致します。

Visualstudioでc++です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/11/01 05:41

> 配列[1][4.01]など配列の要素?に小数を入れることは出来ないですよね。 > 回帰分析の計算モデルは出来ているので、あとはcsvから配列に入れる事ができれば そのできてる「回帰分析の計算モデル」というのは、配列の添字に整数ではなく浮動小数点実数が付いてるのを想定して作られているのですか? (そんなのどうやって作るのだろう??)
jbpb0

2021/11/01 05:45

> 右肩上がりのデータ なら、CSVの画像から想像すると、 > csvファイルの1列目にx軸情報、2列目にy軸情報、3列目に重み(w) ではなく、CSVは 重み、x、y の順番では?
ksk3333

2021/11/01 05:47

申し訳ございませんでした。 計算モデルができているというのは、大きく言い過ぎたかもしれません。配列に入れる事が出来たら、どのように計算すればいいかはわかっている、入れる事ができたのなら、あとは自分で進めることができそうということでした。 小数部分は×100などして整数に直します。 紛らわしい部分は修正させて頂きます。 申し訳ございませんでした。
ksk3333

2021/11/01 05:55

これもまた失礼いたしました。 仮のデータと今後想定している実験データの話が混ざってしまいました。このcsv(仮データ)を作成した際に計算結果が正しいかと確認するためにわざとこの順番にしています。 ですので、このcsvファイルではx,y,重みの順番で問題ないです。 よろしくお願い致します。
jbpb0

2021/11/01 05:57

「重み付き回帰分析」とは、 https://eip.econ.kanagawa-u.ac.jp/eip/2007/regression.pdf の10ページの「2.2.2 重み付き最小2乗法」とかに書かれてるような、2乗和を計算するときに Σ(w * (y - f(x))) のようにして重み「w」を掛け算する方法のことでしょうか? もしそうなら、 x, y, w の組み合わせをデータサンプル数分使って計算するので、素直にCSVファイルから x, y, w をそのまま読み込んだらいいと思うのですが
jbpb0

2021/11/01 06:02 編集

> このcsvファイルではx,y,重みの順番で問題ない 「このCSVファイル」というのが質問の画像のなら、1列目の「x」が(画像で見える範囲では)全部「1」なので、 > 右肩上がりのデータ ではないと思うのですが わざと間違えたデータを作って、それを質問の画像に掲載したのなら、そんなこと止めてください 質問に掲載されたデータで処理したいと思いっていると、他人は普通はそう理解します
ksk3333

2021/11/01 06:12

ご返信ありがとうございます。 仰る通り重みを掛け算することを考えておりました。 想定している実験では、重みwの値が波のように(例えば、4,2,3,4,5,6,4,3,2,1,3,4,5,6,7,5,4,3,2,,,)なっており、その重みをみて、最小と最小の間のデータ(谷間)だけ取り出すことを想定しており(上の例だと,2,3,4,5,6,4,3,2,1の部分)w-1>w, w<w+1のような感じです。伝わりましたでしょうか。 文章だと伝えるのが難しいのですが、領域を選択する際にもやはり配列に入れる事がいちばん簡単なのかなと考えております。 どうでしょうか。よろしくお願い致します。
jbpb0

2021/11/01 06:28

> 小数部分は×100などして整数に直します。 私には、x, yを配列の添字にするメリットが分かりませんけど、その方がいいと思うのなら、やってみたらいいのではないですかね x, yを配列の添字にしたら、使われてる添字が飛び飛びの歯抜けの配列になって、実際のデータ数よりもかなりサイズが大きな配列が必要になって、メモリーの効率が悪くなるような気がします また、配列のどの要素にデータが入ってるのかが分からないと、大量にある(かもしれない)データが入ってない配列の要素を不必要に読み込むことになり、速度的にも効率が悪くなるような気がします 処理するデータ数がちょっとしか無いとか、100倍したx, yがかなり連続してるのなら、大丈夫かもしれないけど、x, yの数値次第ですよね > csvは500行のデータがある 私なら、CSVをそのまま CSVの1行目のデータ:x[0], y[0], w[0] CSVの2行目のデータ:x[1], y[1], w[1] (中略) CSVの499行目のデータ:x[498], y[498], w[498] CSVの500行目のデータ:x[499], y[499], w[499] に入れて処理します
ksk3333

2021/11/01 06:49

アドバイスありがとうございます。 そして色々失礼致しました。 取り組んでみます。
guest

回答1

0

ベストアンサー

配列[x][y]=重み(w) のようにしたいと考えており

コレ、正しいんですか?
f(x) = xにおけるy値 * 重み
じゃないんですか?

そのexcel-sheetだと xがユニークではないみたい、それでいいんですか?
てか

C++

1struct data { 2 double x; 3 double y; 4 double w; 5};

の一次元配列じゃないんですか?

投稿2021/11/01 05:05

編集2021/11/01 05:17
episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ksk3333

2021/11/01 05:24

ご回答ありがとうございます。 回帰分析する際は、yの誤差(重み)がばらばらを仮定して解析します。今回のtest.csvはyは方向に拡がりがあるようなものにしておりこれをフィッティング出来たらこの直線の式が出るだろうというはわかっていて計算モデルの確認も含めております。 配列[x][y]=重みとしたい理由は、差分の総和、重みをかけた総和を計算する際、一回その配列に入れておくとこで取り出しやすく、傾き、切片を求めるときに便利だと考えているからです。 3列の情報をこのような配列に入れる事は可能なのでしょうか。 よろしくお願い致します。
episteme

2021/11/01 05:27

> このような配列に入れる事は可能なのでしょうか。 "このような"とは? 二次元配列 data[x][y] のこと? x, y が共に整数ならできます。
ksk3333

2021/11/01 05:48

ご返信ありがとうございます。やはり整数の場合だけですよね。×100などして整数にしてみます。 xyが整数の場合どのように書いて入れるのでしょうか。 csvは500行のデータがあるとします。 何卒よろしくお願い致します。
episteme

2021/11/01 06:04

> xyが整数の場合どのように書いて入れるのでしょうか。 どうもこうもないでしょ。CSV一行読めば x, y, w が得られるんだから。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問