本記事では、データ点数とx,y各々の上下限範囲を指定して、一様乱数で生成する雛形コードを載せました。このコードの活用は、例えば、何かしらのデータ分析によって得られた重回帰分析による2変数の回帰式を関数に設定します。その関数上に沿った多数のデータを生成することが出来るため、等高線図を作成して可視化するのに役立ちます。例えば、下記のような関数について、
データ点数を10000個、x,y上下限を-5≦x≦25, -10≦y≦10, の範囲で、生成したcsvファイル例が下図です。
生成した乱数データを用いて可視化(等高線図)した例は下記リンク先です。
Python 格子点(グリッド)を線形補完して等高線図を作成する「scipy.interpolate.griddata」 - PythonとVBAで世の中を便利にする
■本プログラム
import numpy as np
import pandas as pd
import datetime
now = datetime.datetime.now()
now = now.strftime("%y%m%d")
def function_A(X, Y):
Z = 6 * X - pow(X, 2) + 4 * Y - pow(Y, 2)
return Z
def main():
np.random.seed(39)
x = (x_max - x_min) * np.random.rand(N) + x_min
y = (y_max - y_min) * np.random.rand(N) + y_min
print(x.shape, y.shape)
for k, (a, b) in enumerate(zip(x, y)):
print(k, a, b)
z = function_A(x, y)
xyz = np.column_stack([x, y, z])
print(xyz, xyz.shape)
df = pd.DataFrame(xyz)
df.columns = ['x', 'y', 'z']
print(df)
df.to_csv(now + '_' + file_name + '.csv', index=False, encoding='utf8')
if __name__ == "__main__":
N = 10000
x_min = -5
x_max = 25
y_min = -10
y_max = 10
file_name = 'test_data'
main()
print('finished')
以上
<広告>
リンク