菜单
×
   ❮     
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 提供支持