主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

线性回归

回归分析(Regression)是一种用于确定一个变量(y)与其他变量(x)之间关系的方法。

在统计学(statistics)中,线性回归是一种用于建模yx之间线性关系的一种方法。

在机器学习(Machine Learning)中,线性回归是一种监督式机器学习算法。


散点图(Scatter Plot)

这是散点图(来自之前的章节):

实例代码 运行代码
复制
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 = {
  title: '房子价格和面积关系',
  xaxis: {range: [40, 160], title: "建筑面积(㎡)"},
  yaxis: {range: [5, 16], title: "价格(百万元)"},
};

// 渲染图表
Plotly.newPlot('myPlot1', data, layout);

预测值(Predicting Values)

基于上述散点数据(scattered data),如何预测未来价格?

  • 使用手绘线性图表(linear graph)
  • 建立线性关系(linear relationship)模型
  • 构建线性回归(linear regression)模型

线性图(Linear Graphs)

这是一个基于最低价和最高价预测价格的线性图:

实例代码 运行代码
复制
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:截距项(基线值)

线性关系(Linear Relationships)

该模型通过价格与尺寸的线性关系进行价格预测:

实例代码 运行代码
复制
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);
}

多项式回归(Polynomial Regression)

如果散点数据不适用于线性回归(无法用直线拟合),可尝试多项式回归。

多项式回归与线性回归类似,利用变量x与y的关系寻找最优拟合曲线。

多项式回归



评论区 0
发表评论
教程介绍
机器学习是人工智能的子领域,通过算法让计算机从数据中自动学习规律,并做出预测或决策。
29 章节
66 阅读
0 评论