东莞网站优化流程,网站建设收费标准平台,新闻写作网站,法人变更流程一、什么是机器学习#xff1f; OR 机器学习能帮我们做什么#xff1f;
一句白话#xff1a;人类在“创造、情感思维、灵活性”等方面拥有与生俱来的天赋#xff0c;但是在处理“海量、复杂的数据”问题方面非常低效#xff0c;而机器学习就是由人类创造出来高效解决这类…一、什么是机器学习 OR 机器学习能帮我们做什么
一句白话人类在“创造、情感思维、灵活性”等方面拥有与生俱来的天赋但是在处理“海量、复杂的数据”问题方面非常低效而机器学习就是由人类创造出来高效解决这类问题的技术。
机器学习的实际应用场景简单总结有以下几点 预测数据 在股票市场中机器学习可以用于股票价格预测。通过历史股票价格数据和其他相关因素机器学习模型可以预测未来股票价格的走势帮助投资者做出决策在交通管理中机器学习可以用于优化交通流量通过分析历史交通数据预测交通拥堵情况从而优化交通信号灯的控制减少交通拥堵。 识别分类 在医学影像诊断中机器学习可以用于分类X光片或MRI扫描图像帮助医生识别肿瘤、病变等疾病从而进行更准确的诊断。 归纳聚类 在零售业中机器学习可以用于发现顾客购买行为中的关联规律。通过分析购物篮中商品的组合商家可以了解不同商品之间的关联关系从而制定更有效的促销策略。 异常检测 在金融领域机器学习可用于检测信用卡交易中的欺诈行为。通过分析交易模式和行为机器学习模型可以识别异常交易帮助银行和客户减少欺诈风险在广告反作弊领域中异常检测可以用于识别异常的点击行为。例如通过监控广告点击数据机器学习模型可以分析用户的点击模式、点击频率、点击时间等信息。如果某个用户的点击行为与正常模式明显不符比如频繁点击广告、在短时间内产生大量点击等系统可以将这些行为标记为异常点击从而帮助广告平台识别和防范作弊行为。 生成对抗网络 在艺术领域生成对抗网络GAN是一种机器学习模型由两个神经网络组成生成器和判别器。生成器试图生成看起来像真实样本的数据而判别器试图区分生成的数据和真实数据。这种竞争促使生成器不断改进生成的数据以至于最终可以生成非常逼真的数据比如图像、音乐或文本。
二、机器学习的工作原理是什么 OR 机器学习是如何帮我们做到这些的
一图概述机器学习工作原理 #mermaid-svg-J1GakBTszAOp2fdu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-J1GakBTszAOp2fdu .error-icon{fill:#552222;}#mermaid-svg-J1GakBTszAOp2fdu .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-J1GakBTszAOp2fdu .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-J1GakBTszAOp2fdu .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-J1GakBTszAOp2fdu .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-J1GakBTszAOp2fdu .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-J1GakBTszAOp2fdu .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-J1GakBTszAOp2fdu .marker{fill:#333333;stroke:#333333;}#mermaid-svg-J1GakBTszAOp2fdu .marker.cross{stroke:#333333;}#mermaid-svg-J1GakBTszAOp2fdu svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-J1GakBTszAOp2fdu .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-J1GakBTszAOp2fdu .cluster-label text{fill:#333;}#mermaid-svg-J1GakBTszAOp2fdu .cluster-label span{color:#333;}#mermaid-svg-J1GakBTszAOp2fdu .label text,#mermaid-svg-J1GakBTszAOp2fdu span{fill:#333;color:#333;}#mermaid-svg-J1GakBTszAOp2fdu .node rect,#mermaid-svg-J1GakBTszAOp2fdu .node circle,#mermaid-svg-J1GakBTszAOp2fdu .node ellipse,#mermaid-svg-J1GakBTszAOp2fdu .node polygon,#mermaid-svg-J1GakBTszAOp2fdu .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-J1GakBTszAOp2fdu .node .label{text-align:center;}#mermaid-svg-J1GakBTszAOp2fdu .node.clickable{cursor:pointer;}#mermaid-svg-J1GakBTszAOp2fdu .arrowheadPath{fill:#333333;}#mermaid-svg-J1GakBTszAOp2fdu .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-J1GakBTszAOp2fdu .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-J1GakBTszAOp2fdu .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-J1GakBTszAOp2fdu .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-J1GakBTszAOp2fdu .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-J1GakBTszAOp2fdu .cluster text{fill:#333;}#mermaid-svg-J1GakBTszAOp2fdu .cluster span{color:#333;}#mermaid-svg-J1GakBTszAOp2fdu div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-J1GakBTszAOp2fdu :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 收集 收集 收集 收集 收集 拆分 拆分 导入 创建 选择 训练 训练 训练 训练 导入 评估 不符预期 符合预期 调优 实地调查 传感设备采集 网络爬虫 机器学习库下载 其他方式 训练数据集 训练数据集 测试数据集 数据特征选择 数据特征提取 数据特征变换 数据特征创造 特征工程 特征工程 任务 分类任务 回归任务 聚类任务 其他任务 任务 待训练数据模型 分类模型 回归模型 聚类模型 其他模型 训练后数据模型 训练后数据模型 模型评估标准 模型评估标准 分类模型标准 回归模型标准 聚类模型标准 较差模型 较好模型 一句话概括机器学习主要是将收集到的数据集导入数据模型训练通过反复的验证调优产出较为优秀的数据模型用于处理同类型的海量数据。
0.数据准备
确定我们想要解决的问题并收集与问题相关的数据方式包括
实地调查传感器数据的收集网络爬虫抓取机器学习库下载其他公开统计资源网站获取。
具体取决于我们所关注的领域和数据类型以下是常见的几种数据类型 数值型数据数值型数据是指具有数值属性的数据可以是整数或浮点数。数值型数据通常用于回归和连续值预测任务 类别型数据类别型数据是指具有离散类别的数据通常表示为标签或类别。类别型数据通常用于分类任务 顺序型数据顺序型数据是介于数值型和类别型之间的数据类型具有一定的顺序关系。例如评分等级1星、2星、3星就是一种顺序型数据 文本数据文本数据是指包含文本信息的数据通常需要进行文本处理和特征提取后才能用于机器学习任务如自然语言处理任务 图像数据图像数据是指包含图像信息的数据通常表示为像素值的矩阵。图像数据通常用于计算机视觉任务 时间序列数据时间序列数据是按时间顺序排列的数据通常用于预测未来趋势和模式。
收集完数据后要将数据整理成数据集的标准格式数据集通常以表格形式呈现其中行代表数据样本列代表特征和标签。特征的选取可以参考1.特征工程
以下是一个简单的数据集格式示例
特征1特征2…标签x1x2…y1x1x2…y2x1x2…y3…………
在这个示例中每行代表一个数据样本列代表特征和标签。特征列包括特征1、特征2等最后一列是标签。 Tips 在机器学习中数据集通常包括特征和标签。特征是描述数据的属性或特性而标签是我们要预测或分类的目标变量。一个数据集可以有多个特征但通常只有一个标签。标签通常是我们希望模型预测的结果或分类。 举个例子 假设我们有一个用于分类水果的数据集包括水果的颜色特征1和形状特征2以及水果种类标签。数据集的格式可能如下所示
颜色形状种类红色圆形苹果黄色长条形香蕉橙色圆形橙子………
在这个示例中每行代表一个水果样本包括颜色和形状作为特征以及水果种类作为标签。
1.特征工程
特征就是我们选取的数据集中数据对象的属性。例如我们选择手机的数据集那么颜色、重量、尺寸、电池容量等属性就是特征。
特征工程通常包括以下四个步骤 特征选择通过相关性分析、特征重要性评估或模型训练中的特征选择算法如Lasso回归、随机森林特征重要性等确定哪些特征对模型预测最为重要选择与目标变量高度相关的特征进行建模 特征提取对于文本数据可以使用词袋模型、TF-IDF等方法从文本中提取特征对于图像数据可以使用卷积神经网络CNN提取图像特征对于时间序列数据可以提取统计特征如均值、方差等 特征变换对特征进行标准化、归一化、对数变换等操作以改善特征的分布情况使其更适合模型使用。例如对数变换可以用来处理偏态分布的特征 特征创造通过特征组合、交叉特征、聚合特征等操作创建新的特征以提供更多信息帮助模型预测。例如可以将年龄和收入两个特征进行组合创建一个新的特征表示“财富指数”。
2.模型选择
通常在选择数据模型的时候会根据实际的任务类型来做选择而任务类型大致分为以下三种 Classification分类 工作原理模型学习特征与离散类别之间的关系以便对新数据进行分类实例在垃圾邮件过滤中模型可以根据邮件的特征如文本内容、发件人等将邮件分类为“垃圾邮件”或“非垃圾邮件”。 Regression回归 工作原理模型学习特征与连续目标变量之间的关系以便对新数据进行预测实例在房价预测中模型可以根据房屋的特征如面积、地理位置等预测房价的连续值。 Clustering聚类 工作原理模型通过发现数据中的相似性和模式将数据分为具有相似特征的簇而无需事先知道类别标签实例在客户细分中模型可以根据客户的特征如购买行为、偏好等将客户分为不同的群组。 Tips Q1.如何理解“回归” A“回归”一词最初是由弗朗西斯·高尔顿Francis Galton在19世纪提出的他用它来描述父母与子女身高之间的关系。在这个背景下“回归”一词指的是子女身高“回归”到平均值即子女身高更接近于总体平均身高。后来这个术语被引入到统计学中用于描述变量之间的关系特别是用于预测连续值输出的情况。虽然“回归”这个词听起来似乎与“预测”不太相关但在统计学和机器学习中它已经成为了描述这种类型任务的标准术语。 Q2.分类和聚类的区别 A 分类Classification分类是一种监督学习任务旨在将数据分为不同的类别或标签。在分类中模型学习特征与离散类别之间的关系用于对新数据进行分类预测。分类任务需要有已知的类别标签作为监督信息。聚类Clustering聚类是一种无监督学习任务旨在将数据分组为具有相似特征的簇。在聚类中模型通过发现数据中的相似性和模式将数据分为不同的簇而无需事先知道类别标签。聚类任务通常用于发现数据中的隐藏结构和模式。 根据任务类型的不同机器学习中常用的数据模型和对应的应用场景包括
分类模型
逻辑回归模型 应用场景二分类问题如垃圾邮件识别、客户流失预测等。 支持向量机SVM模型 应用场景分类和回归任务适用于图像分类、文本分类、异常检测等。 决策树模型 应用场景分类和回归任务可用于客户细分、疾病诊断等。 随机森林模型 应用场景分类和回归任务适用于预测销售额、客户满意度等。
回归模型
线性回归模型 应用场景房价预测、销售预测、股票价格预测等需要预测连续值输出的任务。
聚类模型
K均值聚类模型 应用场景客户细分、异常检测、图像分割等无监督学习任务。 层次聚类模型 同上。
其他模型
神经网络模型 应用场景图像识别、语音识别、自然语言处理等复杂任务。 生成对抗网络GAN模型 应用场景图像生成、风格转换、文本生成等创造性任务。
这些数据模型在不同的应用场景中发挥着重要作用根据任务需求选择合适的模型可以提高机器学习系统的性能和效果。
3.模型训练 Tips Q1.何为模型训练A先说数据导入在代码层面来看就是将数据集合作为参数传给python代码中调用的机器学习库函数数据模型。而“训练”则是让函数数据模型学习关联数据集中“特征”与“标签”的关系最终实现“通过特征预测标签”的目的。 举个例子我们将分类水果的数据集导入分类数据模型让其学习水果的“颜色、形状”与“种类”的关系从而实现“我们输入颜色和形状数据模型预测出可能的水果种类”。 在实际操作中模型训练涉及以下关键步骤 定义损失函数选择适当的损失函数用于衡量模型预测值与实际值之间的差异。 选择优化算法选择合适的优化算法如梯度下降、Adam等用于调整模型参数以最小化损失函数。 模型训练通过将训练数据输入模型利用优化算法不断调整模型参数使模型能够最好地拟合训练数据。
通常我们会在模型训练模型评估之后如果模型评估结果并不符合预期则会进行参数调优也就是上述步骤中的1和2。
步骤1和2具体操作可以参看[补链接]
另外模型训练学习通常分为两种有监督学习和无监督学习区别如下 有监督学习分类、回归 使用有标记的训练数据输入特征和对应的标签来训练模型。目标是学习如何将输入映射到输出以便模型能够预测新的未标记数据的标签。常见任务包括分类和回归。 无监督学习聚类 使用没有标签的训练数据模型需要在不需要预先知道输出的情况下发现数据中的模式和结构。目标是发现数据的内在结构或者进行数据的降维、聚类、异常检测等任务。常见任务包括聚类、降维、密度估计、异常检测等。
总的来说有监督学习需要已知的标签来指导模型训练而无监督学习则是在没有标签的情况下对数据进行建模和分析。
4.模型评估
完成模型训练之后需要对训练好的数据模型进行评估来判断其是好是坏这就需要一定的评估标准/指标当评估不同类型的机器学习模型时我们关注的指标和方法会有所不同 分类模型 评估指标准确性、精确度、召回率、F1分数、ROC曲线和AUC值等。评估方法通过比较模型预测结果与实际标签评估模型的性能选择适当的指标来衡量模型的分类效果。 回归模型 评估指标均方误差MSE、均方根误差RMSE、平均绝对误差MAE、决定系数R²等。评估方法关注模型预测值与实际值之间的差异选择适当的指标来衡量模型的预测准确程度。 聚类模型 评估指标轮廓系数、DB指数、互信息、调整兰德指数等。评估方法关注模型对数据的分组效果选择适当的指标来衡量模型对数据分组的效果。
这些评估指标和方法有助于我们了解不同类型模型的性能以便选择最适合特定任务的模型。 注意 对于机器学习模型而言我们更多地关注其准确性、鲁棒性和泛化能力而不是简单地将其划分为“好”或“坏”。评判一个模型的性能需要综合考量多个指标以便更全面地了解其在特定任务中的表现。因此我们更多地关注模型的准确性和可靠性而不是简单地将其归为“好”或“坏”。 Tips Q1.机器学习中对于有监督学习模型评估的标准是根据数据集中的标签来验证的那对于无监督学习模型评估又该如何做呢A: 在无监督学习中由于数据集没有标签信息可供使用评估模型的性能通常更加主观和复杂需要结合多个评估指标和领域知识来判断模型的有效性。以下是一些常用的评估方法 聚类算法评估对于聚类算法可以使用内部评估指标如轮廓系数、DB指数或外部评估指标如兰德指数、互信息分数来评估聚类的质量。降维算法评估对于降维算法可以通过可视化降维后的数据来检查数据的结构和类别之间的分离程度。密度估计算法评估对于密度估计算法可以使用一些统计指标如KL散度来评估概率分布的拟合程度。异常检测算法评估对于异常检测算法可以根据异常得分或者真实标签如果有来评估算法的性能。可视化和直觉在无监督学习中可视化数据并依靠直觉来评估模型的性能也是常见的方法。 三、机器学习入门实操
仅以简单的分类模型进行有监督学习实操。
0.环境准备
# 安装python3
# 自行搜索安装教程我这里使用的是python3# 安装pip3
python3 -m ensurepip --upgrade# 安装机器学习常用库
pip3 install scikit-learn
pip3 install numpy
pip3 install pandas1.数据集准备
为了方便演示这里我们选择使用机器学习中最经典的鸢尾花数据集为例实操一下机器学习全流程在实际应用中通常需要使用者自己收集数据特征提取。
2.编写python脚本
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 1.加载数据集使用scikit-learn库加载鸢尾花数据集
iris load_iris()
X iris.data # 特征数据
y iris.target # 目标标签# 2.1 数据预处理对数据进行标准化/归一化
# 其主要目的是将数据特征缩放到均值为0方差为1的标准正态分布以确保各个特征具有相同的尺度。这有助于模型更好地学习数据特征提高模型的性能和收敛速度。
scaler StandardScaler()
X_scaled scaler.fit_transform(X)## 也可以选择使用归一化函数进行预处理这里暂时注释掉有兴趣的可以解开注释使用
## 其主要目的是将数据特征缩放到一个指定的范围通常是[0, 1]或[-1, 1]之间。通过归一化处理可以消除不同特征之间的量纲差异使得数据具有统一的尺度有利于模型的训练和收敛提高模型的性能和泛化能力。
#scaler MinMaxScaler()
#X_normalized scaler.fit_transform(X)# 2.2 数据预处理划分训练集和测试集等预处理操作
# 参数说明
# - test_size划分比例0.2 代表80%的数据用于训练20%的数据用于测试
# - random_state随机种子使用random_state参数的作用是确保每次划分的结果是固定的从而保持训练集和测试集的一致性
# -- 设置random_state参数的值为42实际上是一种惯例而非必须。数字42在计算机科学和幽默文化中被广泛使用源自道格拉斯·亚当斯Douglas Adams的科幻小说《银河系漫游指南》The Hitchhikers Guide to the Galaxy其中被描述为“生命、宇宙以及一切的答案”。
# -- 因此将random_state参数设置为42通常被视为一种传统一种有趣的选择。这并不会影响实际的随机性或模型的性能但可以使代码更具有趣味性和易记性。您可以选择任何整数值作为random_state参数只要保持一致性即可。
X_train, X_test, y_train, y_test train_test_split(X_scaled, y, test_size0.2, random_state42)## 也可以选择使用归一化预处理后的数据集这里暂时注释掉有兴趣的可以解开注释使用
#X_train, X_test, y_train, y_test train_test_split(X_normalized, y, test_size0.2, random_state42)# 3.模型选择模型训练
# 基于鸢尾花数据集属于分类数据可以选择适合的分类模型如逻辑回归、决策树等
# 这里我们以逻辑回归数据模型为例model LogisticRegression()
model.fit(X_train, y_train)# 4.模型预测
y_pred model.predict(X_test)# 5.结果评估
accuracy accuracy_score(y_test, y_pred)
print(Accuracy:, accuracy)
3.执行脚本
# xxx改成你的脚本名
python3 xxx.py
# 结果输出Accuracy: 1.0
# 以小数格式展示准确率1.0 代表 100%因为我们使用的是简单的数据集所以对于逻辑回归模型来说准确率非常高实际应用中一般不会出现100%的准确率。
4.调参优化
由于实操例子过于简单不需要调优所以这里暂时不做参数调优的操作演示后续再出一篇关于针对数据模型参数调优的文章。
5.保存模型
将下面代码添加到你的脚本中
# joblib库是一个用于在Python中进行序列化保存和反序列化加载对象的工具。其主要作用包括
# 1. **对象持久化**joblib库可以将Python对象如模型、数据、变量等保存到磁盘上以便稍后重新加载和使用。
# 2. **模型保存**在机器学习中可以使用joblib保存训练好的模型以便在实际应用中进行预测和推断。
# 3. **数据缓存**对于计算开销较大的数据处理过程可以使用joblib缓存中间结果避免重复计算提高效率。
# 4. **跨平台兼容**joblib库提供了跨平台的对象序列化和反序列化功能使得在不同环境中共享和重用对象更加方便。
#总的来说joblib库是一个方便的工具用于在Python中保存和加载对象特别适用于机器学乨中模型的保存和数据处理过程中的中间结果缓存。import joblib
# 参数说明
# 1. model数据模型
# 2. local_file_path本地文件路径
local_file_path data.pkl
joblib.dump(model, local_file_path)6.复用保存的数据模型
如果想要使用保存的数据模型可以在脚本中添加下面代码
from sklearn.metrics import accuracy_score
import joblib# 加载保存的模型文件
model joblib.load(data.pkl)# 使用加载的模型进行预测
predictions model.predict(X_test)# 评估预测结果
accuracy accuracy_score(y_test, y_pred)
print(Accuracy:, accuracy)
这些步骤可以帮助您进行机器学习实践从加载数据集到训练模型并评估性能。通过实际操作您可以更好地理解机器学习的流程和应用。
四、寄语
通过学习本文您已经了解了机器学习的基本概念、应用场景以及实际操作流程。本文旨在带领0基础的读者迈出机器学习的第一步尝试了解数据准备、特征工程、模型选择、训练和评估的基本流程。
然而机器学习的核心更在于深入学习算法、模型和调优思路。未来的学习之路还很长更多精彩的内容等待您去探索。鼓励读者持续深入学习研究不断挑战自己探索机器学习领域更为重要和核心的部分提升自己的技能和认知水平。