机器学习入门:从基础概念到线性回归实战
创作时间:
作者:
@小白创作中心
机器学习入门:从基础概念到线性回归实战
引用
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. 预测值
热门推荐
3GPP支持无人机服务的关键性能指标
脱发、头油?教你养出好头发
我国自主创制的水稻田HPPD抑制剂类除草剂—吡唑喹草酯
前瞻全球产业早报:国务院国资委部署深化央企“AI+”专项行动
英语语法详解:不定式"to + 动词原形"的多种用法
玩乐高真的能帮助孩子学编程吗?一篇文章帮你理清思路
美式咖啡:身体的双面镜,一饮间的利弊交织
油烟机集成灶好还是单独的比较好?
中央空调的出风口和回风口怎么区分 什么是空调风口
卖房后户口滞留,牵出多少麻烦事?速看!
高端装备制造业发展趋势:智能化、绿色化成为主旋律
流量卡办理指南:年龄证件要求及途径全解析
咖啡对身体有什么坏处
二手房买卖过程中如何办理户口迁移手续
限位开关:从原理到应用的全面剖析
曼联将以破纪录转会费签下本菲卡小将若昂·内维斯
广州办公地点选择及其影响因素分析
数字万用表测试电子元器件的注意事项
刘禅:蜀汉末代皇帝的复杂形象与诸葛亮死后的执政岁月
航煤和柴油有什么区别
四川九寨沟旅游季节特点及详细介绍
居住证明如何办理
南阳台适合养什么花?这“3种”,耐寒耐热,五颜六色,美成花园
五行查询及生辰八字查询的命理分析
2025年广州小升初大揭秘:积分入学门槛降低,电脑派位规则更透明
如何在iPhone上管理已购项目
眼看中国做得更好,俄方再提C929大飞机合作,但已跟不上中方节奏
精选内容集|宝宝辅食泥制作秘籍 从食材选择到保存方法一手掌握
企业人身意外险和个人保险区别
《起风了》:一首触动人心的音乐作品