机器学习入门:从基础概念到线性回归实战
创作时间:
作者:
@小白创作中心
机器学习入门:从基础概念到线性回归实战
引用
CSDN
1.
https://blog.csdn.net/weixin_73839586/article/details/145689588
机器学习是人工智能领域的一个重要分支,它通过让计算机从数据中学习规律,从而完成特定任务。本文将从机器学习的基本概念出发,介绍其核心定义、分类、工作流程以及常见术语,并通过一个线性回归预测房价的实践案例,帮助读者更好地理解机器学习的应用。
什么是机器学习?
机器学习是一种使计算机系统利用数据和算法自主学习并改进其性能的人工智能领域。其核心定义和分类如下:
定义:通过数据训练模型,让模型在不显式编程的情况下完成特定任务。
分类:
监督学习(Supervised Learning):有标签数据,例如分类问题和回归问题。
无监督学习(Unsupervised Learning):无标签数据,例如聚类问题。
强化学习(Reinforcement Learning):通过奖励机制学习最佳策略。
监督学习和无监督学习的对比
- 监督学习案例:预测房价(回归)、分类垃圾邮件(分类)。
- 无监督学习案例:将客户分组(聚类)。
机器学习工作流程
机器学习的工作流程通常包括以下几个步骤:
- 数据收集与准备
- 特征工程(数据清洗、标准化、特征选择)
- 选择模型
- 模型训练与评估
- 模型优化
- 部署模型
常见术语
- 特征(Features):模型输入的数据属性。
- 标签(Labels):目标变量(监督学习中)。
- 过拟合与欠拟合:模型表现与数据拟合的关系。
- 损失函数:衡量预测与实际值之间误差的函数。
实践任务:用线性回归预测房价
我们将尝试实现一个简单的线性回归案例,使用Python来预测房价。
代码实现
# 导入所需的库
import numpy as np # 用于数值计算
import matplotlib.pyplot as plt # 用于数据可视化
from sklearn.datasets import load_boston # 用于加载波士顿房价数据集
from sklearn.model_selection import train_test_split # 用于将数据划分为训练集和测试集
from sklearn.linear_model import LinearRegression # 用于创建线性回归模型
from sklearn.metrics import mean_squared_error # 用于评估模型性能(计算均方误差)
# 加载波士顿房价数据集
boston = load_boston() # 加载数据
X = boston.data # 特征数据(每个样本的属性,如房间数、面积等)
y = boston.target # 目标数据(房价)
# 划分训练集和测试集
# 将数据分成训练集和测试集,比例为 80% 训练集,20% 测试集,random_state 保证结果可复现
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_pred = model.predict(X_test) # 输入测试集特征,输出模型预测的房价
# 评估模型性能
mse = mean_squared_error(y_test, y_pred) # 计算均方误差 (MSE)
print(f"均方误差 (MSE): {mse:.2f}") # 打印均方误差,数值越小,模型效果越好
# 可视化实际值与预测值的对比
plt.figure(figsize=(10, 6)) # 创建画布,设置大小为 10x6 英寸
plt.scatter(y_test, y_pred, alpha=0.7) # 绘制散点图,横轴为实际值,纵轴为预测值
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], '--r', linewidth=2)
# 绘制一条红色虚线,表示理想情况下预测值与实际值完全相等的直线
plt.xlabel("实际值", fontsize=12) # 设置 x 轴标签
plt.ylabel("预测值", fontsize=12) # 设置 y 轴标签
plt.title("实际值 vs. 预测值", fontsize=14) # 设置图表标题
plt.show() # 显示图表
附代码解释
model = LinearRegression()
- 作用:
- 这行代码创建了一个线性回归模型实例,model是这个模型对象。
- 线性回归模型的目标是找到一个线性函数(形式为 ( y = w_1x_1 + w_2x_2 + \dots + w_nx_n + b )),使得输入特征 ( x ) 和输出目标 ( y ) 的误差最小。
- 为什么需要模型对象:
- LinearRegression()是sklearn.linear_model中的一个类,它封装了线性回归的所有功能,例如:
- 训练(fit):计算模型的参数 ( w ) 和 ( b )。
- 预测(predict):用训练好的模型对新数据进行预测。
- 评估(score):计算模型的 R² 分数(解释变量的比例)。
- 模型内部会做什么:
- 创建模型对象时,sklearn会初始化一些超参数(比如是否添加截距项b等)。
- 这些超参数的默认值已经足够应对大多数基础问题。
model.fit(X_train, y_train)
- 作用:
- fit是训练模型的核心方法,它会根据训练集的特征数据 ( X ) 和目标值 ( y ),计算出模型的最优参数(权重 ( w ) 和偏置 ( b ))。
- 简单来说,这一步让模型“学习”训练数据中的规律。
- 内部过程:
- fit方法会执行以下步骤:
- 假设模型形式:线性回归假设输出 ( y ) 和输入 ( x ) 存在线性关系。
- 最小化损失函数:通过最小化均方误差(MSE),找到最佳的 ( w ) 和 ( b )。
[
MSE = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2
]
其中 ( y_i ) 是真实值,( \hat{y}_i ) 是预测值。 - 求解参数:利用数学方法(例如最小二乘法或矩阵运算),找到使误差最小的 ( w ) 和 ( b )。
- 结果:
- fit方法完成后,模型就会包含训练好的参数。
- 这些参数存储在model.coef_(权重 ( w ))和model.intercept_(截距 ( b ))中。
举个例子:
假设你的数据集只有一个特征 ( X ) 和一个目标 ( y ),模型要找到以下关系:
[
y = wx + b
]
- 初始状态:模型没有任何参数,无法预测 ( y )。
- 调用fit(X_train, y_train)后,模型会:
- 找到最佳的 ( w ) 和 ( b ),例如 ( w = 2.5 ), ( b = 1.0 )。
- 现在,模型可以用 ( y = 2.5x + 1.0 ) 对任何输入 ( x ) 做出预测。
一些学习疑问:
为什么要fit?
fit是训练模型的过程,它让模型学习到数据中的规律,计算出最优参数。fit后的模型能做什么?
训练后的模型可以用predict方法预测新数据的目标值,例如:new_data = np.array([[1.5], [3.0]]) # 新的数据点 predictions = model.predict(new_data) # 用训练好的模型预测
代码运行结果
实际值 vs. 预测值
热门推荐
驼油:冬季护肤的沙漠瑰宝
厨房方位对健康的影响
厨房镜语:招财与破财的一线之隔,风水布局的智慧之道
从英语到创业:热门培训课程大盘点
<绝命枪>:王学圻演绎机械工程师的抗战智斗
乐陵三大打卡圣地:影视城、枣博馆、革命园
乐陵影视城打卡,跟着明星脚步游乐陵
从三个真实案例看微信证据:如何让聊天记录更有法律效力
古埃及教育体系:多样化的学校类型与科学的教学方法
五脏六腑与十二经络:中医对人体结构的独特认知
中科院研究揭示:二甲双胍或成多种疾病治疗新选择
曾经家家户户都有的“滚筒洗衣机”,为何如今大不如前了?你家还用吗
无需器械,20分钟燃脂:8个动作HIIT训练详解
成立四年流转26万亩土地,张家口农垦集团构建全产业链服务体系
1月最佳观赏期,昆明海埂大坝观鸥全攻略
12月28日起,昆明地铁开通海埂大坝免费观鸥专线
大理古城美食探店:阿婆情腊排骨、倾城火锅、傣家姑娘手抓饭
大理古城必打卡:幸会小仙女野生菌火锅
消化系统疾病引起的下腹痛:症状识别与诊断要点
喝糖水、吃黄瓜……8个实用妙招缓解吃辣后腹痛
巴西坚果:营养价值与食用指南
揭秘科技前沿:AF膜的成分奥秘、工作原理与制备工艺
质量控制的关键要素与措施详解
慢性支气管炎患者福利来了!新规解读
高血压慢特病申请条件大揭秘:新政取消起付线,报销比例高达95%
工程项目质量管理的PDCA循环详解
肾结石防治全攻略:从成因解析到饮食管理
新研究:每周吃5个鸡蛋可降低高血压和糖尿病风险
冬至来了,送上最暖问候语
秦桧在南宋的崛起:权力与策略的交织