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

sklearn学习

介绍:scaler:换算的意思

1. 归一化MinMaxScaler()

归一化的意思是将一堆数,如果比较离散,为了让数据更适合模型训练,将离散的数据压缩到0到1之间,以方便模型更高效优质的学习,而对数据的预处理

例如:[-100,3,50,800,10900]在这组数据中最小的是-100,最大是10900,这样的数太分散,如果压缩到0到1,则更方便神经网络学习

压缩数据的公式:

  • x 是原始特征值。
  • min( x ) 是特征的最⼩值。
  • max( x ) 是特征的最⼤值。
  • x' 是缩放后的特征值。
使用numpy对数据进行压缩:
import numpy as npdata = np.array([[11, 3, -10], [21, -30, 1], [100, 3, 12]])
maxitem = np.max(data, axis=0)
minitem = np.min(data, axis=0)
print(maxitem, minitem)
rangeitem = maxitem - minitemrangeitem[rangeitem == 0] = 1
result = (data-minitem)/rangeitem
print(result)   

解释:

        这个是使用numpy对数据进行压缩,使用以上的公式

        这里rangeitem[rangeitem == 0] = 1的解释:

rangeitem == 0会得到一个bool类型的数组[False False False],这样就构成了布尔索引,当为true也就是max和min相同时,为了确保分母不为0,则将其分母变为1

用sklearn来归一化:

import numpy as np
from sklearn.preprocessing import MinMaxScaler
print("方式一")
data = np.array([[11, 3, -10], [21, -30, 1], [100, 3, 12]])
scaler = MinMaxScaler()
scaler.fit(data)
print(scaler.data_min_,scaler.data_max_)
result1 = scaler.transform(data)
print(result1)
print("方式二")
#将data数组归一化,先调用构造函数创造归一化对象,然后使用fit合适求出min和max,再使用transform将使用min和max对数据进行归一化
result2 = MinMaxScaler().fit_transform(data)
print(result2)

解释:MinMaxScaler()是使用构造方法创建一个归一化器scaler

scaler.fit(数据)是对数据进行计算出最大最小特征值,scaler.transfrom(数据)是对数据使用最大最小值进行计算得出归一化的结果。

也可以简写:MinMaxScaler().fit_transform(data)

2. 标准化StandardScaler

就是将一堆数据,压缩为一个服从正太分布的数据,以方便后期神经网络学习,也就是对数据进行预处理

话不多说上代码:

from sklearn.preprocessing import StandardScalerdata = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
print("方式一")
scaler = StandardScaler()
scaler.fit(data)
#获取均值和方差
print(scaler.mean_,scaler.var_)
#使用均值和方差对data数据进行标准化处理
result = scaler.transform(data)print(result)
#将标准化的结果反向求出原始数据
inv_res = scaler.inverse_transform(result)
print(inv_res)print("方式二")
scaler1 = StandardScaler()
result1 = scaler1.fit_transform(data)
inv_res1 = scaler1.inverse_transform(result1)
print(inv_res1)

解释:StandardScaler()是获取标准化器对象scaler,有属性mean_均值,和var_方差

scaler.fit_transform(数据)意思是对数据进行标准化处理

scaler1.inverse_transform(result1)意思是对标准化后的数据进行反向求出原始数据

3. 缺失值处理SimpleImputer

这个SimpleImputer不是在sklearn.preprocessing包下的,而是sklearn.impute包下的

机器学习或数据挖掘中,常常会有重要的字段缺失值很多,但⼜不能舍弃字段的情况。因此,数据
预处理中⾮常重要的⼀项就是处理缺失值。
from sklearn.impute import SimpleImputer
import pandas as pd
df = pd.read_csv("titanic_train.csv")
age = df.loc[:,"Age"].values.reshape(-1,1)
print(age[:20])
print("===================")
age_median = SimpleImputer(strategy="median").fit_transform(age)
print(age_median[:20])
df.loc[:,"Age"]=age_median

解释,用panda读取csv数据,然后使用df.loc标签索引,0轴索引全部,1轴索引标签为Age的,让后使用.values将pandas结果的数据age列转化为np的数组,然后reshape变为以列为主的二维数据

SimpleImputer()是缺失值补全工具对象创建方法,然后照样使用.fit_transform(age)对age列进行缺失值补全,至于按照什么模式填补,则看SimpleImputer中传的strategy的参数,有平均值,中值填补等

4. Sklearn 中的三种编码工具详解

4.1 LabelEncoder

功能:将单一特征的分类数据转换为整数形式。

  • 每个类别映射到一个唯一的整数。
  • 适用于单个特征(一维数据)。

特点

  • 不生成额外的列。
  • 不适合处理无序的分类数据,因为整数编码可能引入错误的顺序关系。

工作原理:

from sklearn.preprocessing import LabelEncoderdata = ['red', 'green', 'blue', 'green']
encoder = LabelEncoder()
encoded = encoder.fit_transform(data)
print(encoded)
# 输出: [2, 1, 0, 1]

映射关系为:

blue -> 0
green -> 1
red -> 2

4.2 OrdinalEncoder

功能:将二维数据中的多个特征的类别映射为整数值。

  • 每个类别映射到一个唯一的整数值。
  • 适用于具有顺序关系的类别数据(如“低、中、高”)。

特点

  • 用于多特征
  • 如果类别之间无顺序关系,使用此方法可能导致模型误解类别之间的关系。

工作原理

from sklearn.preprocessing import OrdinalEncoderdata = [['low'], ['medium'], ['high'], ['medium']]
encoder = OrdinalEncoder()
encoded = encoder.fit_transform(data)
print(encoded)
# 输出: [[1.], [2.], [0.], [2.]]

映射关系为:

high -> 0
low -> 1
medium -> 2

注意:

这里的映射顺序是人为指定的。如果类别本身无序(比如颜色),这种编码可能会引入不正确的顺序信息。

4.3 OneHotEncoder

功能:将类别变量转换为哑变量(独热编码)。

  • 每个类别用一个二进制列表示。
  • 适用于无序的类别数据。

特点

  • 不引入类别之间的顺序关系。
  • 输出结果可以是稀疏矩阵,节省存储空间。

工作原理

from sklearn.preprocessing import OneHotEncoderdata = [['red'], ['green'], ['blue'], ['green']]
encoder = OneHotEncoder(sparse=False)
encoded = encoder.fit_transform(data)
print(encoded)

输出为:

[[0. 0. 1.][0. 1. 0.][1. 0. 0.][0. 1. 0.]]

映射关系为:

red   -> [0. 0. 1.]
green -> [0. 1. 0.]
blue  -> [1. 0. 0.]

4.4. 编码方法的选择

编码方法适用场景优点缺点
LabelEncode一维特征,单个特征有少量类别,无需表示顺序关系。简单直接,输出紧凑可能引入虚假顺序
OrdinalEncoder多个特征,类别本身有顺序关系(如教育程度:小学<中学<大学)。适合处理有序类别无法处理无序类别
OneHotEncoder多个特征,类别之间无顺序关系(如颜色、城市名称)。避免顺序误解,生成独立的二进制列高维度类别会导致维数过大,稀疏矩阵占用空间

4.5. 为什么要区分哑变量和整数编码?

  • 整数编码:可能引入类别之间的虚假顺序关系。例如,如果模型看到 Color=[Red, Green, Blue] 编码为 [0, 1, 2],它可能错误地认为 GreenRed 大,而 BlueGreen 大。
  • 哑变量(独热编码):通过创建独立的列避免类别之间的顺序关系,特别适用于非数值型的分类变量。

4.6. 示例对比

from sklearn.preprocessing import LabelEncoder, OneHotEncoder, OrdinalEncoder
import numpy as np# 数据
data = np.array(['red', 'green', 'blue', 'green', 'red'])# 1. LabelEncoder
le = LabelEncoder()
label_encoded = le.fit_transform(data)
print("LabelEncoder:", label_encoded)
# 输出: [2 1 0 1 2]# 2. OrdinalEncoder (适用于二维数据)
oe = OrdinalEncoder()
ordinal_encoded = oe.fit_transform(data.reshape(-1, 1))
print("OrdinalEncoder:", ordinal_encoded)
# 输出: [[2.]
#       [1.]
#       [0.]
#       [1.]
#       [2.]]# 3. OneHotEncoder
ohe = OneHotEncoder(sparse=False)
one_hot_encoded = ohe.fit_transform(data.reshape(-1, 1))
print("OneHotEncoder:\n", one_hot_encoded)
# 输出:
# [[0. 0. 1.]
#  [0. 1. 0.]
#  [1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

4.7. 总结

  • 编码和哑变量是处理分类数据的重要工具。
  • LabelEncoderOrdinalEncoder 将类别转换为整数,适用于少量类别的数据,但需注意顺序问题。
  • OneHotEncoder 将类别转化为二进制向量,适合无序类别数据。
  • 选择合适的编码方式可以提高模型的准确性和效率。

5. knn分类

KNN (K-Nearest Neighbors)

简介:

KNN 是一种 监督学习 算法,主要用于分类和回归问题。它的基本思想是:给定一个新的数据点,查找在特征空间中最接近(最近)的 K 个数据点,然后通过这些数据点的标签来预测新数据点的标签。

工作原理:

  1. 选择 K 值:首先选择一个正整数 K,即最近邻的数量。
  2. 计算距离:对于每一个待分类的数据点,计算它与所有训练数据点的距离。常用的距离度量方式包括欧氏距离、曼哈顿距离等。
  3. 选取 K 个最近邻:根据计算得到的距离,找到 K 个距离最近的训练数据点。
  4. 分类:对于分类任务,通过 K 个邻居的标签进行投票,选票最多的类别作为该点的预测标签。
    • 回归任务:对于回归任务,取这 K 个邻居的平均值作为预测值。

优点:

  • 简单且直观,易于理解和实现。
  • 非参数化算法,不需要假设数据的分布。
  • 可以用于多类别分类。

缺点:

  • 计算量大,尤其在数据量大的时候,因为每次预测都要计算与所有训练数据点的距离。
  • 对于高维数据,KNN 的表现会变差(维度灾难),因为高维空间中数据点之间的距离差异变得不明显。
  • 对噪声敏感,异常值可能会影响最终的分类结果。

应用场景:

  • 推荐系统(例如电影推荐)。
  • 图像识别、语音识别。
  • 基于相似度的分类任务。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.neighbors import KNeighborsClassifier# 定义样本特征数据和对应的标签
X = np.array([[1, 2], [2, 3], [3, 1], [2, 4], [6, 5], [7, 8], [8, 6], [6, 7], [7, 9], [8, 8]])
labels = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1])# 定义一个新的特征数据
X_new = np.array([[3, 5]])# 绘制类别为0的数据,红色点
plt.scatter(X[labels == 0, 0], X[labels == 0, 1], color="red", label="Class 0")# 绘制类别为1的数据,蓝色点
plt.scatter(X[labels == 1, 0], X[labels == 1, 1], color="blue", marker="o", label="Class 1")# 绘制新的特征数据,绿色加号
plt.scatter(X_new[0, 0], X_new[0, 1], color="green", marker="+", label="New Point")# 创建KNeighborsClassifier分类器对象
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X, labels)  # 使用样本的特征和标签训Lor
new_label = knn.predict(X_new)  # 预测新数据# 绘制图例和标题
plt.legend()
plt.title("KNN Visualization")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")# 显示图像
plt.show()

6. kmeans分类

简介:

KMeans 是一种 无监督学习 聚类算法,用于将数据集分成若干个簇(clusters)。算法试图根据数据点之间的相似性将数据划分成 K 个簇。每个簇由其簇中心(质心)代表,算法通过最小化数据点到质心的距离来寻找最佳的簇划分。

工作原理:

  1. 选择 K 值:指定需要聚类的簇的数量 K
  2. 初始化质心:随机选择 K 个数据点作为初始簇中心(质心)。
  3. 分配数据点:将每个数据点分配到距离最近的簇中心,形成 K 个簇。
  4. 更新质心:计算每个簇中所有数据点的平均值,并将其作为新的簇中心。
  5. 迭代:重复步骤 3 和 4,直到簇中心不再变化,或者变化非常小,表明聚类已经收敛。

优点:

  • 算法简单且高效,适合大规模数据。
  • 结果易于理解,可以通过质心直观地表示每个簇。
  • 适用于球形簇数据。

缺点:

  • 需要指定 K 值,即簇的数量,通常需要通过实验来确定。
  • 对初始簇中心敏感,可能会陷入局部最优解。可以通过多次运行并选择最佳结果来缓解这一问题。
  • 对离群点(噪声)敏感,离群点可能影响簇的划分。
  • 不适用于非球形簇,或者簇大小差异过大的情况。

应用场景:

  • 客户细分(例如根据消费习惯将用户分组)。
  • 图像压缩(通过聚类色彩进行压缩)。
  • 数据降维和特征学习。

import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans# 生成数据
X, y = make_blobs(n_samples=200, centers=5, random_state=0)
print(X,y)
# 绘制原始数据点
plt.scatter(X[:, 0], X[:, 1], c=y)  # 使用y作为颜色标识# 创建KMeans聚类模型
kmeans = KMeans(n_clusters=10, random_state=3)
kmeans.fit(X)# 获取KMeans聚类结果的标签
y_kmeans = kmeans.predict(X)
print(y_kmeans)
# 绘制聚类后的数据点
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans)  # 根据聚类结果给每个点上色plt.show()

7. KNN和KMeans对比

8. 总结sklearn中的几个方法

归一化MinMaxScaler是sklearn.preprocess下的

标准化StandardScaler是sklearn.preprocess下的

缺失值SimpleImputer是sklearn.Imputer下的

三种编码LabelEncoder,OrdinalEncoder,OneHotEncoder都是sklearn.preprocess下的

我总结就是,sklearn是对数据做预处理的,先将数据进行缺失值补全,然后再对非数字类型的数据编码为数字类型,有三种编码,更加场景使用适合的编码模式,最后再将所有数字类型转为0到1之间或者转为正太分布,以适应模型学习。

预处理:缺失值补全------->数据编码统一转为数字类型-------->归一化或标准化压缩数据----->做一定的分类处理

相关文章:

sklearn学习

介绍&#xff1a;scaler&#xff1a;换算的意思 1. 归一化MinMaxScaler() 归一化的意思是将一堆数&#xff0c;如果比较离散&#xff0c;为了让数据更适合模型训练&#xff0c;将离散的数据压缩到0到1之间&#xff0c;以方便模型更高效优质的学习&#xff0c;而对数据的预处理…...

Ubuntu下手动设置Nvidia显卡风扇转速

在Ubuntu下&#xff0c;您可以使用 NVIDIA显卡驱动程序提供的工具手动调整风扇转速。以下是详细步骤&#xff1a; 1. 确保已安装NVIDIA显卡驱动 确保系统已经安装了正确的NVIDIA驱动&#xff1a; nvidia-smi如果没有输出驱动信息&#xff0c;请先安装驱动&#xff1a; sudo…...

Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…...

ES 和Kibana-v2 带用户登录验证

1. 前言 ElasticSearch、可视化操作工具Kibana。如果你是Linux centos系统的话&#xff0c;下面的指令可以一路CV完成服务的部署。 2. 服务搭建 2.1. 部署ElasticSearch 拉取docker镜像 docker pull elasticsearch:7.17.21 创建挂载卷目录 mkdir /**/es-data -p mkdir /**/…...

CodeIgniter如何手动将模型连接到数据库

在CodeIgniter中&#xff0c;模型通常是自动与数据库连接的&#xff0c;因为模型类&#xff08;CI_Model&#xff09;已经内置了对数据库操作的支持。但是&#xff0c;如果你需要手动指定数据库连接或者进行一些特殊的数据库配置&#xff0c;你可以通过几种方式来实现。 1. 使…...

商用密码应用安全性评估,密评整体方案,密评管理测评要求和指南,运维文档,软件项目安全设计相关文档合集(Word原件)

一、 密码应用安全性评估方案 &#xff08;一&#xff09; 密码应用测评工作思路 1.1.1. 测评准备活动的主要任务 1.1.2. 测评准备活动的输出文档 1.2. 方案编制活动 1.2.1. 方案编制活动的主要任务 1.2.2. 方案编制活动的输出文档 1.3. 现场预评估活动 1.3.1. 现场测评…...

AI赋能电商:构建高效、智能化的新零售生态

随着人工智能&#xff08;AI&#xff09;技术的不断进步&#xff0c;其在电商领域的应用日益广泛&#xff0c;从购物推荐到供应链管理&#xff0c;再到商品定价&#xff0c;AI正在全面改变传统电商的运营模式&#xff0c;并推动行业向智能化和精细化方向发展。本文将探讨如何利…...

【GAMES101笔记速查——Lecture 19 Cameras,Lenses and Light Fields】

本章节内容&#xff1a;相机、棱镜、光场 计算机图形学的两种成像方法&#xff1a; 1.合成方法&#xff1a;光栅化、光线追踪&#xff08;展示出现实没有的东西&#xff09; 2.捕捉方法&#xff1a;相机&#xff08;捕捉现实已有的东西&#xff09; 目录 1 相机 1.1 针孔相…...

虚拟机上搭建达梦DSC简略步骤

vmware 17 centos 7.6 达梦 dm8_20240920_x86_rh7_64.iso cd /d C:\Program Files (x86)\VMware\VMware Workstation\.\vmware-vdiskmanager.exe -c -s 100MB -a lsilogic -t 2 "F:\vm\dmdsc\sharedisk\share-dcr.vmdk" .\vmware-vdiskmanager.exe -c -s 100MB -a l…...

Python和R荧光分光光度法

&#x1f335;Python片段 Python在处理荧光分光光度法数据方面非常强大&#xff0c;得益于其丰富的数据处理和可视化库&#xff0c;可以轻松实现从数据读取到分析的完整流程。荧光分光光度法用于测量物质在激发光照射下发出的荧光强度&#xff0c;常用于定量分析和特性研究。 …...

电子学习中的关键游戏化元素

游戏化彻底改变了电子学习领域&#xff0c;提供了一种使学习具有吸引力、互动性和有效性的方法。通过将类似游戏的功能集成到教育平台中&#xff0c;教育工作者可以增强动力&#xff0c;提高知识记忆&#xff0c;并创造动态的学习体验。游戏化的关键要素为设计与学习者产生共鸣…...

算法日记 33 day 动态规划(打家劫舍,股票买卖)

今天来看看动态规划的打家劫舍和买卖股票的问题。 上题目&#xff01;&#xff01;&#xff01;&#xff01; 题目&#xff1a;打家劫舍 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金…...

JavaScript的let、var、const

这张图片主要介绍了JavaScript中的三种变量声明方式&#xff1a;let、var和const。 1. let 含义&#xff1a;let是现在实际开发中常用的变量声明方式。特点&#xff1a; 块级作用域&#xff1a;let声明的变量只在其所在的块级作用域内有效。例如&#xff1a;{let x 10; } co…...

C语言-数学基础问题

一.奇数、偶数问题 1.从键盘上输入一个整数&#xff0c;判断并输出它是奇数还是偶数。 //从键盘上输入一个整数&#xff0c;判断并输出它是奇数还是偶数。 main() {int i;printf("输入一个整数:\n");scanf("%d",&i);if(i%20)printf("它是偶数\n…...

解决单元测试时找不到类名

场景&#xff1a; springboot单元测试mockito对mapper进行mock时&#xff1a; tk.mybatis.mapper.mapperexception: 无法获取实体类 XX.xx 对应的表名 分析&#xff1a; 使用了一个方法&#xff1a;Example examplenew Example(User.class); 进入源码后发现Entityhelper没…...

从零开始-VitePress 构建个人博客上传GitHub自动构建访问

从零开始-VitePress 构建个人博客上传GitHub自动构建访问 序言 VitePress 官网&#xff1a;VitePress 中文版 1. 什么是 VitePress VitePress 是一个静态站点生成器 (SSG)&#xff0c;专为构建快速、以内容为中心的站点而设计。简而言之&#xff0c;VitePress 获取用 Markdown…...

【案例学习】如何使用Minitab实现包装过程的自动化和改进

Masimo 是一家全球性的医疗技术公司&#xff0c;致力于开发和生产各种行业领先的监控技术&#xff0c;包括创新的测量、传感器和患者监护仪。在 Masimo Hospital Automation 平台的助力下&#xff0c;Masimo 的连接、自动化、远程医疗和远程监控解决方案正在改善医院内外的护理…...

【ArcGISPro】使用AI提取要素-土地分类(sentinel2)

Sentinel2数据处理 【ArcGISPro】Sentinel-2数据处理-CSDN博客 土地覆盖类型分类 处理结果...

深度解析:Nginx模块架构与工作机制的奥秘

文章目录 前言Nginx是什么?Ngnix特点&#xff1a; 一、Nginx模块与工作原理1.Nginx的模块1.1 Nginx模块常规的HTTP请求和响应的流程图:1.2 Nginx的模块从结构上分为如下三类&#xff1a;1.3 Nginx的模块从功能上分为如下三类: 2.Nginx的进程模型2.1 Nginx进程结构2.2 nginx进程…...

分布式kettle调度平台v6.4.0新功能介绍

介绍 Kettle&#xff08;也称为Pentaho Data Integration&#xff09;是一款开源的ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff0c;由Pentaho&#xff08;现为Hitachi Vantara&#xff09;开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...