選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

線性迴歸

迴歸是一種確定一個變數(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 之間的關係來找到穿過資料點的最佳繪製線。多項式迴歸

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援