机器学习入门:从基础概念到线性回归实战
创作时间:
作者:
@小白创作中心
机器学习入门:从基础概念到线性回归实战
引用
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. 预测值
热门推荐
燕云十六声DX12和DX11有什么区别?版本选择指南
日常生活中的20个环保小知识,您都知道哪些?
香砂六君子丸的5个临床应用,一文总结
海外仓退货处理流程是怎么样的
解锁春季养生秘籍:如何通过食物调理气血
三角洲行动中的智能武器与科技应用
函数概念的综合应用
怎么判断是不是腮腺肿瘤
小规模纳税人和一般纳税人的注册资本管理差异分析
揭秘《1917》一镜到底拍摄:如何完美呈现不可能的战争任务真实紧张感
花生的生长习性特点及适宜环境条件(探究花生生长的秘密,了解花生适宜的生长环境)
气体检测仪中LEL%、VOL%和ppm是什么意思?EX如何选择?
心肺功能不好怎么锻炼
海南三亚旅游资源基本介绍——主要景点与特色概述
母乳喂养有什么好处
不管油烟机多脏多油,用一个吹风机,不拆不卸,几分钟洁净如新
奥特曼人物大全 还记得上小学那时候的英雄梦吗? 我是来自M78星云の
手机屏幕宽度通常是多少像素?
【朝医科普】过敏性鼻炎认识与防护
惊艳的浪漫诗句推荐 经典古诗句整理
遭遇强拆怎么办?信访材料撰写指南及维权途径全解析
创伤弧菌最忌三种抗生素
中小学学生守则,了解学生行为规范
手脚发麻别大意 可能是这些器官在求救
Web网站安全设置指南:从HTTPS到数据备份的全方位防护
合肥户口户籍迁入最新最全政策流程方法指南
农村养老金的给付流程有哪些
打印机的工作原理与应用(从传统到现代)
潜水装备选择指南:专业潜水器材介绍
委托合同纠纷的法律风险管理