机器学习day1-数据集
机器学习
一、机器学习
1.定义
让计算机在数据中学习规律并根据得到的规律对未来进行预测。
2.发展史
19世纪50年代:图灵测试提出、塞缪尔开发的西洋跳棋程序,标志着机器学习正式进入发展期
19世纪80年代:神经网络反向传播(BP)算法训练的多参数线性规划(MLP),复兴时代
19世纪90年代:决策树(ID3)算法,支持向量机(SVM),由知识驱动转变为数据驱动
21世纪初:Hinton提出深度学习(Deep Learning),蓬勃发展时期
2012年:算力提升和海量训练样本的支持,深度学习成为机器学习研究热点
3.分类
按学习模式不同:
监督学习:给结果去学习模型,然后对给定的新数据利用模型去进行预测。主要用于回归和分类。
半监督学习:利用少量标注数据和大量无标注数据进行学习,侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。
无监督学习:没有结果,给数据找出规律。主要用于关联分析、聚类和降维。对抗神经网络。
强化学习:类似于监督学习,但未使用样本数据进行训练,通过不断试错进行学习的模式。两个可交互对象:智能体和环境,四个核心要素:策略、回报函数(收益信号)、价值函数、环境模型(可选)。常用于机器人避障、棋牌类游戏、广告和推荐等应用场景。
4.机器学习项目开发步骤
1.收集数据
2.准备数据
3.训练模型
4.评估模型
5.提高性能
二、scikit-learn工具
1.安装
windows+r输入cmd,进入命令提示符
激活conda:conda activate
创建sklearn虚拟环境:conda create -n sklearn python=3.9
激活sklearn环境:activate sklearn
pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ numpy
pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ scipy
pip install --index Verifying - USTC Mirrors matplotlib
pip install --index Verifying - USTC Mirrors pandas
pip install --index Verifying - USTC Mirrors scikit-learn
参考以下安装教程:https://www.sklearncn.cn/62/
安装报错参考:pip 安装 scikit-learn失败解决教程_failed to build scikit-learn-CSDN博客
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn
VScode安装
环境选择-测试是否可以正常使用
2.scikit-learn包含内容
分类
回归
聚类
降低维度
模型选择
特征预处理
三、数据集
1.sklearn玩具数据集
数据在sklearn库的本地,数据量小
| 函数 | 返回 |
|---|---|
| load_boston(*[,return_X_y]) | 加载并返回波士顿房价数据集(回归) |
| load_iris(*[,return_X_y,as_frame]) | 加载并返回鸢尾花数据集(分类) |
| load_diabetes(*[,return_X_y,as_frame]) | 加载并返回糖尿病数据集(回归) |
| load_digits(*[,n_class,return_X_y,as_frame]) | 加载并返回数字数据集(分类) |
| load_linnerud(*[,return_X_y,as_frame]) | 加载并返回linnerud物理锻炼数据集 |
| load_wine(*[,return_X_y,as_frame]) | 加载并返回葡萄酒数据集(分类) |
| load_breast_cancer(*[,return_X_y,as_frame]) | 加载并返回威斯康星州乳腺癌数据集(分类) |
2.sklearn现实世界数据集
通过网络获取,数据量大
| 函数 | 说明 |
|---|---|
| fetch_olivetti_faces(*[,data_home,...]) | 从AT&T(分类)中加载Olivetti人脸数据集 |
| fetch_20newsgroups(*[,data_home,subset,...]) | 从20个新闻组数据集中加载文件名和数据(分类) |
| fetch_20newsgroups_vectorized(*[,subset,...]) | 加载20个新闻组数据集并将其矢量化为令牌计数(分类) |
| fetch_lfw_people(*[,data_home,funneled...]) | 将标签的面孔加载到Wild(LFW)人数据集中(分类) |
| fetch_lfw_pairs(*[,subset,data_home,...]) | 在“Wild(LFW)”对数据集中加载标签的面部(分类) |
| fetch_covtype(*[,data_home,...]) | 加载covertype(植被型数据集)数据集(分类) |
| fetch_rcv1(*[,data_home,subset,...]) | 加载RCV1多标签数据集(分类) |
| fetch_kddcup99(*[,subset,data_home,...]) | 加载kddcup99(网络入侵检测)数据集(分类) |
| fetch_california_housing(*[,data_home,...]) | 加载加利福尼亚住房数据集(回归) |
3.sklearn加载玩具数据集
eg1:加载鸢尾花数据
from sklearn.datasets import load_iris#加载玩具数据(鸢尾花数据集) iris = load_iris() print(iris.data)#数据(特征数据) print(iris.data.shape) print(iris.feature_names)#特征名称 print(iris.target)#标签(目标) print(iris.target.shape) print(iris.target_names)#目标描述 print(iris.filename) #iris.csv 保存后的文件名 print(iris.DESCR)#数据集的描述
特征有:
花萼长 sepal length
花萼宽sepal width
花瓣长 petal length
花瓣宽 petal width
三分类:
0-Setosa山鸢尾
1-Versicolour变色鸢尾
2-Virginica维吉尼亚鸢尾
用pandas把特征和目标一起显示出来:
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
def loadiris1():iris = load_iris()#加载鸢尾花数据(去本地加载了一个csv文件)# print(iris.data)#特征数据# print(iris.feature_names)# print(iris.target)# print(iris.target_names)# print(iris.DESCR)# print(iris.filename)# print("data什么类型的数据",type(iris.data),iris.data.dtype)# print("target什么类型的数据",type(iris.target),iris.target.dtype)x = iris.data# print(x.shape,x.dtype)y = iris.target.reshape(x.shape[0],1).astype(np.float64)#把一维数组转化为2维数组(待会可以和x堆叠) 再把保存的数据的类型转化为跟x一样data=np.hstack([x,y])# print(data,data.shape)# print(data[80][4])# print(iris.target_names[int(data[80][4])])# print(iris.feature_names.append("target"))iris.feature_names.append("target")dataf=pd.DataFrame(data=data,columns=iris.feature_names)print(dataf)
loadiris1()
4.sklearn获取现实世界数据集
1.联网下载后,保存到home目录
from sklearn import datasets datasets.get_data_home() #查看数据集默认存放的位置
eg2.获取20分类新闻数据
sklearn.datasets.fetch_20newsgroups(data_home,subset)
data_home:
subset:train:只下载训练集;test:只下载测试集;all:训练集和测试集
return_X_y:决定返回值的情况,False:默认
当参数return_X_y值为False时, 函数返回Bunch对象,Bunch对象中有以下属性 *data:特征数据集, 长度为18846的列表list, 每一个元素就是一篇新闻内容, 共有18846篇 *target:目标数据集,长度为18846的数组ndarray, 第一个元素是一个整数,整数值为[0,20) *target_names:目标描述,长度为20的list *filenames:长度为18846的ndarray, 元素为字符串,代表新闻的数据位置的路径 当参数return_X_y值为True时,函数返回值为元组,元组长度为2, 第一个元素值为特征数据集,第二个元素值为目标数据集
from sklearn.datasets import fetch_20newsgroups data=fetch_20newsgroups(data_home="./src",subset="test") print(data.data[1]) print(data.target_names)
5.加载本地自己的数据集
1.csv文件
①:txt,数据之间用英文逗号隔开,保存后缀名改为csv
②:excel,填写数据,以csv后缀保存文件
2.pandas加载csv
pd.read_csv("./src/ss.csv")
数据为DataFrame形式
import pandas as pd
# 作业("" "./" "../" "/" 是什么意思 而且举例说明)
#. (点) 表示当前目录,从当前工作目录开始的相对路径
#.. (两个点) 表示上一级目录,引用位于当前目录父目录中的文件
#/路径分隔符,用于分隔目录名和文件名
data=pd.read_csv('src/ss.csv')
print(data)
import pandas as pd
data=pd.read_excel("src/ss.xlsx")
print(data)
6.数据集的划分
1.函数
sklearn.model_selection.train_test_split(*arrays,**options)
*array :用于接收1到多个"列表、numpy数组、稀疏矩阵或padas中的DataFrame"。
**options, 重要的关键字参数有: test_size 值为0.0到1.0的小数,表示划分后测试集占的比例 random_state 值为任意整数,表示随机种子,使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同 shuffle:布尔值。默认为True,在分割之前是否对数据进行洗牌 stratify:分层划分,默认是y,按照 y 中类别的比例进行分层抽样,确保训练集和测试集中各类别样本的比例相同。 返回值说明:返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型,list中对应被划分出来的两部分就是什么类型
2.示例
复习:
arr2=[100,200]
x,y=arr2
print(x,y)
def m(*a, **b):print(a) #('hello', 123)print(b) #{'name': '小王', 'age': 30, 'sex': '男'} m("hello", 123, name="小王", age=30, sex="男")
def m2(a,b,c):pass
dic={"a":123,"b":12,"c":123}
print(dic) #{'a': 123, 'b': 12, 'c': 123}
#m2(**dic)相当于m2(a=dic["a"],b=dic["b"],c=dic["c"])
①.列表数据集划分
from sklearn.model_selection import train_test_split data1 = [1, 2, 3, 4, 5] data2 = ["1a", "2a","3a", "4a", "5a"] a, b = train_test_split(data1, test_size=0.4, random_state=22) print(a, b) #[4, 1, 5] [2, 3] a, b = train_test_split(data2, test_size=0.4, random_state=22) print(a, b) #['4a', '1a', '5a'] ['2a', '3a'] a, b, c, d = train_test_split(data1, data2, test_size=0.4, random_state=22) print(a,b,c,d) #['4a', '1a', '5a'] ['2a', '3a']
②.ndarray数据集划分
划分前和划分后的数据类型是相同的
from sklearn.model_selection import train_test_split import numpy as np data1 = [1, 2, 3, 4, 5] data2 = np.array(["1a", "2a","3a", "4a", "5a"]) a, b, c, d = train_test_split(data1, data2, test_size=0.4, random_state=22) print(a, b, c, d) #[4, 1, 5] [2, 3] ['4a' '1a' '5a'] ['2a' '3a'] print(type(a), type(b), type(c), type(d)) #<class 'list'> <class 'list'> <class 'numpy.ndarray'> <class 'numpy.ndarray'>
# ndarray的数据集划分 from sklearn.model_selection import train_test_split import numpy as np x=np.arange(100).reshape(50,2) # print(x)#这个x数据集中有几个数据(50个) 每一个数据有2个特征 x_train,x_test=train_test_split(x,test_size=11,random_state=42) print(x_train.shape) print(x_test.shape) print(type(x_train)) print(type(x_test))
③.二维数组数据集划分
train_test_split只划分第一维度,第二维度保持不变
from sklearn.model_selection import train_test_split
import numpy as np
data1 = np.arange(1, 16, 1)
data1.shape=(5,3)
print(data1)
a, b = train_test_split(data1, test_size=0.4, random_state=22)
print("a=\n", a)
print("b=\n", b)
[[ 1 2 3][ 4 5 6][ 7 8 9][10 11 12][13 14 15]] a=[[10 11 12][ 1 2 3][13 14 15]] b=[[4 5 6][7 8 9]]
eg3
from sklearn.model_selection import train_test_split arr1=[1,23,2,231,25,36,23,32,22,34,123,12,3,2,3] x_train,x_test=train_test_split(arr1,train_size=0.8) print(arr1) print(x_train,x_test) #[1, 23, 2, 231, 25, 36, 23, 32, 22, 34, 123, 12, 3, 2, 3] [34, 2, 123, 12, 3, 1, 2, 231, 32, 36, 22, 23] [23, 25, 3]
from sklearn.model_selection import train_test_split arr1=[1111,23,2,231,25,36,23,32,22,34,123,12,3,33333,3] arr2=[9999,1,1,1,1,1,2,2,2,2,3,3,3,66666,3] x_train,x_test,y_train,y_test=train_test_split(arr1,arr2,train_size=0.8)#arrays print(arr1) print(x_train,x_test) print(y_train,y_test) #[1111, 23, 2, 231, 25, 36, 23, 32, 22, 34, 123, 12, 3, 33333, 3] #[9999, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 66666, 3] #[34, 3, 1111, 22, 33333, 25, 123, 32, 23, 12, 2, 3] [36, 23, 231] #[2, 3, 9999, 2, 66666, 1, 3, 2, 2, 3, 1, 3] [1, 1, 1] #将arr1和对应的arr2打乱,再划分成训练集和测试集
from sklearn.model_selection import train_test_split
x=[[11,2,3,31,111],[12,2,3,32,112],[1,23,3,33,113],[14,2,3,34,114],[15,2,3,35,115],[16,2,3,36,116],[1,23,3,36,117],[1,23,3,316,118],[1,23,3,326,119],[1,23,3,336,120]]
y=[1,1,1,1,1,2,2,2,2,2]
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,stratify=y,random_state=40)#stratify=y,按y进行分层
print("x_train:\n",x_train)
print("x_test:\n",x_test)
print("y_train:\n",y_train)
print("y_test:\n",y_test)
print(type(x_test))
④.DataFrame数据集划分
# dataFrame的数据集划分 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split # 数据集的划分 data=np.arange(1,100).reshape(33,3) data=pd.DataFrame(data,columns=['a','b','c']) # print(data) train,test=train_test_split(data,train_size=0.7,shuffle=True,random_state=4) print(train.shape) print(test.shape)
⑤.字典数据集划分
可以划分非稀疏矩阵
用于将字典列表转换为特征向量。这个转换器主要用于处理类别数据和数值数据的混合型数据集
# 字典的特征提取和数据划分
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
arr=[{"name":"重庆","count":2000,"tempreture":41},{"name":"成都","count":2300,"tempreture":28},{"name":"北京","count":4900,"tempreture":20},{"name":"昆明","count":190,"tempreture":22},{"name":"昆明","count":290,"tempreture":22}]
model=DictVectorizer(sparse=False)#sparse=False表示返回一个完整的矩阵,sparse=True表示返回一个稀疏矩阵
data=model.fit_transform(arr)#提取特征
print(data)
x_train,y_train=train_test_split(data,train_size=0.8,random_state=666)
print(x_train)
print(y_train)
⑥.鸢尾花数据集划分
# 鸢尾花数据集划分 from sklearn import datasets from sklearn.model_selection import train_test_split iris=datasets.load_iris() X=iris.data y=iris.target X_train,X_test,y_train,y_test=train_test_split(X,y,train_size=0.8,random_state=4,stratify=y) print(X) print(y) print(X_train.shape) print(X_test.shape) print(y_train.shape) print(y_test.shape) print(y_train) print(iris.feature_names) print(iris.target_names)
⑦.现实世界数据集划分
from sklearn.datasets import fetch_20newsgroups from sklearn.model_selection import train_test_split import numpy as np news=fetch_20newsgroups(data_home="./src",subset="train") # print(news.data[0]) x_train,x_test,y_train,y_test=train_test_split(news.data,news.target,train_size=0.8,random_state=666) print(np.array(x_train).shape) print(np.array(x_test).shape) print(x_train[0:5]) print(y_train) print(news.target_names)
相关文章:
机器学习day1-数据集
机器学习 一、机器学习 1.定义 让计算机在数据中学习规律并根据得到的规律对未来进行预测。 2.发展史 19世纪50年代:图灵测试提出、塞缪尔开发的西洋跳棋程序,标志着机器学习正式进入发展期 19世纪80年代:神经网络反向传播(…...
【Golang】——Gin 框架中的路由与请求处理
文章目录 1. 路由基础1.1 什么是路由?1.2 Gin 中的路由概述 2. 创建简单路由2.1 基本路由定义2.2 不同请求方法的路由 3. 路由参数3.1 路径参数3.2 查询参数 4. 路由分组4.1 为什么使用路由分组?4.2 路由分组示例 5. 请求处理与响应5.1 Gin 中的 Context…...
nuxt3添加wowjs动效
1、安装wowjs pnpm i wowjs1.1.32、node_modules复制wowjs代码 路径/node_modules/wowjs/dist/wow.js。不知道路径则查看node_modules/wowjs/package.json里面的main选项 2.1、在public文件夹创建wowjs.js文件 /public/wowjs.js export default (callthis) > { // !!// 这是…...
我们是如何实现 TiDB Cloud Serverless 的 - 成本篇
作者: shiyuhang0 原文来源: https://tidb.net/blog/fbedeea4 背景 Serverless 数据库是云原生时代的产物,它提供全托管,按需付费,自动弹性的云数据库服务,让客户免于繁重的数据库运维工作。关于 Serve…...
PCL算法汇总
参考 【2024最新版】PCL点云处理算法汇总(C长期更新版)_pcl点云聚类c-CSDN博客...
sql注入之二次注入(sqlilabs-less24)
二阶注入(Second-Order Injection)是一种特殊的 SQL 注入攻击,通常发生在用户输入的数据首先被存储在数据库中,然后在后续的操作中被使用时,触发了注入漏洞。与传统的 SQL 注入(直接注入)不同&a…...
Android compose 软键盘 遮挡对话框中TextField 输入框
在AlertDialog对话框中含有TextField输入框时,弹出软件盘会遮挡输入框 解决1: 在AndroidManifest.xml的 MainActivity中添加如下 android:windowSoftInputMode"adjustResize" 然后AlertDialog 中的modify. modify.windowInsetsP…...
spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索
一、背景 es索引有一个文档CourseIndex,下面是示意: creatorIdgradesubjectnameno1002270英语听力课程一N00232DS91004380数学口算课程N00209DK71003480物理竞赛课程N00642XS21002280英语听力课程二N00432WS31002290英语听力课程三N002312DP5 在搜索的时候&#…...
【项目开发】分析六种常用软件架构
未经许可,不得转载。 文章目录 软件架构核心内容设计原则分层架构常见层次划分优缺点应用场景事件驱动架构核心组件优缺点应用场景微核架构核心概念优缺点应用场景微服务架构核心组件设计与实施优缺点应用场景云架构云架构模式优缺点应用场景软件架构 软件架构是指一个软件系…...
算法和程序的区别
算法(Algorithm)和程序(Program)是计算机科学中两个密切相关但不同的概念。让我们通过以下几个方面来比较它们: ### 1. 设计 vs 实现 - **算法设计(Algorithm Design)**: - **定…...
用指针遍历数组
#include<stdio.h> int main() {//定义一个二维数组int arr[3][4] {{1,2,3,4},{2,3,4,5},{3,4,5,6},};//获取二维数组的指针int (*p)[4] arr;//二维数组里存的是一维数组int[4]for (int i 0; i < 3; i){//遍历一维数组for (int j 0; j <4; j){printf("%d &…...
《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性
一、论文简介 论文讨论了大规模预训练产生的视觉基础模型在处理任意图像时的强大能力,这些模型不仅能够完成训练任务,其中间表示还对其他视觉任务(如检测和分割)有用。研究者们提出了一个问题:这些模型是否能够表示物体…...
使用pip安装esp32的擦除、写入固件的esptool库
esptool库可以为esp32的开发板烧录新的固件,但是如果为了烧录固件就要装esp-idf软件包,甚至需要用make编译安装很久,实在太费时费力了! 好消息就是,esp提供了python的esptool库,这样只要使用pip安装上这个…...
传奇996_23——杀怪掉落,自动捡取,捡取动画
一、杀怪掉落 前置: 添加地图地图刷怪怪物掉落(术语叫爆率,掉落叫爆率,而且文档上叫爆率) 刷怪步骤:在\MirServer\Mir200\Envir\MonItems文件夹中建立以怪物名字为文件名的txt文件写法案例: …...
【030】基于51单片机甲醛检测报警器【Proteus仿真+Keil程序+报告+原理图】
☆、设计硬件组成:51单片机最小系统 ZE08-CH2O甲醛传感器AT24C02存储芯片LCD1602液晶显示按键设置蜂鸣器报警。 1、本设计采用STC89C52、AT89C52、AT89S52作为主控芯片; 2、采用ZE08-CH2O甲醛传感器采集环境中的甲醛浓度值,LCD1602实时显示…...
微信小程序:vant组件库安装步骤
前言:在微信小程序中引用vant组件报错,提示路径不存在,这很有可能是因为没有安装构建vant组件库导致。下面是我整理的安装vant组件库的步骤: 第一步:安装node.js(执行完第一步请重启小程序) 具体步骤请看链接:node.js…...
处理namespace问题:Namespace not specified for AGP 8.0.0
How do I fix ‘namespace not specified’ error in Android Studio? Namespace not specified for AGP 8.0.0 解决方案 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/androi…...
C++(Qt)软件调试---内存分析工具Heob(26)
C(Qt)软件调试—内存分析工具Heob(26) 文章目录 C(Qt)软件调试---内存分析工具Heob(26)[toc]1、概述🐜2、环境配置🪲3、功能说明4、使用Heob分析qt 程序内存泄漏🦧5、使用Heob检测qt 程序野指针…...
Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)
目录 一、String字符串类型介绍 二、常见命令 1、SET 2、GET 3、MGET 4、MSET 使用MGET 和 使用多次GET的区别 5、DEL 6、SETNX SET、SET NX和SET XX执行流程 7、INCR 8、INCRBY 9、DECR 10、DECYBY 11、INCRBYFLOAT 12、APPEND 13、GETRANGE 14、SETRANGE …...
Flutter中的Material Theme完全指南:从入门到实战
Flutter作为一款热门的跨平台开发框架,其UI组件库Material Design深受开发者喜爱。本文将深入探讨Flutter Material Theme的使用,包括如何借助Material Theme Builder创建符合产品需求的主题风格。通过多个场景和代码实例,让你轻松掌握这一工…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
