线性回归
回归分析(Regression)是一种用于确定一个变量(y
)与其他变量(x
)之间关系的方法。
在统计学(statistics)中,线性回归是一种用于建模y
和x
之间线性关系的一种方法。
在机器学习(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
评论
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈