始める無料で始める

人類学における線形モデル

もし何千年も前に生きていた成人の人骨の一部を発見したら、その人物の身長をどう推定すればよいでしょうか? この演習は、法医人類学者 Mildred Trotter の研究に着想を得ています。彼女は人間の「長骨」すなわち大腿骨から身長を推定するための回帰モデルを構築し、現在でも広く使われています。

この演習では、多くの現代人のデータと Python ライブラリ scikit-learn を用いて、大腿骨(太ももの骨)の長さと人物の「stature」(全身の身長)との関係を表す線形モデルを作成します。次に、そのモデルを用いて、古代の祖先の身長を予測します。

この演習はコースの一部です

Pythonで学ぶ線形モデリング入門

コースを見る

演習の手順

  • sklearn.linear_model から LinearRegression をインポートし、fit_intercept=False でモデルを初期化します。
  • 事前に読み込まれている配列 legsheights を、「1-by-N」から「N-by-1」の配列にリシェイプします。
  • リシェイプした配列 legsheightsmodel.fit() に渡します。
  • 見つかった新しい化石について、fossil_leg = 50.7 のときの fossil_height を予測するために model.predict() を使います。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# import the sklearn class LinearRegression and initialize the model
from sklearn.____ import ____
model = LinearRegression(fit_intercept=False)

# Prepare the measured data arrays and fit the model to them
legs = legs.reshape(len(____),1)
heights = heights.reshape(len(____),1)
model.fit(____, heights)

# Use the fitted model to make a prediction for the found femur
fossil_leg = np.array(50.7).reshape(1, -1)
fossil_height = model.predict(____)
print("Predicted fossil height = {:0.2f} cm".format(fossil_height[0,0]))
コードを編集して実行