人類学における線形モデル
もし何千年も前に生きていた成人の人骨の一部を発見したら、その人物の身長をどう推定すればよいでしょうか? この演習は、法医人類学者 Mildred Trotter の研究に着想を得ています。彼女は人間の「長骨」すなわち大腿骨から身長を推定するための回帰モデルを構築し、現在でも広く使われています。
この演習では、多くの現代人のデータと Python ライブラリ scikit-learn を用いて、大腿骨(太ももの骨)の長さと人物の「stature」(全身の身長)との関係を表す線形モデルを作成します。次に、そのモデルを用いて、古代の祖先の身長を予測します。

この演習はコースの一部です
Pythonで学ぶ線形モデリング入門
演習の手順
sklearn.linear_modelからLinearRegressionをインポートし、fit_intercept=Falseでモデルを初期化します。- 事前に読み込まれている配列
legsとheightsを、「1-by-N」から「N-by-1」の配列にリシェイプします。 - リシェイプした配列
legsとheightsをmodel.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]))