Menu
CoddyTech

複数の特徴量

CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 12/58。

家の価格は広さだけで決まるわけではありません。駅までの徒歩時間が長いと、価格は下がります。この両方から学習したモデルは、平行な直線を描きます。

点で示した10軒の家。面積に対する価格:駅に近い家は青、遠い家はオレンジの四角。5分と25分の徒歩時間に対応する2本の平行なモデル直線。25分の直線は、どの面積でも10万2千ドル低い

コードでは、Xには両方の列が入り、coef_には特徴量ごとに1つの重みが入ります。

X = houses[["area_m2", "minutes_walk"]]
model = LinearRegression()
model.fit(X, houses["price"])
print(np.round(model.coef_, 1))

これは次のように出力されます:

[ 2.6 -5.1]

重みはXの列に対応しています。ほかの特徴量を一定に保った場合、面積が1 m²増えるごとに2.6千ドル増え、徒歩時間が1分増えるごとに5.1千ドル減ります。

重みの単位は、特徴量の単位あたりの目的変数の単位です。たとえば、m²あたりの千単位、1分あたりの千単位です。

challenge icon

チャレンジ

中級

ケータリング業者は、過去40件のイベントのデータ(events.csv)をもとに、新しいイベントの見積もりを出します。データには、guests、courses、months_ahead(予約が何か月前に行われたか)、およびドル単位のcostが含まれています。スターターコードでは、新しいイベントをnew_eventに読み込みます。

  1. featuresを使って、費用を予測するLinearRegressionモデルを学習させます。
  2. 各特徴量について、1つ増えるといくら加算または減算されるかを出力します(小数点以下2桁)。
  3. 新しいイベントの見積もりを出力します(小数点以下2桁)。

別のケータリング業者の場合:

Each extra guest adds 41.5 dollars
Each extra course adds 198.25 dollars
Each extra month booked ahead takes off 22.8 dollars
Quote: 4312.6 dollars

自分で試してみよう

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

# 過去のイベントごとに1行:ゲスト数、コース数、何か月前に予約したか、ドル単位の費用
events = pd.read_csv("events.csv")
features = ["guests", "courses", "months_ahead"]
units = ["guest", "course", "month booked ahead"]
# 新しいイベントを1行の表として表したもの
guests = int(input())
courses = int(input())
months = int(input())
new_event = pd.DataFrame({"guests": [guests], "courses": [courses], "months_ahead": [months]})

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

教師あり学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ