機械学習 - 多変数回帰
多元回帰(Multiple Regression)
多元回帰は線形回帰と同様ですが、複数の独立値を持っており、これは2つ以上の変数に基づいて値を予測しようとするという意味です。
以下のデータセットを確認してください。中には自動車に関する情報が含まれています。
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Space Star | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Cooper | 1500 | 1140 | 105 |
VW | Up! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | A-Class | 1500 | 1365 | 92 |
Ford | Fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Swift | 1300 | 990 | 101 |
Ford | Fiesta | 1000 | 1112 | 99 |
Honda | Civic | 1600 | 1252 | 94 |
Hundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rapid | 1600 | 1119 | 104 |
Ford | Focus | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Insignia | 2000 | 1428 | 99 |
Mercedes | C-Class | 2100 | 1365 | 99 |
Skoda | Octavia | 1600 | 1415 | 99 |
Volvo | S60 | 2000 | 1415 | 99 |
Mercedes | CLA | 1500 | 1465 | 102 |
Audi | A4 | 2000 | 1490 | 104 |
Audi | A6 | 2000 | 1725 | 114 |
Volvo | V70 | 1600 | 1523 | 109 |
BMW | 5 | 2000 | 1705 | 114 |
Mercedes | E-Class | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Ford | B-Max | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
我们可以根据发动机排量的大小预测汽车的二氧化碳排放量,但是通过多元回归,我们可以引入更多变量,例如汽车的重量,以使预测更加准确。
エンジンの排量の大きさに基づいて、車の二酸化炭素排出量を予測できますが、多元回归を用いることで、車の重量などの多くの変数を導入し、予測をより正確にすることができます。
動作原理
import pandas
Python では、この作業を完了できるモジュールがあります。まず、Pandas モジュールをインポートします:
Pandas モジュールは、csv ファイルを読み取り、DataFrame オブジェクトを返すことができます。このファイルはテスト目的にのみ使用されます。ダウンロードできます:
df = pandas.read_csv("cars.csv")
cars.csv
関連する値を 'y' という変数に格納します。
X = df[['Weight', 'Volume']] y = df['CO2']
ヒント:通常、独立値のリストを大文字で命名します X
、関連する値のリストを小文字で命名します y
。
sklearn モジュールの一部のメソッドを使用しますので、このモジュールをインポートする必要があります:
from sklearn import linear_model
sklearn モジュールでは、 LinearRegression()
メソッドがあり、線形回归オブジェクトを作成します。
このオブジェクトには、 fit()
この方法は、独立値と従属値をパラメータとして取り、この関係を示すデータで回归オブジェクトを埋める方法です:
regr = linear_model.LinearRegression() regr.fit(X, y)
今、私たちは車の重量と排量に基づいて CO2 値を予測できる回归オブジェクトを持っています:
# 重量が 2300kg、排量が 1300ccm の車の二酸化炭素排出量を予測します: predictedCO2 = regr.predict([[2300, 1300]])
例
完全な例を見てください:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) # 重量が 2300kg、排量が 1300ccm の車の二酸化炭素排出量を予測します: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
結果:
[107.2087328]
私たちは、1.3リッターのエンジン、重量が2300キロの車が1キロメートルを走行すると、約107グラムの二酸化炭素を放出すると予測しています。
係数
係数は未知数との関係を示す因子です。
例えば:もし x
これは変数、したがって 2x
これは x
の二倍です。x
これは未知数、数字 2
これは係数です。
この場合、重量と CO2 の係数値、および体積と CO2 の係数値を求めることができます。得られた答えは、どの独立値を増加または減少させるとどのようなことが起こるかを教えてくれます。
例
回归オブジェクトの係数値を印刷します:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) print(regr.coef_)
結果:
[0.00755095 0.00780526]
結果の解釈
結果の配列は、重量と排量の係数値を示しています。
Weight: 0.00755095 Volume: 0.00780526
これらの値は、重量が 1g 増加すると、CO2 排出量が 0.00755095g 増加することを示しています。
エンジンの寸法(容積)が 1 ccm 增加すると、CO2 排出量は 0.00780526g 増加します。
私はこれが合理的な推測だと思いますが、テストをすることをお勧めします!
私たちは、1300ccmのエンジンを持つ車が2300キログラム重いと予測しました。その場合、二酸化炭素排出量は約107グラムです。
1000gの重さを増やしたらどうなるでしょう?
例
前の例をコピーしますが、車の重さを2300から3300に変更します:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) predictedCO2 = regr.predict([[3300, 1300]]) print(predictedCO2)
結果:
[114.75968007]
私たちは、1.3リットルのエンジン、3.3トンの重さを持つ車が1キロメートル走行すると、約115グラムの二酸化炭素を放出すると予測しました。
これは 0.00755095 の係数が正しいことを示しています:
107.2087328 + (1000 * 0.00755095) = 114.75968