kaggle上经典泰坦尼克项目数据分析探索
之前了解在kaggle上这个项目很火,最近想要加强一下python数据分析,所以在kaggle上找到这个项目进行学习探索,下面是将一些学习资料以及过程整理出来。
一、首先我们了解一下项目背景以及如何找到这个项目。
kaggle项目地址:
https://www.kaggle.com/code/alexisbcook/titanic-tutorial?scriptVersionId=99170538&cellId=5
进入页面后会有背景介绍以及项目
我们先大概了解一下项目背景以及流程,找到项目所需要的数据源。
二、准备就绪,下面进入项目一起学习探索
import pandas as pdtrain_data = pd.read_csv(r'E:/train.csv')
test_data = pd.read_csv(r'E:/test.csv')
train_data.head(10)# 数据集概述
# 泰坦尼克号数据集是机器学习入门中一个非常著名的数据集,包含了乘客的个人信息以及他们的生死状态。数据集主要包含以下字段:# PassengerI:乘客编号
# Survive:生存状态(0代表未存活,1代表存活)
# Pclas:舱位等级
# Nam:乘客姓名
# Se:性别
# Ag:年龄
# SibS:同舱兄弟姐妹或配偶的数量
# Parc:同行父母或子女的数量
# Ticke:票号
# Far:票价
# Cabi:舱位
# Embarke:登船港口
查看导入train数据结果:
查看导入的test数据结果:
test_data.head(10)
查看数据基本信息
# 查看数据基本信息
train_data.info()
test_data.info()
查看数据空值情况
# 检查各个字段的空值情况
train_data.isnull().sum()
说明:从结果看到Age、Cabin和Embarked明显有空值
test_data.isnull().sum()
查看一下数据描述
train_data.describe()
test_data.describe()
# 计算女性获救的概率
women = train_data.loc[train_data.Sex == 'female']["Survived"]
rate_women = sum(women)/len(women)print("% of women who survived:", rate_women)
# 计算男性获救的概率
men = train_data.loc[train_data.Sex == 'male']["Survived"]
rate_men = sum(men)/len(men)print("% of men who survived:", rate_men)
# 学习第一个机器学习模型随机森林来预测乘客的获救可能
from sklearn.ensemble import RandomForestClassifiery = train_data["Survived"]# 指定相关的特性列
features = ["Pclass", "Sex", "SibSp", "Parch"]
# 将features转换为哑变量
X = pd.get_dummies(train_data[features])
X_test = pd.get_dummies(test_data[features])model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
model.fit(X, y)
predictions = model.predict(X_test)output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})
output.to_csv('submission.csv', index=False)
print(output.head(10))
print("Your submission was successfully saved!")
# 上面部分是根据实例kaggle上面的例子,下面我们再对数据做一些探索
# 需求:引入seaborn来研究已知存活的数据中存活比例
# 结论:在891名乘客中,其中存活的比例为36.38%,溺水的比例为61.62%
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
sns.set_style('ticks')
train_data['Survived'].value_counts().plot.pie(labels = ['downed','survived'],
explode=(0,0.05),shadow = True,autopct = '%.2f%%',fontsize=15)
plt.show()
#年龄分布情况
# 需求:
# 1、年龄的分布情况
# 2、男性和女性的存活情况
# 3、大人和小孩的存活情况# 结论
# 年龄分布呈现右偏,大部分数据集中在20岁到40岁之间,最小年龄是0.42,最大年龄是80fig,ax = plt.subplots(1,2,figsize=(15,7))
age = train_data[train_data['Age'].notnull()]
age['Age'].hist(bins=50,histtype='bar',edgecolor='k',ax=ax[0])age['Age'].plot.box(showfliers=False, color = {'boxes':'DarkGreen', 'whiskers':'DarkOrange', 'medians':'DarkBlue', 'caps':'Gray'},grid=True,ax=ax[1])
pd.DataFrame(age['Age'].describe()).transpose()
# 需求:按照存活状态分布的年龄情况
# 结论:幸存者的年龄整体比溺水的年龄小,幸存者数据有一个明显的异常值,80岁的幸存者,需要检查一下。import numpy as npplt.figure(figsize=(15, 3))
#显示汉字
plt.rcParams['font.sans-serif'] = ['SimHei']sns.boxplot(y = 'Survived', x = 'Age', data = train_data,palette=["#3f3e6fd1", "#85c6a9"], fliersize = 0, orient = 'h')
#orient:"v"|"h" 用于控制图像使水平还是竖直显示
#fliersize:异常值大小sns.stripplot(y = 'Survived', x = 'Age', data = train_data,linewidth = 0.6, palette=["#3f3e6fd1", "#85c6a9"], orient = 'h')plt.yticks( np.arange(2), ['drowned', 'survived'],fontsize= 15)
plt.title('乘客的年龄分布情况',fontsize= 15)
plt.ylabel('存活状态')
plt.tight_layout()pd.DataFrame(train_data.groupby('Survived').Age.describe())
# 需求:由于有一个异常数据,这里简单修正数据
# 结论:异常值的影响不大,结论仍然是年龄偏小的获救概率较大
train_data.loc[train_data['Age']==80,'Age'] = 48
train_data[train_data['Name']=='Barkworth, Mr. Algernon Henry Wilson']pd.DataFrame(train_data.groupby('Survived').Age.describe())
#男性和女性存活情况
s_sex = train_data[train_data['Survived']==1][['Sex','Survived']].groupby('Sex').count()s_sex.plot.bar(rot=0)print(
'女性存活率为%0.2f%%,男性存活率为%0.2f%%'
%(s_sex.loc['female']/s_sex.sum()*100,s_sex.loc['male']/s_sex.sum()*100))
# 按照不同船舱等级划分: 船舱等级越高,存活者年龄越大,船舱等级1存活年龄集中在20-40岁,船舱等级2/3中有较多低龄乘客存活
# 按照性别划分 : 男性女性存活者年龄主要分布在20-40岁,且均有较多低龄乘客,其中女性存活更多
# 按照不同船舱等级看存活的男女比例: 1、3等舱存活的男性大部分为20到50,2等舱幸存男性年龄偏低
# 年龄与存活的关系
age = train_data[train_data['Age'].notnull()]
s_age = age[age['Survived']==1]fig,ax = plt.subplots(1,3,figsize=(15,5))sns.violinplot(x='Pclass',y='Age',hue='Survived',data = age,split=True,ax=ax[0],grid=True)
ax[0].set_yticks(range(0,110,10))sns.violinplot('Sex','Age',hue='Survived',data=age,split=True,ax=ax[1])
ax[1].set_yticks(range(0,110,10))sns.violinplot('Pclass','Age',hue='Sex',data=s_age,split=True,ax=ax[2])
ax[2].set_yticks(range(0,110,10))plt.tight_layout()
age = train_data[train_data['Age'].notnull()]
age['age_int']=age['Age'].astype(int)
a = age[['Survived','age_int']].groupby('age_int',as_index=False).mean()
#计算均值相当于计算存活率plt.figure(figsize=(15,4))
sns.barplot(x ='age_int',y='Survived',data=a, palette = 'BrBG')
# 结合 SibSp、Parch字段,研究亲人多少与存活的关系
# 要求:
# 1、有无兄弟姐妹/父母子女和存活与否的关系
# 2、亲戚多少与存活与否的关系#计算家庭大小
train_data['family_size']=train_data['SibSp']+train_data['Parch']+1
train_data['family_size'].value_counts()
# 家庭大小与存活的关系
# 有两个大小分别为8和11的大家族,其训练数据集中的所有成员均被淹死。
# 大多数乘客独自旅行,生存率不是很高。
# 在船上有4位家庭成员的人群中,幸存的乘客比例最大。fig = plt.figure(figsize=(12,5))ax1 = fig.add_subplot(121)ax = sns.countplot(train_data['family_size'])
labels = (train_data['family_size'].value_counts())
for i, v in enumerate(labels):ax.text(i, v+6, str(v), horizontalalignment = 'center', size = 10, color = 'black')
plt.ylabel('乘客数')
plt.title('按照家庭数量分布的乘客情况')ax2 = fig.add_subplot(122)a = train_data.groupby('family_size')['Survived'].value_counts(normalize=True).unstack()
a.plot(kind='bar',stacked='True',color=["#3f3e6fd1", "#85c6a9"],rot=0,ax =ax2)
plt.legend(( 'Drowned', 'Survived'), loc=(1.04,0))
plt.title('按照家庭数量分布的存活情况')
plt.tight_layout()
# 结合票的费用情况,研究票价和存活与否的关系
# 要求:
# 1、 票价分布和存活与否的关系
# 2、比较研究生还者和未生还者的票价情况# 票价分布和存活与否的关系
# 结论:生还者的平均票价要大于未生还者的平均票价fig, ax=plt.subplots(1,2,figsize=(15,4))
train_data['Fare'].hist(bins=70, ax = ax[0])
train_data.boxplot(column='Fare', by='Pclass', showfliers=False,ax = ax[1])
# 查看票价分布情况fare_not_survived = train_data['Fare'][train_data['Survived'] == 0]
fare_survived = train_data['Fare'][train_data['Survived'] == 1]
# 基于票价,筛选出生存与否的数据
average_fare = pd.DataFrame([fare_not_survived.mean(),fare_survived.mean()])
std_fare = pd.DataFrame([fare_not_survived.std(),fare_survived.std()])
average_fare.plot(yerr=std_fare,kind='bar',legend=False,figsize = (15,4),grid = True)
# 查看票价与是否生还的关系
plt.tight_layout()
# 结合出发地的情况,研究出发地点与存活的关系
#大多数乘客登上南安普敦。 南安普敦的溺水乘客比例最大。
#从瑟堡出发的乘客,其中50%以上存活(在训练数据集中)。
#皇后镇出发的乘客中,绝大多数是三等舱乘客。fig = plt.figure(figsize = (15,4))ax1 = fig.add_subplot(131)
palette = sns.cubehelix_palette(5, start = 2)
ax = sns.countplot(train_data['Embarked'], palette = palette, order = ['C', 'Q', 'S'], ax = ax1)
plt.title('不同港口出发的乘客分布情况')
plt.ylabel('乘客数')labels = (train_data['Embarked'].value_counts())
labels = labels.sort_index()for i, v in enumerate(labels):ax.text(i, v+10, str(v), horizontalalignment = 'center', size = 10, color = 'black')ax2 = fig.add_subplot(132)
surv_by_emb = train_data.groupby('Embarked')['Survived'].value_counts(normalize = True)
surv_by_emb = surv_by_emb.unstack().sort_index()
surv_by_emb.plot(kind='bar', stacked='True', color=["#3f3e6fd1", "#85c6a9"], ax = ax2)
plt.title('不同港口出发的乘客存活情况')
plt.legend(( 'Drowned', 'Survived'), loc=(1.04,0))
_ = plt.xticks(rotation=False)ax3 = fig.add_subplot(133)
class_by_emb = train_data.groupby('Embarked')['Pclass'].value_counts(normalize = True)
class_by_emb = class_by_emb.unstack().sort_index()
class_by_emb.plot(kind='bar', stacked='True', color = ['#eed4d0', '#cda0aa', '#a2708e'], ax = ax3)
plt.legend(('1st class', '2nd class', '3rd class'), loc=(1.04,0))
plt.title('不同港口出发的乘客的船舱等级分布')
_ = plt.xticks(rotation=False)plt.tight_layout()
总结:
我们知道泰坦尼克号上没有足够的船只可供所有乘客撤离。 在研究了有关乘客的信息之后,我们可以对谁在沉船事故中有更好的生存机会以及对乘客的
一般观察做出一些假设。
1、数据集中有891名乘客,其中有549名(61.6%)被淹,只有342名(38.4%)幸存。 但是我们知道,救生艇(16艘木质救生艇和4辆可折叠救生艇)
可以载运总乘客的53%。
2、所有乘客的年龄从0.17年到80岁不等,平均为29.88岁。 幸存乘客的平均年龄为28.23,比溺水乘客的平均年龄(仅我们知道幸存者的年龄)小2.39。
看起来年轻人有更大的生存机会。
3、船上的家庭人数似乎也对生存机会有影响:有两个大家庭,分别为8和11,他们来自训练数据集的所有成员都被淹死了。 我们可以观察到,拥有2人,
3人,4人家庭的幸存者所占百分比大于单身人士,然后,随着家庭规模的增加,幸存者所占的百分比会降低。
4、泰坦尼克号的大部分乘客都是三等舱。 就乘客人数而言,第二类是最小的。 尽管有先前确定的先决条件(平均而言,老年人死亡的可能性更高,
并且头等舱的平均年龄比其他舱位更高。而且,由100%头等舱组成的A层乘客的 溺水乘客的比例很高),头等舱的幸存者人数最多,而舱内幸存者的
比例最大。
5、三等舱机票的溺水乘客人数最多。但是,大多数头等舱的男性乘客被淹死,而女性几乎全部幸存下来。 三等舱,一半的女性得以幸存。
6、船上的男性总体上比女性多,这对每个舱位来说都是公平的,但是在三等舱中,男性的数量是女性的两倍多。
7、几乎有600名男性旅客没有家庭成员,只有200名女性,但是在普通家庭和大家庭中,女性旅客略多。
8、大多数乘客(914)登上南安普敦。 此外,南安普敦的溺水乘客比例最大。 270名乘客登上瑟堡,其中50%以上幸存下来(在培训数据集中)。
皇后镇(Queenstown)出发的旅客有123人,其中绝大多数是三等舱旅客。
9、泰坦尼克号幸存者分析是机器学习的入门案例,我做了一点资料的查询发现有一些是数据无法体现的,不得不说单从数据的角度还原当时情况
实在有很多不妥的地方,原因有以下几点:
(1)三等舱乘客中相当一部分是不懂英语的,看不懂路标指示,听不懂船员的指令。这一因素与社会地位无关。
(2)爱德华·约翰·史密斯船长在最后时刻下令“妇孺优先”,但是大副、二副对该命令的执行是不一致的,右舷大副默多克认为如果甲板上没有
女士儿童了,只要还有空位,男性乘客也可以登艇。所以从右舷放下的九艘救生艇上都有男性乘客,救生艇的乘坐率也比较高,其中有三艘满员。
而在左舷的二副莱托勒则把“女士和儿童优先”理解为“全船的女士和儿童都应当先于男性乘客登艇”。所以,左舷的救生艇其实是
“仅限女士和儿童”。从左舷放下的九艘救生艇中,只有三艘乘坐率略超过六成。
(3)考察头等舱幸存男性,他们主要集中右舷最早放下的三艘救生艇中,第一艘救生艇,一半座位是空的,一半乘客是男性,主要原因是一开始多数人
都没有认识到被认为“永不沉没”的铁达尼所面临的的危险。第二艘、第三艘救生艇男性乘客也占了近三分之一。还有一个原因是,右舷的救生艇位置
距离头等舱近。
(4)有少部分人主动放弃等艇机会,这样行为无疑闪烁着人性光辉。
所以单从数据的角度得出的结论显然不足以说明当时的情况。电影《萨利机长》中,计算机的模拟还原的情况是飞机完全可以不必迫降在河面,
也是数字还原结果与现实的不符。所以只知道分析数据的分析师不是好的分析师,结合对业务的理解才是关键,数据是辅助。
相关文章:
kaggle上经典泰坦尼克项目数据分析探索
之前了解在kaggle上这个项目很火,最近想要加强一下python数据分析,所以在kaggle上找到这个项目进行学习探索,下面是将一些学习资料以及过程整理出来。 一、首先我们了解一下项目背景以及如何找到这个项目。 kaggle项目地址: https://www.k…...
【深度学习】多目标融合算法(五):定制门控网络CGC(Customized Gate Control)
目录 一、引言 二、CGC(Customized Gate Control,定制门控网络) 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一、引言 上一…...
Ubuntu上查看GPU使用情况并释放内存
先用nvidia-smi查看GPU当前使用情况 再用fuser 命令查找对应显卡上占用 GPU 的进程 最后查到了用kill -9强制杀掉进程(PID)即可...
大数据学习栈记——HBase安装
本文介绍大数据技术中流行的非关系型数据库HBase的安装,操作系统:Ubuntu24.04 安装Zookeeper 安装HBase前需要先安装Zookeeper,HBase使用Zookeeper作为其分布式协同服务,存储了HBase集群的元数据信息,并提供了分布式…...
[入门]NUC13配置Ubuntu20.04详细步骤
文章目录 1. 安装Ubuntu20.041.1 制作系统启动盘1.1.1 下载镜像文件1.1.2 配置启动盘 1.2 安装内存条、硬盘1.3 安装系统 2. 网卡驱动配置2.1 关闭安全启动2.2 安装intel官方网卡驱动backport2.2.1 第四步可能会出现问题 2.3 ubuntu官方的驱动2.4 重启 3. 软件安装3.1 录屏软件…...
【实战指南】用MongoDB存储文档和图片等大文件(Java实现)
一、前言 在现代应用开发中,经常需要处理和存储大量的文档、图片等大文件。传统的关系型数据库在处理这类大文件时,往往会面临性能瓶颈、存储成本高等问题。而 MongoDB 作为一款流行的 NoSQL 数据库,提供了 GridFS 规范,能够很好地解决大文件存储的问题。GridFS 可以将大文…...
使用Gitee Go流水线部署个人项目到服务器指南
使用Gitee Go流水线部署个人项目到服务器指南 前言!!! 本文解决的问题: 你有一台ECS服务器,你在上面部署了一个Java服务也就是一个jar,你觉着你每次手动本地打包,上传,在通过命令去…...
使用Three.js渲染器创建炫酷3D场景
引言 在当今数字化的时代,3D图形技术正以其独特的魅力在各个领域掀起波澜。从影视制作到游戏开发,从虚拟现实到网页交互,3D场景以其强烈的视觉冲击力和沉浸式的体验,成为了吸引用户、传达信息的重要手段。而Three.js,…...
Spring Boot 集成 Elasticsearch怎样在不启动es的情况下正常启动服务
解释 在spingboot 集成es客户端后,每当服务启动时,服务默认都会查看es中是否已经创建了对应的索引,如果没有索引则创建。基于上面的规则我们可以通过配置不自动创建索引来达到在没有es服务的情况下正常启动服务。 解决办法 在entity类的Docu…...
明远智睿SD2351核心板:多接口融合,破解边缘计算难题
在边缘计算领域,明讯智睿SD2351核心板凭借丰富的接口资源与异构计算架构,成为工业网关与智能终端的理想选择。硬件配置升级 :处理器:四核Cortex-A35,256KB L2缓存,动态调频降低功耗;存储性能:emMC 5.0 HS400模式读写速度提升40%&a…...
xampp安装教程与配置
一、安装 XAMPP (一)下载 访问官网:打开浏览器,访问 XAMPP 官方网站(https://www.apachefriends.org/zh_cn/index.html)。 选择版本:根据你的操作系统(Windows、macOS 或 Linux&am…...
设计模式之单例模式(Singleton Pattern)
单例模式(Singleton Pattern)是一种常用的设计模式,确保一个类只有一个实例,并提供一个全局访问点。单例模式在许多场景中非常有用,例如配置管理、日志记录、线程池等。 ### **1. 单例模式的特点** 1. **唯一实例**&a…...
Androidstudio实现引导页文字动画
文章目录 1. 功能需求2. 代码实现过程1. 编写布局文件2. 实现引导页GuideActivity 3. 总结4. 效果演示5. 关于作者其它项目视频教程介绍 1. 功能需求 1、引导页具有两行文字(“疫情在前”和“共克时艰”),和向上的 图标。 2、进入【引导页】…...
【linux】线程概念与控制
引言 当现代CPU的晶体管密度逼近物理极限,多核架构已成为突破性能瓶颈的必由之路。在这个计算密集型任务与异步IO需求并行的时代,多线程编程不再是可选项,而是开发者必须掌握的核心技能。Linux作为承载着全球90%云计算负载的操作系统…...
Cesium 自定义路径导航材质
cesium 自定义路径导航纹理图片随便更换,UI 提供设计图片即可达到效果; 打开小马的weix 关注下 搜索“技术链” 回复关键词《《路径》》获取原始代码; 拿到就能用轻松解决!帮忙点个关注吧!...
用 pytorch 从零开始创建大语言模型(五):预训练无标注数据
用 pytorch 从零开始创建大语言模型(五):预训练无标注数据 5 预训练无标注数据5.1 评估文本生成模型5.1.1 使用 GPT 生成文本5.1.2 计算文本生成损失5.1.3 计算训练集和验证集的损失 5.2 训练 LLM5.3 解码策略以控制随机性5.3.1 温度缩放&am…...
[AI速读]混合验证方案:如何高效解决RISC-V向量扩展的验证难题
RISC-V作为一种开源指令集架构,近年来在AI和高性能计算领域备受关注。其向量扩展(RVV)为处理并行数据提供了强大的支持,但复杂的异常处理和冒险检测机制也带来了验证上的巨大挑战。本文将结合一篇技术论文,解析一种混合验证方案,帮助开发者更高效地解决RVV的验证问题。 一…...
模型空间、图纸空间、布局(Layout)之间联系——CAD c#二次开发
在 AutoCAD 的二次开发中,**模型空间(Model Space)**、**图纸空间(Paper Space)** 和 **布局(Layout)** 是三个核心概念,它们的关系及开发中的操作逻辑如下: --- 1. 模…...
Linux 日常开发常用命令(解释-全)
帮助类 #查看cd命令的帮助信息 [rootcentos100 ~] help cd # 查看网卡配置信息 [rootcentos100 ~] ifconfig # 检测到目标主机是否连接正常 [rootcentos100 ~] ping IP地址[rootcentos100 ~] ssh [-p port] userremote #远程登录user 是在远程机器上的用户名,如果…...
数据库监控:确保业务连续性和用户体验
在数字化时代,数据库作为企业的数据心脏,其重要性不言而喻。无论是交易系统、客户关系管理系统,还是数据分析平台,都离不开数据库的支撑。然而,数据库的运行状态和性能直接影响着企业的业务连续性和用户体验。因此&…...
Java面试黄金宝典9
1. Redis 持久化机制 Redis 提供了两种主要的持久化机制:RDB(Redis Database)和 AOF(Append Only File),下面对这两种机制进行详细介绍。 RDB(Redis Database) 原理:RDB …...
【C#】WinForm自定义控件及窗体
前言 WinForm(Windows Forms)是Microsoft.NET框架中的技术,用于开发Windows桌面应用程序。它提供了一套丰富的控件和组件。通过拖放控件、编写事件处理程序等方式快速构建用户界面。 通过属性窗口定制这些控件的外观和行为。 通过数据绑定&am…...
VideoHelper 油猴脚本,重塑你的视频观看体验
VideoHelper 油猴脚本,重塑你的视频观看体验 在日常上网看视频时,你是否也被这些问题困扰:视频网站开头的广告又臭又长,找个合适的播放倍速要在一堆选项里翻半天,每次手动调音量、点全屏按钮繁琐又影响沉浸感…...
从收藏夹到知识图谱:书签管理器如何重塑你的信息获取方式?
在信息爆炸的今天,浏览器收藏夹早已沦为 “数字垃圾堆”—— 杂乱无章的网址、重复的标签、过期的链接,不仅降低效率,更成为信息焦虑的源头。智能书签管理器通过AI分类、跨平台同步、隐私保护等黑科技,重塑您的数字生活方式。书签…...
SOFABoot-07-版本查看
前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…...
[极客大挑战 2019]Http_3.19BUUCTF练习day3(1)
BUUCTF练习day3(1)_[极客大挑战 2019]Http 打开靶场,查看源码(如果在做题时没有什么发现就查看源码) 打开Secret.php提示没有来自https://Sycsecret.buuoj.cn 添加Referer头为https://Sycsecret.buuoj.cn(提示说我们没有来自那个网址,那我们…...
golang Error的一些坑
golang Error的一些坑 golang error的设计可能是被人吐槽最多的golang设计了。 最经典的err!nil只影响代码风格设计,而有一些坑会导致我们的程序发生一些与我们预期不符的问题,开发过程中需要注意。 errors.Is判断error是否Wrap不符合预期 …...
弱网测试:全链路实战、高阶策略与自动化落地
在移动互联网时代,网络环境的不确定性成为用户体验的“隐形杀手”。弱网测试不仅是质量保障的必备环节,更是提升用户留存率和业务转化率的战略手段。 本文将从 工具链深度配置、复杂场景模拟、性能优化底层逻辑 和 自动化流水线集成 四个维度,彻底解析弱网测试的完整方法论…...
Ubuntu检查并启用 Nginx 的stream模块或重新安装支持stream模块的Nginx
stream 模块允许 Nginx 处理 TCP 和 UDP 流量,常用于负载均衡和端口转发等场景。本文将详细介绍如何检查 Nginx 是否支持 stream 模块,以及在需要时如何启用该模块。 1. 检查 Nginx 是否支持 stream 模块 首先,需要确认当前安装的 Nginx 是…...
mac brew 安装的php@7.4 打开redis扩展
1. 找到php7.4的pecl目录 一般在这个位置 cd /usr/local/Cellar/php7.4/7.4.33_8/pecl/20190902 ls 一下 有个 redis.so 于是 直接去php.ini编辑了 php.ini的路径 vim /usr/local/etc/php/7.4/php.ini 把938行添加进去 然后重启一下 php7.4 brew services restart ph…...
Redis 内存管理
Redis 内存管理 1. Redis 给缓存数据设置过期时间的作用 给缓存数据设置过期时间(TTL, Time-To-Live)有以下几个重要作用: (1) 自动释放内存 避免缓存数据无限增长,导致 Redis 内存溢出。例如,在 会话管理、短连接…...
学习CSS滤镜属性 `filter: invert()`
一、核心机制 数学原理 invert(1) 对每个像素的RGB通道执行 颜色反相计算: 新通道值 255 - 原通道值 例如 rgb(255,0,0)(纯红)会转换为 rgb(0,255,255)(青色)。 透明度处理 该滤镜会保留元素的Alpha通道(…...
网络空间安全专业发展历程及开设院校
一、专业发展历程 1. 早期探索阶段(1990年代末—2000年代初) (1)背景: 1990年代互联网进入中国,计算机病毒、黑客攻击等问题逐渐显现,社会对信息安全人才的需求开始萌芽。 (2&…...
Linux中mutex机制
在Linux中,mutex是一种用于多线程编程的同步机制,用于保护共享资源,防止多个线程同时访问或修改这些资源,从而避免竞态条件的发生。mutex 是“mutual exclusion”的缩写,意为“互斥”。 1. Mutex 的基本概念 互斥锁&…...
Web网页
1.结构与表现分离 HTML用于结构 css用于表现,增加了丰富的样式效果,极大满足了开发者的需求 选择器;用于指定css样式作用的html对象{}选择某个属性 p标签 color;本颜色 font-size:子属性 字大小 font-family;字体 font-…...
Redis 在windows下的下载安装与配置
参考链接:https://developer.aliyun.com/article/1395346 下载 Redis 访问 Redis 下载地址:https://github.com/tporadowski/redis/releases 下载 Redis 时,你可以选择 ZIP 包或 MSI 安装: ZIP包:需要手动解压、初始化、配置和…...
基于随机森林回归预测葡萄酒质量
基于随机森林回归预测葡萄酒质量 1.作者介绍2.随机森林算法与数据集介绍2.1定义2.2核心思想2.3主要步骤2.4数据集介绍 3.算法实现3.1数据加载与探索3.2数据可视化3.3数据预处理(标准化、划分训练/测试集)3.4模型训练与优化(随机森林回归 超参…...
在大数据开发中ETL是指什么?
hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济时代,数据已成为企业最核心的资产。然而,分散在业务系统、日志文件…...
Centos操作系统安装及优化
Centos操作系统安装及优化 零、环境概述 主机名 centos版本 cpu 内存 Vmware版本 ip地址 test CentOS Linux release 7.6.1810 (Core) 2C 2G 15.5.1 10.0.0.10 一、介质下载 1、7.6版本下载 CentOS7.6标准版下载链接: https://archive.kernel.org/centos-vault/7.6.1810/i…...
2025年03月10日人慧前端面试(外包滴滴)
目录 普通函数和箭头函数的区别loader 和 plugin 的区别webpack 怎么实现分包,为什么要分包webpack 的构建流程变量提升react 开发中遇到过什么问题什么是闭包vue 开发中遇到过什么问题vue中的 dep 和 watcher 的依赖收集是什么阶段什么是原型链react setState 是同…...
NLP高频面试题(十)——目前常见的几种大模型架构是啥样的
深入浅出:目前常见的几种大模型架构解析 随着Transformer模型的提出与发展,语言大模型迅速崛起,已经成为人工智能领域最为关注的热点之一。本文将为大家详细解析几种目前常见的大模型架构,帮助读者理解其核心差异及适用场景。 1…...
【数据结构】栈(Stack)、队列(Queue)、双端队列(Deque) —— 有码有图有真相
目录 栈和队列 1. 栈(Stack) 1.1 概念 1.2 栈的使用(原始方法) 1.3 栈的模拟实现 【小结】 2. 栈的应用场景 1、改变元素的序列 2、将递归转化为循环 3、逆波兰表达式求值 4、括号匹配 5、出栈入栈次序匹配 6、最小栈…...
windows清除电脑开机密码,可保留原本的系统和资料,不重装系统
前言 很久的一台电脑没有使用了,开机密码忘了,进不去系统 方法 1.将一个闲置u盘设置成pe盘(注意,这个操作会清空原来u盘的数据,需要在配置前将重要数据转移走,数据无价,别因为配置这个丢了重…...
NLP高频面试题(九)——大模型常见的几种解码方案
大模型常见的几种解码方案 在自然语言生成任务中,如何从模型生成的概率分布中选择合适的词汇,是影响文本质量的关键问题。常见的解码方法包括贪心搜索(Greedy Search)、束搜索(Beam Search)、随机采样&…...
「低延迟+快速集成:Amazon IVS如何重塑实时互动视频体验?」
引言:实时视频的爆发与开发痛点 随着直播电商、在线教育、云游戏的兴起,实时视频互动成为用户体验的核心。但自建视频服务面临高成本、高延迟、运维复杂等挑战。Amazon IVS(Interactive Video Service)作为亚马逊云科技推出的全托…...
JVM垃圾回收笔记02-垃圾回收器
文章目录 前言1.串行(Serial 收集器/Serial Old 收集器)Serial 收集器Serial Old 收集器相关参数-XX:UseSerialGC 2.吞吐量优先(Parallel Scavenge 收集器/Parallel Old 收集器)Parallel Scavenge 收集器Parallel Old 收集器相关参数-XX:UseParallelGC ~ -XX:UseParallelOldGC-…...
Agent Team 多智能体系统解析
引言 在人工智能技术高速发展的今天,"多智能体协作系统"(Agent Team)正成为突破效率瓶颈的关键技术。与传统的单体AI不同,这种由多个专业化智能体组成的协同网络,通过分工协作和动态调整,展现出…...
LintCode第1712题 - 和相同的二元子数组
描述 在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组 样例 1: 输入:A [1,0,1,0,1], S 2 输出:4 解释: 如下面黑体所示,有 4 个满足题目要求的子数组: [1,0,1] [1,0,1] [1,0,1,0] [0,1,…...
网络HTTPS协议
Https HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 协议的加密版本,它使用 SSL/TLS 协议来加密客户端和服务器之间的通信。具体来说: • 加密通信:在用户请求访问一个 HTTPS 网站时,客户端&#x…...
0322-数据库、前后端
前端 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here</title> <script srcjs/jquery-3.7.1.min.js></script> <script> //jquaryajax发起请求 //传参形式不同 post用data{}…...