当前位置: 首页 > news >正文

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

🎈边走、边悟🎈迟早会好

一、概念

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

类型

  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博客

🎈众口难调🎈从心就好

相关文章:

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

🎈边走、边悟🎈迟早会好 一、概念 机器学习是一种利用数据来改进模型性能的计算方法,属于人工智能的一个分支。它旨在让计算机系统通过经验自动改进,而不需要明确编程。 类型 监督学习:使用带标签的数据进行训练&…...

进阶版智能家居系统Demo[C#]:整合AI和自动化

引言 在基础智能家居系统的基础上,我们将引入更多高级功能,包括AI驱动的自动化控制、数据分析和预测。这些进阶功能将使智能家居系统更加智能和高效。 目录 高级智能家居功能概述使用C#和AI实现智能家居自动化实现智能照明系统的高级功能 自动调节亮度…...

IC后端设计中的shrink系数设置方法

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 在一些成熟的工艺节点通过shrink的方式(光照过程中缩小特征尺寸比例)得到了半节点,比如40nm从45nm shrink得到,28nm从32nm shrink得到,由于半节点的性能更优异,成本又低,漏电等不利因素也可以…...

在NVIDIA Jetson平台离线部署大模型

在NVIDIA Jetson平台离线部署大模型,开启离线具身智能新纪元。 本项目提供一种将LMDeploy移植到NVIDIA Jetson系列边缘计算卡的方法,并在Jetson计算卡上运行InternLM系列大模型,为离线具身智能提供可能。 最新新闻🎉 [2024/3/1…...

51单片机嵌入式开发:8、 STC89C52RC 操作LCD1602原理

STC89C52RC 操作LCD1602原理 1 LCD1602概述1.1 LCD1602介绍1.2 LCD1602引脚说明1.3 LCD1602指令介绍 2 LCD1602外围电路2.1 LCD1602接线方法2.2 LCD1602电路原理 3 LCD1602软件操作3.1 LCD1602显示3.2 LCD1602 protues仿真 4 总结 1 LCD1602概述 1.1 LCD1602介绍 LCD1602是一种…...

数字化时代的供应链管理综合解决方案

目录 引言背景与意义供应链管理综合解决方案的目标 📄供应链管理系统主要功能系统优势 📄物流管理系统主要功能系统优势 📄订单管理系统主要功能应用场景 📄仓储管理系统系统亮点主要功能系统优势 📄商城管理系统主要功…...

CentOS 安装 annie/lux,以及 annie/lux 的使用

annie 介绍 如果第一次听到 annie 想必都会觉得陌生,annie 被大家称为视频下载神器,annie 作者介绍说可以下载抖音、哔哩哔哩、优酷、爱奇艺、芒果TV、YouTube、Tumblr、Vimeo 等平台的视频。 githup:https://github.com/pingf/annie 支持…...

拥抱UniHttp,规范Http接口对接之旅

前言 如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口, 那么你项目一定充斥着大量的对接逻辑和代码, 并且针对不同的对接渠道方需要每次封装一次调用的简化, 一旦封装不好系统将会变得难以维护&am…...

Python 给存入 Redis 的键值对设置过期时间

Redis 是一种内存中的数据存储系统,与许多传统数据库相比,它具有一些优势,其中之一就是可以设置数据的过期时间。通过 Redis 的过期时间设置,可以为存储在 Redis 中的数据设置一个特定的生存时间。一旦数据到达过期时间&#xff0…...

在linux中安装docker

文章目录 1、安装依赖2、安装docker的下载源3、安装docker4、设置Docker服务开机自启 1、安装依赖 sudo yum install -y yum-utils2、安装docker的下载源 sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repohttps://download.do…...

【JVM-04】线上CPU100%

【JVM-04】线上CPU100% 1. 如何排查2. 再举一个例子 1. 如何排查 ⼀般CPU100%疯狂GC,都是死循环的锅,那怎么排查呢?先进服务器,⽤top -c 命令找出当前进程的运⾏列表按⼀下 P 可以按照CPU使⽤率进⾏排序显示Java进程 PID 为 2609…...

try catch 解决大问题

项目开发中遇到一个棘手的bug,react前端项目独自运行时一切正常,但是把项目集成到使用wujie的大平台微前端项目中之后,突然有个地方无故报错,导致程序运行停止,后续的方法不再执行。报错如下: DOMExceptio…...

手动解析Collection

即将被解析的json {"collection": {"templates": [{"data": [{"name": "plantCode","value": "MSHG_KFXHS02"}, {"name": "details","value": [{"plantMedicament…...

list模拟实现【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间类的成员变量为什么节点类是用struct而不是class呢?为什么要写get_head_node? 迭代器迭代器在list类里的实例化和重命名普通迭代器operator->()的作用是什么? const迭代器反向迭…...

nginx正向代理、反向代理、负载均衡

nginx.conf nginx首要处理静态页面 反向代理 动态请求 全局模块 work processes 1; 设置成服务器内核数的两倍(一般不不超过8个超过8个反而会降低性能一般4个 1-2个也可以) netstat -antp | grep 80 查端口号 *1、events块:* 配置影响ngi…...

matlab 有倾斜的椭圆函数图像绘制

matlab 有倾斜的椭圆函数图像绘制 有倾斜的椭圆函数图像绘制xy交叉项引入斜线负向斜线成分正向斜线成分 x^2 y^2 xy 1 (负向)绘制结果 x^2 y^2 - xy 1 (正向)绘制结果 有倾斜的椭圆函数图像绘制 为了确定椭圆的长轴和短轴的…...

PTK是如何加密WLAN单播数据帧的?

1. References WLAN 4-Way Handshake如何生成PTK?-CSDN博客 2. 概述 在Wi-Fi网络中,单播、组播和广播帧的加密算法是由AP决定的。其中单播帧的加密使用PTK密钥,其PTK的密钥结构如下图所示: PTK的组成如上图所示,由K…...

Django之登录权限系统

本文参考链接django之auth模块(用户认证) - chchcharlie、 - 博客园 (cnblogs.com) 执行完迁移命令,会自动生成admin表,迁移命令如下: python manage.py makemigrations python manage.py migrate 相关模块 from django.contrib …...

rust way step 1

install rust CARGO_HOME D:\rust\.cargo RUSTUP_HOME D:\rust\.rustup [dependencies] ferris-says "0.2" vscode 安装rust 插件 use ferris_says::say; // from the previous step use std::io::{stdout, BufWriter};fn main() {let stdout stdout();let m…...

视觉语言模型导论:这篇论文能成为你进军VLM的第一步

近些年,语言建模领域进展非凡。Llama 或 ChatGPT 等许多大型语言模型(LLM)有能力解决多种不同的任务,它们也正在成为越来越常用的工具。 这些模型之前基本都局限于文本输入,但现在也正在具备处理视觉输入的能力。如果…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...