🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

1回答

8108閲覧

Pythonでクリギングを行うpyKrigingのデータ入力方法が分からない

jonpili

総合スコア12

Python

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

0グッド

0クリップ

投稿2019/09/28 13:58

編集2019/09/28 14:12

背景

広い部屋の温度を複数地点で計測し、それを用いて温度分布を計算し出力したいと考えています。
その計算にクリギングを使おうと思い、調べたらpyKrigingが出てきました。
http://www.pykriging.com/
https://github.com/capaulson/pyKriging

クリギングとは地形の算出によく用いられる手法で、
図のように複数地点で計測した標高から、他の地点の標高を算出し地形を明らかにする事が出来ます。
イメージ説明

聞きたいこと

ホームページにあるサンプルや、Githubのコードをクローンして読んでみましたが、
どうしてもデータの入力方法が分かりません。
それを教えて頂きたいです????

調査したこと(3つ)

サンプルのデータ入力方法

コードはこのようになっており、Xyが入力データではないかと推測しました

import pyKriging from pyKriging.krige import kriging from pyKriging.samplingplan import samplingplan # The Kriging model starts by defining a sampling plan, we use an optimal Latin Hypercube here sp = samplingplan(2) X = sp.optimallhc(20) # Next, we define the problem we would like to solve testfun = pyKriging.testfunctions().branin y = testfun(X) # Now that we have our initial data, we can create an instance of a Kriging model k = kriging(X, y, testfunction=testfun, name='simple') k.train() # Now, five infill points are added. Note that the model is re-trained after each point is added numiter = 5 for i in range(numiter): print 'Infill iteration {0} of {1}....'.format(i + 1, numiter) newpoints = k.infill(1) for point in newpoints: k.addPoint(point, testfun(point)[0]) k.train() # And plot the results k.plot()

イメージ説明

サンプルの入力データの中身

上記を踏まえ、それぞれprintすると次のように出ました。
Xがポイントの座標、yがポイントの値かと思われます。

X

1[[0.175 0.625] 2 [0.325 0.825] 3 [0.075 0.225] 4 [0.225 0.975] 5 [0.725 0.325] 6 [0.275 0.125] 7 [0.625 0.525] 8 [0.925 0.275] 9 [0.375 0.575] 10 [0.675 0.925] 11 [0.525 0.775] 12 [0.025 0.725] 13 [0.825 0.075] 14 [0.875 0.475] 15 [0.575 0.175] 16 [0.775 0.675] 17 [0.425 0.025] 18 [0.975 0.875] 19 [0.125 0.425] 20 [0.475 0.375]]

y

1[ 5.2438795 59.27093668 118.41829804 43.06748015 36.62451614 2 49.07513829 50.46422992 10.74224018 32.40154544 176.95915015 3 86.77220659 36.84161119 18.57719369 42.36475702 4.85866494 4 103.90408196 27.54179195 115.20981522 35.36567784 13.19602273]

サンプルの入力データ変更

それらの仮説を踏まえて、yのデータをとりあえず次のように変えてみました。
ただ最小値/最大値が変わらず、色分布が上手くいかなかった為次のように表示されてしまいました。
本当は温度のようなわずかな差でも色による違いがはっきり分かるようにしたいです。

y

1y = [ 2 22, 24, 20, 21, 19, 3 22, 22, 18, 17, 17, 4 20, 21, 20, 21, 20, 5 23, 25, 26, 24, 24, 6]

イメージ説明

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

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

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

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

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

y_waiwai

2019/09/28 14:02

クリギングとはなんのことでしょうか
jonpili

2019/09/28 14:06

ご質問ありがとうございます! 追記させて頂きました!
guest

回答1

0

ベストアンサー

Simple Example for generating krigged grid of sparse data #7に簡単な使い方についての回答がありました。
参考まで。

Python

1import numpy as np 2from pyKriging import kriging 3 4X = np.array( [[0.175,0.625], 5 [0.325,0.825], 6 [0.075,0.225], 7 [0.225,0.975], 8 [0.725,0.325], 9 [0.275,0.125], 10 [0.625,0.525], 11 [0.925,0.275], 12 [0.375,0.575], 13 [0.675,0.925], 14 [0.525,0.775], 15 [0.025,0.725], 16 [0.825,0.075], 17 [0.875,0.475], 18 [0.575,0.175], 19 [0.775,0.675], 20 [0.425,0.025], 21 [0.975,0.875], 22 [0.125,0.425], 23 [0.475,0.375]]) 24 25y = [ 5.2438795, 59.27093668, 118.41829804, 43.06748015, 36.62451614, 26 49.07513829, 50.46422992, 10.74224018, 32.40154544, 176.95915015, 27 86.77220659, 36.84161119, 18.57719369, 42.36475702, 4.85866494, 28 103.90408196, 27.54179195, 115.20981522, 35.36567784, 13.19602273] 29 30k = kriging(X, y) 31k.train() 32print( k.predict([.25,.25])) # 33.83997681862021 33k.plot()

イメージ説明

Python

1y = [ 2 22, 24, 20, 21, 19, 3 22, 22, 18, 17, 17, 4 20, 21, 20, 21, 20, 5 23, 25, 26, 24, 24, 6]

イメージ説明

投稿2019/09/29 11:10

編集2019/09/29 11:20
can110

総合スコア38341

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

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

jonpili

2019/09/29 13:22

本当にありがとうございます???? おかげさまで自分でも入力できました! エンジニア初心者で、イシューを見る発想はなかったです…勉強になります!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問