机器学习入门:从基础概念到线性回归实战
创作时间:
作者:
@小白创作中心
机器学习入门:从基础概念到线性回归实战
引用
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. 预测值
热门推荐
肌肉流失应该怎么办?均衡饮食与恰当锻炼的科学指南!
揭秘小猫心中的秘密:它们是如何识别主人的?
什么是遗产分配计划
液体色度单位及测量标准
影响面包品质质量的四个核心因素
沥青涨跌受哪些因素影响?这些因素如何相互作用?
柳叶刀·风湿病学:重医附一院杨培增教授团队发表白塞病葡萄膜炎原创性研究成果
头部结构绘画技巧:从基础比例到完整轮廓的详细教程
2024全国地铁数据分享,新疆也有地铁!
时序分析基本概念介绍——建立时间和保持时间
烧水壶里的水垢到底有没有害?多种实用去除方法全攻略
五宗法脉之禅宗泰斗虚云禅师简介
加拿大教育专业排名TOP7的著名学府
缺爱型人格自我治愈的方法
股市涨跌的原因是什么?股市涨跌对投资者的影响有哪些?
心肾不交的四种类型及治疗方法
孕妇牙龈长泡怎么办?三个实用应对方法
胆碱酯酶是什么
契税是什么税种:全面解析与法律规定
南大《自然-计算科学》:孙建教授课题组发布晶体结构搜索软件MAGUS2.0
城市市容管理:定义、方法与成功案例
蜈支洲岛:从生态退化到海底花园的华丽转身
探秘人体脂肪的5大功能,让您对身体有更深入了解!
电机的工作电流怎么计算?
地图精确度提升秘笈:Pix4Dmapper地面控制点应用指南
红枣的这些功效,对人体真的有益吗?
痔疮患者吃什么水果好?医生推荐这4类水果
“腊月二十九,蒸馒头”,这天的馒头怎么蒸,5规矩3窍门要懂得
销魂的扭动——后轮转向技术的工作原理
水泥养护的正确方法是什么