Python机器学习(持续更新中☆☆)

机器学习简介

机器学习通过让计算机从大量数据中学习模式和规律来做出决策和预测。
机器学习是一个迭代过程,可能需要多次调整模型参数和特征选择,以提高模型的性能。
下面这张图展示了机器学习的基本流程:
在这里插入图片描述
Labeled Data(标记数据):数据包括了不同的几何形状(如六边形、正方形、三角形)
Lables(标签数据):标签数据
Model Training(模型训练):机器学习算法分析数据的特征,并学习如何根据这些特征来预测标签
Test Data(测试数据):包括一个正方形和一个三角形
Prediction(预测):模型使用从训练数据中学到的规则来预测测试数据的标签。在图中,模型预测了测试数据中的正方形和三角形
Evaluation(评估)::预测结果与测试数据的真实标签进行比较,以评估模型的准确性

机器学习工作流程

1.数据收集

收集数据:收集相关数据。数据可以来自数据库、文件、网络或实时数据流。
数据类型:可以是结构化数据(如表格数据)或非结构化数据(如文本、图像、视频)。

2.数据预处理

数据清理:处理缺失值、异常值、错误和重复数据。
特种工程:选择有助于模型学习的最相关特征,可能包括创建新特征或转换现有特征。
数据标准化/归一化:调整数据的尺度,使其在同一范围内,有助于某些算法的性能。

3.选择模型

确定问题类型:根据问题的性质(分类、回归、聚类等)选择合适的机器学习模型。
选择算法:基于问题类型和数据特性,选择一个或多个算法进行实验。

4.训练模型

划分数据集:将数据分为训练集、验证集和测试集。
训练:使用训练集上的数据来训练模型,调整模型参数以最小化损失函数。
验证:使用验证集来调整模型参数,防止过拟合。

5.评估模型

性能评估:使用测试集来评估模型的性能,常用的指标包括准确率、召回率、F1分数等。
交叉验证:一种评估模型泛化能力的技术,通过将数据分成多个子集进行训练和验证。

6.模型优化

调整超参数:超参数是学习过程之前设置的参数,如学习率、树的深度等,可以通过网格搜索、随机搜索或贝叶斯优化等方法来调整。
特征选择:可能需要重新评估和选择特征,以提高模型性能。

7.模型部署

集成到应用:将训练好的模型集成到实际应用中,如网站、移动应用或软件中。
监控和维护:持续监控模型的性能,并根据新数据更新模型。

8.反馈循环

持续学习:机器学习模型可以设计为随着时间的推移自动从新数据中学习,以适应变化。

技术细节

损失函数:一个衡量模型预测与实际结果差异的函数,模型训练的目标是最小化这个函数。
优化算法:如梯度下降,用于找到最小化损失函数的参数值。
正则化:一种技术,通过添加惩罚项来防止模型过拟合。

机器学习的类型

监督学习

定义:监督学习是指使用带标签的数据进行训练,模型通过学习输入数据与标签之间的关系,来做出预测或分类。
应用:分类(如垃圾邮件识别)、回归(如房价预测)。
例子:线性回归、逻辑回归、支持向量机(SVM)、决策树。

无监督学习

定义:无监督学习使用没有标签的数据,模型试图在数据中发现潜在的结构或模式。
应用:聚类(如客户分群)、降维(如数据可视化)。
例子:K-means 聚类、主成分分析(PCA)。

强化学习

定义:强化学习通过与环境互动,智能体在试错中学习最佳策略,以最大化长期回报。每次行动后,系统会收到奖励或惩罚,来指导行为的改进。
应用:游戏AI(如AlphaGo)、自动驾驶、机器人控制。
例子: Q-learning、深度Q网络(DQN)、AlphaGo、自动驾驶、游戏AI。

机器学习基础概念

训练集、测试集和验证集:帮助训练、评估和调优模型。
特征与标签:特征是输入,标签是模型预测的目标。
模型与算法:模型是通过算法训练得到的,算法帮助模型学习数据中的模式。
监督学习、无监督学习和强化学习:三种常见的学习方式,分别用于不同的任务。
过拟合与欠拟合:两种常见的问题,影响模型的泛化能力。
训练误差与测试误差:反映模型是否能适应数据,并进行有效预测。
评估指标:衡量模型好坏的标准,根据任务选择合适的指标。

训练集、测试集和验证集

训练集(Training Set):训练集是用于训练机器学习模型的数据集,它包含输入特征和对应的标签(在监督学习中)。模型通过学习训练集中的数据来调整参数,逐步提高预测的准确性。
测试集(Test Set):测试集用于评估训练好的模型的性能。测试集中的数据不参与模型的训练,模型使用它来进行预测,并与真实标签进行比较,帮助我们了解模型在未见过的数据上的表现。
验证集(Validation Set):验证集用于在训练过程中调整模型的超参数(如学习率、正则化参数等)。它通常被用于模型调优,帮助选择最佳的模型参数,避免过拟合。验证集的作用是对模型进行监控和调试。
训练集用于训练模型。测试集用于评估模型的最终性能。验证集用于模型调优。

特征和标签

特征(Features):特征是输入数据的不同属性,模型使用这些特征来做出预测和分类。例如,在房价预测中,特征可能包括房子的面积、地理位置、卧室数量等
标签(Labels):标签是机器学习任务中的目标变量,模型要预测的结果。对于监督学习任务,标签通长时已知的。例如,在房价预测中,标签就是房子的实际价格
特征是模型输入的数据。标签是模型需要预测的输出。

模型与算法

模型(Model):模型是通过学习数据中的模式而构建的数学结构。它接受输入特征,经过一系列计算和转化,输出一个预测结果。常见的模型有线性回归、决策树、神经网络等。
算法(Algorithm):算法是实现机器学习的步骤或规则,它定义了模型如何从数据中学习。常见的算法有梯度下降法、随机森林、K近邻算法等。算法帮助模型调整其参数以最小化预测误差。
模型是学习到的结果,它可以用来进行预测。算法是训练模型的过程,帮助模型从数据中学习。

监督学习、无监督学习和强化学习

监督学习(Supervised Learning):在监督学习中,训练数据包含已知的标签。模型通过学习输入特征与标签之间的关系来进行预测或分类。监督学习的目标是最小化预测错误,使模型能够在新数据上做出准确的预测。
无监督学习(Unsupervised Learning):无监督学习中,训练数据没有标签,模型通过分析输入数据中的结构或模式来进行学习。目标是发现数据的潜在规律,常见的任务包括聚类、降维等。
强化学习(Reinforcement Learning):强化学习是让智能体(Agent)通过与环境(Environment)的互动,采取行动并根据奖励或惩罚来学习最优策略。智能体的目标是通过最大化长期奖励来优化行为。
监督学习:有标签的训练数据,任务是预测或分类。无监督学习:没有标签的训练数据,任务是发现数据中的模式或结构。强化学习:通过与环境互动,智能体根据奖励和惩罚进行学习。

过拟合与欠拟合

过拟合(Overfitting):==过拟合是指模型在训练数据上表现非常好,但在测试数据上表现很差。==这通常发生在模型复杂度过高、参数过多,导致模型"记住"了训练数据中的噪声或偶然性,而不具备泛化能力。过拟合的模型无法有效应对新数据。
欠拟合(Underfitting)欠拟合是指模型在训练数据上和测试数据上都表现不佳。通常是因为模型过于简单,无法捕捉数据中的复杂模式。欠拟合的模型无法从数据中学习到有用的规律。
解决办法
过拟合:可以通过简化模型、增加训练数据或使用正则化等方法来缓解。
欠拟合:可以通过增加模型复杂度或使用更复杂的算法来改进。

训练与测试误差

训练误差(Training Error):训练误差是模型在训练数据上的表现,反映了模型是否能够很好地适应训练数据。如果训练误差很大,可能说明模型不够复杂,欠拟合;如果训练误差很小,可能说明模型太复杂,容易过拟合。
测试误差(Test Error): 测试误差是模型在未见过的数据上的表现,反映了模型的泛化能力。测试误差应当与训练误差相匹配,若测试误差远高于训练误差,通常是过拟合。
训练误差和测试误差的差距可以帮助我们判断模型的适应性。理想的情况是训练误差和测试误差都较小,并且相对接近。

评估指标

根据任务的不同,机器学习模型的评估指标也不同。以下是常用的一些评估指标:
准确率(Accuracy): 分类任务中,正确分类的样本占总样本的比例。
精确率(Precision)和召回率(Recall):主要用于处理不平衡数据集,精确率衡量的是被模型预测为正类的样本中,有多少是真正的正类;召回率衡量的是所有实际正类中,有多少被模型正确识别为正类。
F1 分数:精确率与召回率的调和平均数,用于综合考虑模型的表现。
均方误差(MSE):回归任务中,预测值与真实值之间差异的平方的平均值。
评估指标帮助我们衡量模型的表现,选择最合适的指标可以根据任务的需求来进行。

数据集相关概念

鸢尾花的种类

Setosa(赛多萨鸢尾花)

花萼长度:较短(约为5.0 cm)。4.3 cm - 5.8 cm
花萼宽度:较宽(约为3.4 cm)。2.3 cm - 4.4 cm
花瓣长度:较短(约为1.4 cm)。1.0 cm - 1.9 cm
花瓣宽度:较宽(约为0.2 cm)。0.1 cm - 0.6 cm
区分特征:Setosa 花瓣通常比较小,花萼较宽。该类鸢尾花常常在所有鸢尾花种类中最容易区分。

Versicolor(变色鸢尾花)

花萼长度:中等(约为5.9 cm)。4.9 cm - 7.0 cm
花萼宽度:中等(约为2.8 cm)。2.0 cm - 3.4 cm
花瓣长度:中等(约为4.3 cm)。3.0 cm - 5.1 cm
花瓣宽度:中等(约为1.3 cm)。1.0 cm - 1.8 cm
区分特征:Versicolor 的花瓣比 Setosa 长且较宽,但与 Virginica 相比,它的花瓣较短且宽度较窄。

Virginica(维吉尼亚鸢尾花)

花萼长度:较长(约为6.6 cm)。4.9 cm - 7.9 cm
花萼宽度:较窄(约为2.9 cm)。2.2 cm - 3.8 cm
花瓣长度:较长(约为5.5 cm)。4.5 cm - 6.9 cm
花瓣宽度:较宽(约为2.0 cm)。1.4 cm - 2.5 cm
区分特征:Virginica 通常花瓣最大,花萼较长。与 Versicolor 相比,它有着明显更长的花瓣。

特征描述

花萼长度(Sepal Length)、花萼宽度(Sepal Width)、花瓣长度(Petal Length)、花瓣宽度(Petal Width)

包安装相关命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pandas matplotlib seaborn scikit-learn
pip freeze > requirements.txt
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

回归问题

回归问题的目标是预测一个连续的输出变量。常见的回归模型包括线性回归、岭回归和 Lasso 回归。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 生成一些随机数据
np.random.seed(0)
x = 2 * np.random.rand(100, 1)
y = 4 + 3 * x + np.random.randn(100, 1)

# 创建线性回归模型
model = LinearRegression()

# 拟合模型
model.fit(x, y)

# 输出模型的参数
print(f"斜率 (w): {model.coef_[0][0]}")
print(f"截距 (b): {model.intercept_[0]}")

# 预测
y_pred = model.predict(x)

# 可视化拟合结果
plt.scatter(x, y)
plt.plot(x, y_pred, color='red')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Linear Regression Fit')
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值