Pythonでデータの非線形傾向を捉える方法:多項式回帰モデルの適合手順を解説
回帰モデルを構築する際には、必ず多重共線性(マルチコリニアリティ)の有無を確認することが重要です。これは、連続変数のあらゆる組み合わせ間に存在する相関関係を正しく把握する必要があるためです。もし変数間に多重共線性が確認された場合には、その影響をデータから除去しなければなりません。
しかしながら、現実世界のデータは多くの場合、単純な直線ではなく非線形な特性を持っています。そのため、こうした非線形データにモデルを適合させるための手法を見つけることが求められます。本記事では、有名なAnscombe(アンスコム)のデータセットを使用して、非線形データの可視化と多項式回帰による適合方法を紹介します。
非線形データに対しては、seabornライブラリの「lmplot」関数を使用します。「order」パラメータに次数を指定することで、多項式回帰曲線を簡単に描画できるのが特徴です。
サンプルコード
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=my_df.query("dataset == 'II'"), order=3)
plt.show()
出力結果

コードの解説
- まず、必要なライブラリであるpandas、seaborn、matplotlibをインポートします。
- 入力データとしては、seabornライブラリに組み込まれている「anscombe」データセットを使用します。
- 「load_dataset」関数を呼び出すことで、データセットを読み込み、データフレームとして格納します。
- 「query」メソッドを使って、データセットIIのみを抽出対象としています。
- 「lmplot」関数でデータを可視化します。ここでは、データフレームを引数として渡すとともに、x値・y値・そして多項式の次数を表す「order」を指定しています。
- order=3と設定することで、3次の多項式回帰曲線がデータに適合されます。
- 最後に「plt.show()」を実行し、グラフを画面に表示します。
AnscombeのデータセットIIは、明確な曲線的パターンを持つことで知られるデータです。単純な線形回帰では捉えきれないこのような非線形な傾向も、多項式回帰を活用することで効果的にモデル化できることが、この可視化結果から確認できます。実務においても、散布図でデータの形状を事前に確認し、適切な次数を選択することが精度の高いモデリングにつながります。
-
Python SeabornのFacetGridを使ってデータを可視化する方法を解説
barplot(棒グラフ)関数は、カテゴリ変数と連続変数の間の関係を表現します。データは長方形のバーの形式で表示され、バーの長さはその特定のカテゴリにおけるデータの割合を示します。 点プロット(pointplot)は棒グラフとよく似ていますが、塗りつぶしたバーの代わりに、データポイントの推定値がもう一方の軸上の特定の高さにある点として表現される点が異なります。 カテゴリカルデータは、カテゴリ散布図やpointplotなどの個別のプロット、あるいはfactorplotと呼ばれるより高レベルな関数を使って可視化できます。factorplot関数は、パラメータ「kind」を指定することで、Face
-
Pythonの回帰モデルに非線形データを適合させる方法をわかりやすく解説
データの可視化には、Seabornライブラリを使用します。回帰モデルを構築する際には、必ず多重共線性(マルチコリニアリティ)の有無をチェックしましょう。これは、連続変数のあらゆる組み合わせ間に存在する相関関係を把握しておく必要があるためです。もし変数間に多重共線性が確認された場合は、データから除去する対策が求められます。 現実世界のデータは非線形であることが多い 実際のビジネスや研究の現場で扱うデータは、多くの場合非線形です。したがって、こうした非線形データをモデルへ適切に適合させる仕組みを見つけることが重要になります。本記事では、統計学で有名なAnscombe(アンスコム)のデータセットを用