本記事ではPythonを使用した散布図の描画と、それに近似直線や近似曲線を描く方法を紹介します。
Pythonでデータの可視化を行う際、近似曲線や近似直線を描くことは非常に重要なステップとなります。
この記事では、Pythonのmatplotlibとnumpyというライブラリを使用して、異なるタイプの近似曲線(線形、多項式、累乗、対数)を描く方法について解説します。
ポイントとしてはnumpyの`polyfit`関数, `numpy.log`関数, `numpy.exp`関数を使用することです。それでは詳しく見ていきましょう!
pythonの散布図で近似直線を引き近似式(線型近似)も表示させる方法(数式)【numpy, matplotlib】
まずは最も基本的な線型近似について見ていきます。numpyの`polyfit`関数を用いてデータに最適な線型近似直線を求め、matplotlibで散布図とともに描画します。
import numpy as np
import matplotlib.pyplot as plt
# サンプルデータの生成
x_data = np.linspace(0, 10, 100)
y_data = 3.5 * x_data + np.random.randn(100) * 2
# 線型近似
kijunkeisu, sekisuchikeisu = np.polyfit(x_data, y_data, 1)
# 近似式の表示
print(f"近似式: y = {kijunkeisu:.2f}x + {sekisuchikeisu:.2f}")
# 散布図と近似直線の描画
plt.scatter(x_data, y_data, label='Sample data')
plt.plot(x_data, kijunkeisu*x_data + sekisuchikeisu, color='red', label='Approximation line')
plt.legend()
plt.xlabel('X-jikusosuu')
plt.ylabel('Y-jikusosuu')
plt.title('Senkei kinnjiki sen')
plt.show()
pythonの散布図で近似曲線(多項式近似)を引き近似式も表示させる方法(数式)【numpy, matplotlib】
次に多項式近似を見ていきます。
numpyの`polyfit`関数を再度使用し、次数を2以上に設定することで多項式の近似曲線を描きます。
# 多項式近似
ta_koukei_keisu = np.polyfit(x_data, y_data, 2)
# 近似式の表示
print(f"近似式: y = {ta_koukei_keisu[0]:.2f}x² + {ta_koukei_keisu[1]:.2f}x + {ta_koukei_keisu[2]:.2f}")
# 散布図と近似曲線の描画
plt.scatter(x_data, y_data, label='Sample data')
plt.plot(x_data, np.polyval(ta_koukei_keisu, x_data), color='red', label='Approximation curve')
plt.legend()
plt.xlabel('X-jikusosuu')
plt.ylabel('Y-jikusosuu')
plt.title('Takoukei kinnjiki sen')
plt.show()
pythonの散布図で近似曲線(累乗近似)を引き近似式も表示させる方法(数式)【numpy, matplotlib】
累乗近似は、非線型のデータに対しても適用することが可能です。
numpyの`polyfit`関数を使用し、対数変換を行ってから線型近似を行います。
# 累乗近似
ryujou_keisu, ryujou_sekisu = np.polyfit(np.log(x_data[1:]), y_data[1:], 1)
# 近似式の表示
print(f"近似式: y = {np.exp(ryujou_sekisu):.2f}x^{ryujou_keisu:.2f}")
# 散布図と近似曲線の描画
plt.scatter(x_data, y_data, label='Sample data')
plt.plot(x_data[1:], np.exp(ryujou_sekisu) * x_data[1:]**ryujou_keisu, color='red', label='Approximation curve')
plt.legend()
plt.xlabel('X-jikusosuu')
plt.ylabel('Y-jikusosuu')
plt.title('Ryujou kinnjiki sen')
plt.show()
pythonの散布図で近似曲線(対数近似)を引き近似式も表示させる方法(数式)【numpy, matplotlib】
最後に、対数近似について説明します。この方法でも、numpyの`polyfit`関数を用いてxデータの対数変換を行った後に線型近似を行います。
# 対数近似
taisu_keisu, taisu_sekisu = np.polyfit(x_data[1:], np.log(y_data[1:]), 1)
# 近似式の表示
print(f"近似式: y = exp({taisu_keisu:.2f}x + {taisu_sekisu:.2f})")
# 散布図と近似曲線の描画
plt.scatter(x_data, y_data, label='Sample data')
plt.plot(x_data[1:], np.exp(taisu_keisu*x_data[1:] + taisu_sekisu), color='red', label='Approximation curve')
plt.legend()
plt.xlabel('X-jikusosuu')
plt.ylabel('Y-jikusosuu')
plt.title('Taisuu kinnjiki sen')
plt.show()
まとめ
この記事で紹介したnumpyの`polyfit`関数とmatplotlibライブラリを使用することで、Pythonを利用した近似曲線や近似直線の描画が可能になります。また、近似式の表示も行えるため、データ解析や報告の際に非常に役立つでしょう。
異なる種類の近似(線型、多項式、累乗、対数)を試して、最もデータに適した近似方法を見つけることができます。これらの方法はデータ解析や機械学習の分野で広く使用されており、データサイエンティストや研究者にとって重要な技術となっています。
各近似方法のコードは、サンプルデータの生成から近似曲線の描画までを包括しており、変数名はわかりやすいよう日本語をローマ字表記にした特徴的なものを使用しています。これにより、コードの理解が更に容易になります。
この記事を参考にして、自身のデータ解析プロジェクトで近似曲線や近似直線の描画を試してみてください。そして、最適な近似方法を見つけ、データの洞察を深め、プロジェクトを成功に導く手助けをしてください。
以上でPythonを利用した散布図の近似直線や近似曲線の描画方法に関する解説を終えます。今後もデータ解析やプログラミングに関するさまざまなテーマで記事を提供していきますので、ぜひお楽しみに!
コメント