【机器学习】初学者经典案例(随记)

news2025/4/21 21:08:46

🎈边走、边悟🎈迟早会好

一、概念

机器学习是一种利用数据来改进模型性能的计算方法,属于人工智能的一个分支。它旨在让计算机系统通过经验自动改进,而不需要明确编程。

类型

  1. 监督学习:使用带标签的数据进行训练,包括分类(如垃圾邮件检测)和回归(如房价预测)。
  2. 无监督学习:使用不带标签的数据进行训练,包括聚类(如客户细分)和降维(如主成分分析)。
  3. 强化学习:通过与环境的交互学习策略,以最大化累积奖励(如AlphaGo)。

二、 常见算法

2.1监督学习算法
  • 线性回归:用于回归任务,假设目标变量与输入特征之间存在线性关系。
  • 逻辑回归:用于二分类任务,输出一个介于0和1之间的概率。
  • 决策树:树状结构的模型,易于理解和解释。
  • 支持向量机(SVM):寻找能够最大化类间间隔的决策边界。
  • K近邻(KNN):基于距离度量的简单算法,预测时考虑最近的K个邻居。
  • 朴素贝叶斯:基于贝叶斯定理的分类算法,假设特征之间条件独立。
2.2无监督学习算法
  • K均值聚类:将数据分成K个簇,使得簇内数据的相似度最大。
  • 层次聚类:构建一个层次结构的聚类树,逐步合并或分割簇。
  • 主成分分析(PCA):将高维数据投影到低维空间,保留数据的主要变异信息。
  • 独立成分分析(ICA):类似于PCA,但假设数据成分相互独立。
2.3强化学习算法
  • Q学习:基于状态-动作对的值函数,通过Q值迭代更新策略。
  • 深度Q网络(DQN):结合深度学习的Q学习算法,用神经网络近似Q值。
  • 策略梯度方法:直接优化策略,使得期望奖励最大化。

三.、模型评估

评估指标
分类:

  • 准确率:正确预测的样本数占总样本数的比例。
  • 精确率:预测为正类的样本中实际为正类的比例。
  • 召回率:实际为正类的样本中被正确预测为正类的比例。
  • F1分数:精确率和召回率的调和平均数。
  • 混淆矩阵:总结预测结果的矩阵,显示真阳性、假阳性、真阴性和假阴性。

回归:

  • 均方误差(MSE):预测值与真实值之差的平方和的平均数。
  • 均方根误差(RMSE):MSE的平方根。
  • 平均绝对误差(MAE):预测值与真实值之差的绝对值的平均数。
  • R²:解释回归模型对数据变异的比例。

交叉验证
通过将数据集划分为若干子集,反复进行训练和验证,以评估模型的性能稳定性和泛化能力。

四、 优化技术

4.1 超参数优化
  • 网格搜索:对所有可能的参数组合进行穷举搜索,找到最佳参数组合。
  • 随机搜索:随机选择参数组合进行搜索,相对高效。
  • 贝叶斯优化:利用贝叶斯推理逐步优化参数选择过程。
4.2 正则化

通过在损失函数中添加正则项,防止过拟合:

  • L1正则化:加入参数的绝对值和(Lasso回归)。
  • L2正则化:加入参数的平方和(Ridge回归)。
4.3 特征选择

选择对模型性能影响较大的特征,去除冗余或相关性高的特征。

五、 常见问题及解决方法

5.1 过拟合与欠拟合
  • 过拟合:模型在训练集上表现良好,但在测试集上表现差。解决方法包括增加数据量、正则化、使用更简单的模型等。
  • 欠拟合:模型在训练集上和测试集上都表现不佳。解决方法包括增加模型复杂度、添加更多特征等。
5.2 数据不平衡

当某一类样本数量远多于其他类时,模型可能偏向于预测多数类。解决方法包括重采样、调整分类阈值、使用加权损失函数等。

 六、入门经典案例

1. 鸢尾花数据集分类(Iris Dataset Classification)
背景

        鸢尾花数据集是机器学习领域中非常经典的数据集,由英国统计学家和生物学家Fisher在1936年提出。该数据集包含150个样本,每个样本有4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。目标是根据这些特征将鸢尾花分为三类:山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)。

过程
  1. 数据预处理:加载数据并进行基本的清洗和探索性数据分析(EDA)。
  2. 特征选择:选择合适的特征来进行分类。
  3. 数据划分:将数据集分为训练集和测试集,一般采用80/20或70/30的比例。
  4. 模型选择:选择合适的分类算法,如K近邻(KNN)、支持向量机(SVM)、决策树(Decision Tree)等。
  5. 模型训练:在训练集上训练模型。
  6. 模型评估:在测试集上评估模型的性能,常用的评估指标包括准确率、混淆矩阵、F1分数等。
  7. 模型优化:根据评估结果进行参数调优或选择其他模型。
详解
# 示例代码(以KNN为例)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 模型训练
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# 模型预测
y_pred = knn.predict(X_test)

# 模型评估
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))
2. 房价预测(Housing Price Prediction)
背景

房价预测是回归问题的经典案例之一,通常使用波士顿房价数据集。该数据集包含506个数据点,每个数据点有13个特征(如房间数量、房龄、犯罪率等),目标是预测房屋的中位数价格。

过程
  1. 数据预处理:加载数据,处理缺失值和异常值,进行EDA。
  2. 特征工程:选择重要特征,并进行特征缩放。
  3. 数据划分:将数据集分为训练集和测试集。
  4. 模型选择:选择回归模型,如线性回归(Linear Regression)、随机森林回归(Random Forest Regression)等。
  5. 模型训练:在训练集上训练模型。
  6. 模型评估:在测试集上评估模型性能,常用评估指标包括均方误差(MSE)、均方根误差(RMSE)等。
  7. 模型优化:根据评估结果进行参数调优或选择其他模型。
详解
# 示例代码(以线性回归为例)
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

# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 模型训练
lr = LinearRegression()
lr.fit(X_train, y_train)

# 模型预测
y_pred = lr.predict(X_test)

# 模型评估
mse = mean_squared_error(y_test, y_pred)
rmse = mse ** 0.5
print("MSE:", mse)
print("RMSE:", rmse)
3. 手写数字识别(Digit Recognition)
背景

手写数字识别是计算机视觉中的经典问题,通常使用MNIST数据集。该数据集包含60000个训练样本和10000个测试样本,每个样本是28x28像素的灰度图像,代表手写的数字0-9。

过程
  1. 数据预处理:加载数据,并进行基本的图像处理。
  2. 特征工程:将图像数据展平或进行特征提取。
  3. 数据划分:将数据集分为训练集和测试集。
  4. 模型选择:选择分类模型,如卷积神经网络(CNN)、支持向量机(SVM)等。
  5. 模型训练:在训练集上训练模型。
  6. 模型评估:在测试集上评估模型性能,常用评估指标包括准确率、混淆矩阵等。
  7. 模型优化:根据评估结果进行参数调优或选择其他模型。
详解
# 示例代码(以简单的多层感知机为例)
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.utils import to_categorical

# 加载数据
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# 数据预处理
X_train = X_train.reshape(-1, 28*28).astype('float32') / 255.0
X_test = X_test.reshape(-1, 28*28).astype('float32') / 255.0
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# 构建模型
model = Sequential([
    Flatten(input_shape=(28*28,)),
    Dense(128, activation='relu'),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print("Loss:", loss)
print("Accuracy:", accuracy)

 🌟感谢支持 听忆.-CSDN博客

🎈众口难调🎈从心就好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1917276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

慢性肾脏病-MR+转录组文献

Identification of novel therapeutic targets for chronic kidney disease and kidney function by integrating multi-omics proteome with transcriptome - PMC (nih.gov) 数据和材料 Our pQTL summary data were acquired from previously published studies and can be f…

const7配置静态网络连接

cd /etc/sysconfig/network-scripts/ //进入到network-scripts目录下 vi ifcfg-ens32 //编辑配置文件 修改文件内容 ps:因为我这里是NAT模式下的网络 子网掩码和网关就使用这里默认的 ip设置请取除子网ip 192.168.149.0 和网关192.168.149.2之外的&#xff08…

AI普及时代即将来临,我们如何提升自我竞争力?

自ChatGPT发布以来,形形色色的AI工具形同雨后春笋,令人眼花缭乱,不知所措。 许多听说过AI的人,或者使用过AI工具,如 文心一言,通义千问,ChatGPT等等也只会提一些简单的问题。那么,面…

Linux的tmp目录占用空间100%问题分析和解决

一、背景 系统运行期间,客户突然反馈上传文档传不上去。研发立马排查日志,发现日志中出现大量的“No space avaliable on disk”,下意识应用服务器磁盘满了,赶快连上服务器查看磁盘空间占用情况: 黑人问号脸&#xff…

LLM-文本分块(langchain)与向量化(阿里云DashVector)存储,嵌入LLM实践

文章目录 前言向量、令牌、嵌入分块按字符拆分按字符递归拆分按token拆分 向量化使用 TextEmbedding 实现语义搜索数据准备通过 DashScope 生成 Embedding 向量通过 DashVector 构建检索:向量入库语义检索:向量查询完整代码 总结 前言 Transformer 架构…

前端使用Vue和Element实现可拖动弹框效果,且不影响底层元素操作,Cesium作为底图(可拖拽的视频实时播放弹框,底层元素可以正常操作)

简述:在前端开发中,弹框和实时视频播放是常见的需求。这里来简单记录一下,如何使用Vue.js和Element UI实现一个可拖动的弹框,并在其中播放实时视频。同时,确保在拖拽弹框时,底层元素仍然可以操作。这里来记…

常用知识碎片 分页组件的使用(arco-design组件库)

目录 分页组件使用 API 组件代码示例 使用思路: 前端示例代码 html script 后端示例代码 Controller Impl xml 总结 分页组件使用 使用Arco Design之前需要配置好搭建前端环境可以看我另外一篇文章: 手把手教你 创建Vue项目并引入Arco Desi…

【JavaWeb程序设计】Servlet(二)

目录 一、改进上一篇博客Servlet(一)的第一题 1. 运行截图 2. 建表 3. 实体类 4. JSP页面 4.1 login.jsp 4.2 loginSuccess.jsp 4.3 loginFail.jsp 5. mybatis-config.xml 6. 工具类:创建SqlSessionFactory实例,进行 My…

十八.升职加薪系列-JVM垃圾回收器-开天辟地的ZGC

前言 随着Java的发展,JVM的GC垃圾回收器也在跟着升级,从早起的单线程垃圾回收器Serial,到多线程的垃圾回收器Parallel Scavenge,再到并发垃圾回收器CMS,G1等。它们在某些对延迟要求比较高的系统来说都有些力不从心,比如&#xff…

物联网系统中市电电量计量方案(一)

为什么要进行电量计量? 节约资源:电量计量可以帮助人们控制用电量,从而达到节约资源的目的。在当前严峻的资源供应形势下,节约能源是我们应该重视的问题。合理计费:电表可以帮助公共事业单位进行合理计费,…

R包:‘ggcharts好看线图包‘

介绍 ggcharts提供了一个高级{ggplot2}接口,用于创建通用图表。它的目标既简单又雄心勃勃:让您更快地从数据可视化的想法到实际的绘图。所以如何?通过处理大量的数据预处理,为您模糊{ggplot2}细节和绘图样式。生成的图是ggplot对象,可以使用…

物联网系统中市电电量计量方案(二)

上文我们主要介绍了电量计量中最重要的组成部分——电量计量芯片(如果没有阅读该文章的,可以点击这里)。本文会再为大家介绍电量计量的另外一个组成部分——电流互感器。 电流互感器的定义 电流互感器是一种可将一次侧大电流转换为二次侧小电…

Sentinel-1 Level 1数据处理的详细算法定义(三)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程,以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。 今天介绍的内容如下&…

室内精准定位哪个产品抗干扰能力强?可以用于哪些方面?

室内精准定位产品其实有很多,其实它是安装在室内接收型号的一个基站,并且范围有一定的限制,而被定位的人员需要携带定位产品,那么通过室内基站收集到的信息,将会通过专业的系统处理后呈现在相应的设备上,比…

Linux下常见压缩文件tar.xz、tar.bz2、tar.gz的区别和详解

文章目录 tar.xz tar.bz2 tar.gz 的区别三种文件的解压方式tar.xz的解压三种压缩文件的创建方式 tar.xz tar.bz2 tar.gz 的区别 这三个文件扩展名都表示压缩后的档案文件,但它们使用不同的压缩算法。 tar.xz: tar 代表 Tape Archive,它是一种将多个文件…

f_mkfs格式化最小分区数是191

使用fatfs的f_mkfs最小分区数是191原因: 在挂载ram_disk时参考的文章有提到: “然后是GET_SECTOR_COUNT 用于f_mkfs格式化时获取可用的sector的数量,32bit-LBA的情况下至少为191” 自己也实际试过确实要不少于191,网上也没找到相…

WMS系统的模块构成

WMS系统的模块构成通常包括以下几个主要部分: ———————————————————————————————— 1、库存管理: 主要负责管理仓库内的库存信息,包括库存记录、库存调整、库存盘点等功能。 2、入库管理: 负责处…

samba共享windows和ubuntu的文件

通过Samba服务器实现Windows与Ubuntu之间的文件共享是一个常见的需求,下面是实现这一目标的详细步骤: 一、Ubuntu开启Samba服务器 安装Samba: 打开终端,使用以下命令安装Samba服务: sudo apt update sudo apt install…

html js 3d z轴移动 实现星空

用chatgpt还有kimi 让实现动画效果的星空,都太垃圾了 不是y轴移动,就是x轴移动, 我要z轴移动,他们就是搞不出来, ai写代码还有很长的路。 <!DOCTYPE html> <meta charset="utf-8" /> <head> <title>ai相关博客</title> </h…

同享人力资源管理系统-TXEHR V15 DownloadTemplate 文件读取漏洞复现

0x01 产品简介 同享人力资源管理系统(TXEHR V15)是一款专为现代企业设计的人力资源管理软件解决方案,旨在通过先进的信息化手段提升企业人力资源管理的效率与水平。该系统集成了组织人事、考勤管理、薪资核算、招聘配置、培训发展、绩效管理等核心模块,并提供了灵活的配置…