複数の特徴量
CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 12/58。
家の価格は広さだけで決まるわけではありません。駅までの徒歩時間が長いと、価格は下がります。この両方から学習したモデルは、平行な直線を描きます。
コードでは、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分あたりの千単位です。
チャレンジ
中級ケータリング業者は、過去40件のイベントのデータ(events.csv)をもとに、新しいイベントの見積もりを出します。データには、guests、courses、months_ahead(予約が何か月前に行われたか)、およびドル単位のcostが含まれています。スターターコードでは、新しいイベントをnew_eventに読み込みます。
featuresを使って、費用を予測するLinearRegressionモデルを学習させます。- 各特徴量について、1つ増えるといくら加算または減算されるかを出力します(小数点以下2桁)。
- 新しいイベントの見積もりを出力します(小数点以下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]})
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師あり学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ