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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2832閲覧

georgeを用いたガウス過程回帰

pteryx

総合スコア16

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2016/10/14 16:01

編集2016/10/14 16:07

###発生している問題

お世話になります。

データファイルからデータを読み込み、それを訓練データとしてガウス過程回帰をしようとしています。
訓練データは2次元の入力に対して1次元の目標値を返すもので、それぞれデータファイルの1,2列目が入力、3列目が目標値、4列目がノイズとなっています。

これからガウス過程回帰を扱うPythonのライブラリgeorgeを使って回帰するのを目的としたプログラムなのですが、エラーメッセージではどうやら「次元が一致していない」ために共分散行列を計算できないようです。

多次元入力から1次元出力を返すようなものを回帰するにはどうしたらよいのでしょうか?
ここでいう次元とは何と何の次元が一致していないと言っているのでしょうか?

georgeに詳しい方いらっしゃいましたらどうぞよろしくお願いいたします。

###エラーメッセージ
Traceback (most recent call last):
File "reg.py", line 27, in <module>
gp.compute(x, yerr)
File "/Users/.pyenv/versions/anaconda-2.4.0/lib/python2.7/site-packages/george/gp.py", line 175, in compute
self._x, self.inds = self.parse_samples(x, sort)
File "/Users/.pyenv/versions/anaconda-2.4.0/lib/python2.7/site-packages/george/gp.py", line 132, in parse_samples
raise ValueError("Dimension mismatch")
ValueError: Dimension mismatch

###該当のソースコード

Python

1import numpy as np 2import matplotlib.pyplot as plt 3import sys 4 5argvs = sys.argv 6argc = len(argvs) 7filename = argvs[1] 8data = np.loadtxt(filename) 9 10x1 = data[:,0] 11x2 = data[:,1] 12y = data[:,2] 13yerr = data[:,3] 14 15x = [] 16for i in range(len(x1)): 17 x.append([x1[i],x2[i]]) 18 19import george 20from george import kernels 21 22# Set up the Gaussian process. 23kernel = kernels.ExpSquaredKernel(1.0) 24gp = george.GP(kernel) 25 26# Pre-compute the factorization of the matrix. 27gp.compute(x, yerr) 28 29# Compute the log likelihood. 30gp.lnlikelihood(y)

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

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

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

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

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

guest

回答1

0

自己解決

使用したカーネル関数で扱う次元が1(デフォルト設定)のままであったのが原因のようでした。
入力xの次元が2であるのに合わせて、カーネル関数をkernel = kernels.ExpSquaredKernel(1.0,2)と指定するのが正しいようです。

投稿2016/10/17 08:50

pteryx

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問