線性迴歸
迴歸是一種確定一個變數(y)與其他變數(x)之間關係的方法。
在統計學中,線性迴歸是一種對 y 和 x 之間線性關係進行建模的方法。
在機器學習中,線性迴歸是一種監督式機器學習演算法。
散點圖
這是散點圖(來自上一章)
示例
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,10,11,14,14,15];
// 定義資料
const data = [{
x:xArray,
y:yArray,
mode: "markers"
}];
// 定義佈局
const layout = {
xaxis: {range: [40, 160], title: "平方米"},
yaxis: {range: [5, 16], title: "百萬美元"},
title: "房價與面積"
};
Plotly.newPlot("myPlot", data, layout);
自己動手試一試 »
預測值
從上面的散點資料中,我們如何預測未來的價格?
- 使用手繪線性圖
- 建模線性關係
- 建模線性迴歸
線性圖
這是一條基於最高價和最低價預測價格的線性圖
示例
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,9,10,11,14,14,15];
const data = [
{x:xArray, y:yArray, mode:"markers"},
{x:[50,150], y:[7,15], mode:"line"}
];
const layout = {
xaxis: {range: [40, 160], title: "平方米"},
yaxis: {range: [5, 16], title: "百萬美元"},
title: "房價與面積"
};
Plotly.newPlot("myPlot", data, layout);
自己動手試一試 »
來自上一章
線性圖可以寫成 y = ax + b
其中
- y 是我們要預測的價格
- a 是直線的斜率
- x 是輸入值
- b 是截距
線性關係
該模型使用價格和尺寸之間的線性關係來預測價格
示例
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,10,11,14,14,15];
// 計算斜率
let xSum = xArray.reduce(function(a, b){return a + b;}, 0);
let ySum = yArray.reduce(function(a, b){return a + b;}, 0);
let slope = ySum / xSum;
// 生成值
const xValues = [];
const yValues = [];
for (let x = 50; x <= 150; x += 1) {
xValues.push(x);
yValues.push(x * slope);
}
自己動手試一試 »
在上面的例子中,斜率是計算出的平均值,截距為 0。
使用線性迴歸函式
該模型使用線性迴歸函式來預測價格
示例
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,10,11,14,14,15];
// 計算總和
let xSum=0, ySum=0 , xxSum=0, xySum=0;
let count = xArray.length;
for (let i = 0, len = count; i < count; i++) {
xSum += xArray[i];
ySum += yArray[i];
xxSum += xArray[i] * xArray[i];
xySum += xArray[i] * yArray[i];
}
// 計算斜率和截距
let slope = (count * xySum - xSum * ySum) / (count * xxSum - xSum * xSum);
let intercept = (ySum / count) - (slope * xSum) / count;
// 生成值
const xValues = [];
const yValues = [];
for (let x = 50; x <= 150; x += 1) {
xValues.push(x);
yValues.push(x * slope + intercept);
}
自己動手試一試 »
多項式迴歸
如果散點資料不符合線性迴歸(穿過點的直線),則資料可能符合多項式迴歸。
多項式迴歸與線性迴歸一樣,使用變數 x 和 y 之間的關係來找到穿過資料點的最佳繪製線。