Python机器学习入门系列-第3篇:线性回归-从零理解机器学习预测

线性回归:从零理解机器学习预测

机器学习入门系列 · 第3篇

在之前的两篇文章当中, 我们掌握了搭建环境这项技能, 还学会了清洗数据的方法。现如今, 我们即将去学习首个真正具备能够"预测数值"能力的算法, 也就是线性回归。

在所有机器学习算法里头, 线性回归属于那最简单的、最基础的算法之一了, 然而它同样是能够帮助理解更为复杂算法的关键所在。把线性回归掌握住之后, 此后的逻辑回归也会变得容易理解许多, 神经网络亦是如此。

一、线性回归是什么?

线性回归有着这样的目标, 这个目标是很简单的, 那就是去寻找一条直线, 使得这条直线能够尽可能地"穿过"所有的数据点。

打个比方: 你清楚某个人的身高, 打算去猜测其体重。通常来讲, 身高越高的话, 体重也就越重。你绘制一幅图, 横轴设定为身高, 纵轴设定为体重, 将众多人的数据标注上去, 你就会发觉这些点大致顺着一条直线分布。

所做之事为线性回归的, 乃是自动找寻出那条"最佳直线"。拥有了此条直线, 一旦你输入任意一个身高值, 便能够计算出与之相对应的体重预测数值。

二、单变量线性回归:用一个特征预测

首先, 我们开启预测之旅, 起始点设定为最简单的那种情景, 也就是凭借单一特征展开预测行动。在此过程当中, 所运用的数据集合乃是自带的糖尿病数据集, 而我们此次预测行动的目标明确, 那便是依据患者的BMI, 即身体质量指数, 去实现对于疾病进展指数的预测操作。

复制代码
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
diabetes = load_diabetes()
# 只取BMI这一个特征(第3列)
X = diabetes.data[:, 2:3]
y = diabetes.target
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
model = LinearRegression()
model.fit(X_train, y_train) # 训练模型
# 模型学到的公式:y = 系数 * BMI + 截距
print(f"y = {model.coef_[0]:.2f} * BMI + {model.intercept_:.2f}")
# 输出: y = 998.58 * BMI + 152.00

极其简明!模型所掌握到的公式为: 疾病进展等于998.58乘以BMI再加上152.0句号。这表明着BMI每增添一个单位(经标准化之后), 疾病进展指数预估会增添大概999点数。

三、怎么判断模型好不好?

模型训练完成了, 然而我们究竟要通过怎样的方式去知晓它预测精确与否呢? 存在着两个经常被使用的指标:

复制代码
from sklearn.metrics import r2_score, mean_squared_error
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
# R² 得分: 0.2334 (仅用BMI这一个特征,解释了约23%的变化)
# 均方误差: 4061.83

仅仅使用BMI单一个特征, 结果显示R²大约只有0.23这样的数值。这一情况表明着, BMI尽管具备一定程度的预测能力, 然而仅仅依靠它却是远远不足能够达成目标的情况。

四、多变量线性回归:用多个特征一起预测

已知一个特征不足够, 那么我们便运用全部十个特征一同进行!这便是多变量线性回归。其原理依旧相同------寻觅一条"最佳直线", 唯独到如今需要在高维空间里寻觅。

复制代码
# 使用全部10个特征
X_all = diabetes.data
X_train2, X_test2, y_train2, y_test2 = train_test_split(
X_all, y, test_size=0.2, random_state=42
)
model2 = LinearRegression()
model2.fit(X_train2, y_train2)
# 多变量 R²: 0.4526 (提升了约22个百分点!)
# 多变量 MSE: 2900.19 (误差大幅下降)

在运用10个特征之后, R²的数据从0.23提升至0.45, 提升幅度近乎达到一倍!均方误差同样从4061降低至2900, 使得预测变得更加准确了。

我们能够去瞧瞧每个特征所具备的那种"影响力", 此"影响力"实际上就是系数。系数呈现出的正负状况, 表明了该特征对于结果而言是属于正向的影响趋向还是负向的影响趋向, 而系数绝对值越大, 则意味着其影响力越大。

各特征的影响(系数):

age : 37.90 (正向------年龄越大,疾病进展越快)

sex : -241.96 (负向------性别有一定影响)

bmi : 542.43 (正向------BMI影响最大!)

bp : 347.70 (正向------血压越高,进展越快)

s1 : -931.49 (负向------血清指标1影响很大)

五、小结

今天我们学习了线性回归,核心要点:

就是在找着一条所谓的"最佳直线", 以此来对数据的关系予以描述, 这就是线性回归的实质所在。单变量与多变量, 只采用一个特征的情况被称作单变量, 而采用多个特征便被叫做多变量。R²以及MSE, R²越趋近于1越为良好, MSE越小则越佳。系数方面, 正数代表着是正向影响, 负数代指的是反向影响, 绝对值越大就越具重要性。

虽则线性回归简单, 然而它却是机器学习大厦的地基。在下一篇文章之中, 我们将要去学习一种跟线性回归名字极为相像、可是用途全然不同的算法, 那便是逻辑回归。它尽管名字里面带有"回归", 但实际上却是用以做分类的!

相关推荐
龙腾AI白云1 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
zy_destiny3 小时前
深度学习实战-基于YOLOv8的玉米雄穗目标检测:从数据集下载到训练部署全流程实录
yolo·目标检测·机器学习
禹凕4 小时前
机器学习之Selenium(Machina Learning about Selenium)
爬虫·python·selenium·测试工具·机器学习
一直在努力的小宁4 小时前
【阅读笔记】具身智能的真机数采,到了分水岭
人工智能·深度学习·机器学习·agent·具身智能·vlm·vln
YH行业报告分析5 小时前
2026 AI法律合同审查平台市场洞察:NLP与机器学习如何推动企业合规与合同流程智能化?
人工智能·机器学习·自然语言处理
田里的水稻5 小时前
FA_融合和滤波(FF)-误差状态卡尔曼滤波(ESKF)
人工智能·机器学习·机器人·自动驾驶
Leo.yuan7 小时前
企业可信Data Agent怎么建:可信分析智能体(Traceable Analytic Agent)的分析链路与验证机制
大数据·人工智能·机器学习
YOLO数据集集合8 小时前
树木检测数据集 | 树木检测 树种分类 航拍林业 森林监测9131期
人工智能·算法·机器学习·分类·数据挖掘·林业·树种分类
空奈qwq9 小时前
ANN 全连接神经网络入门指南:从神经元到深度学习的第一步
人工智能·python·深度学习·神经网络·算法·机器学习
Java的搬运工11 小时前
【无标题】
python·机器学习·docker·fastapi·模型部署·mlops·ai工程化