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

【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析

  • 一、引言
  • 二、数据加载介绍
    • 2.1 导入必要的库
    • 2.2 读取数据
    • 2.3 数据探索
  • 三、数据预处理
  • 四、可视化分析
    • 4.1 城市犯罪计数统计
    • 4.2 不同犯罪领域的案件持续时间
    • 4.3 不同犯罪领域的警力部署
    • 4.4 犯罪类型的分布情况
    • 4.5 受害者性别分布
    • 4.6 各城市犯罪领域分布
    • 4.7 各种武器在犯罪类型里使用的频率
    • 4.8 受害者各年龄数量分布
    • 4.9 不同年龄区间的受害者数量
  • 总结

一、引言

  在当今社会,犯罪数据的分析对于理解犯罪模式、优化警力部署和提升公共安全具有重要意义。本文将利用 Python 的 pyecharts 库对 2020 年至 2024 年印度多个城市的犯罪数据进行可视化分析,涵盖多个关键维度。

二、数据加载介绍

2.1 导入必要的库

  首先,我们需要导入必要的Python库,包括pandas和pyecharts。

import pandas as pd
from datetime import datetime
from pyecharts.charts import Bar, Line, Pie, Scatter, Map, Grid, Tab
from pyecharts import options as opts
from pyecharts.globals import ThemeType

2.2 读取数据

  假设我们的数据集保存在一个CSV文件中,名为india_crime.csv。

data = pd.read_csv('india_crime_data.csv')

2.3 数据探索

  数据维度情况:

  数据的部分展示:

  查看数据简要概述信息:

  • Report Number - 报告编号
  • Date Reported - 报告日期
  • Date of Occurrence - 发生日期
  • Time of Occurrence - 发生时间
  • City - 城市
  • Crime Code - 犯罪代码
  • Crime Description - 犯罪描述
  • Victim Age - 受害者年龄
  • Victim Gender - 受害者性别
  • Weapon Used - 使用武器
  • Crime Domain - 犯罪领域
  • Police Deployed - 警力部署
  • Case Closed - 案件结案
  • Date Case Closed - 结案日期

  数据种缺失值情况:

三、数据预处理

  在进行可视化之前,我们需要对数据进行一些预处理,包括数据清洗、字段转换等。

# 转换日期字段
df['Date Reported'] = pd.to_datetime(df['Date Reported'])
df['Date of Occurrence'] = pd.to_datetime(df['Date of Occurrence'])
df['Date Case Closed'] = pd.to_datetime(df['Date Case Closed'], errors='coerce')
df['Time of Occurrence'] = pd.to_datetime(df['Time of Occurrence'], dayfirst=True)

  缺失值处理,使用’2020-01-01’来填充’Date Case Closed’字段种的缺失值。

df['Date Case Closed'] = df['Date Case Closed'].fillna(pd.to_datetime('2020-01-01'))

四、可视化分析

4.1 城市犯罪计数统计

  统计每个城市的犯罪数量,了解犯罪高发地区。

# 城市犯罪计数统计
city_crime_count = df['City'].value_counts().reset_index()
city_crime_count.columns = ['City', 'Crime Count']
city_crime_count = city_crime_count.sort_values(by='Crime Count')bar = (Bar(init_opts=opts.InitOpts(theme='dark',width='1000px', height='600px')).add_xaxis(city_crime_count['City'].tolist()).add_yaxis("", city_crime_count['Crime Count'].tolist()).set_series_opts(label_opts=opts.LabelOpts(is_show=True),     #True,显示柱状图上的数字).set_global_opts(title_opts=opts.TitleOpts(title="城市犯罪计数统计",subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_left="center"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=30)),  #legend_opts=opts.LegendOpts(is_show=True),visualmap_opts=opts.VisualMapOpts(is_show=False,pos_top='60%',pos_left='40%',range_color=["green", "yellow", "red", "pink", "orange", "purple"])).reversal_axis())
bar.render("city_crime_count.html")
bar.render_notebook()

4.2 不同犯罪领域的案件持续时间

  计算不同犯罪领域的案件平均持续时间。

# 不同犯罪领域的案件持续时间
df['Case Duration'] = (df['Date Case Closed'] - df['Date of Occurrence']).dt.days
df['Case Duration'] = df['Case Duration'].fillna(df['Case Duration'].median())crime_domain_duration = df.groupby('Crime Domain')['Case Duration'].mean().reset_index()
crime_domain_duration.columns = ['Crime Domain', 'Average Duration']c = (Bar(init_opts=opts.InitOpts(theme='dark',width='1000px', height='600px')).add_xaxis(crime_domain_duration['Crime Domain'].tolist()).add_yaxis("", crime_domain_duration['Average Duration'].round(2).tolist()).set_series_opts(label_opts=opts.LabelOpts(is_show=True),     #True,显示柱状图上的数字).set_global_opts(title_opts=opts.TitleOpts(title="不同犯罪领域的案件持续时间",subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_left="center"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=30)),  #legend_opts=opts.LegendOpts(is_show=True),visualmap_opts=opts.VisualMapOpts(is_show=False,pos_top='60%',pos_left='40%',range_color=["pink"])))
c.render("crime_domain_duration.html")
c.render_notebook()

4.3 不同犯罪领域的警力部署

  分析不同犯罪领域所需的警力部署情况。

categories = df['Crime Domain'].unique().tolist()box_data = []
for category in categories:group = df[df['Crime Domain'] == category]['Police Deployed']box_data.append(group.tolist())  # 注意:这不是标准的箱线图数据格式!c = (Boxplot(init_opts=opts.InitOpts(theme='dark',width='1000px', height='600px')).add_xaxis(categories).add_yaxis("", Boxplot.prepare_data(box_data)).set_series_opts(label_opts=opts.LabelOpts(is_show=True),     #True,显示柱状图上的数字).set_global_opts(title_opts=opts.TitleOpts(title="不同犯罪领域的警力部署",subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_left="center"),xaxis_opts=opts.AxisOpts(type_="category", name="区域", axislabel_opts=opts.LabelOpts(rotate=-15)),yaxis_opts=opts.AxisOpts(type_="value", name="警力部署"),datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],visualmap_opts=opts.VisualMapOpts(is_show=False,pos_top='60%',pos_left='40%',range_color=["yellow"]))
)c.render("crime_domain_police.html")
c.render_notebook()

4.4 犯罪类型的分布情况

  分析不同犯罪类型的分布情况。

# 颜色分布
color_counts = df['Crime Description'].value_counts()
# 生成饼图数据
color_data = [(color, count) for color, count in color_counts.items()]# 创建饼图
pie_chart = (Pie(init_opts=opts.InitOpts(theme='dark',width='1200px', height='600px')).add("", color_data)# .set_colors(colors)  # 使用颜色映射列表.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).set_global_opts(title_opts=opts.TitleOpts(title='犯罪类型的分布情况',subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_top='0%',pos_left="center",title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=15)),# visualmap_opts=opts.VisualMapOpts(#     is_show=False,#     max_=600,#     pos_top='70%',#     pos_left='20%',#     range_color=["green", "yellow", "red", "pink", "orange"]# ),legend_opts=opts.LegendOpts(is_show=True, pos_right="0%", pos_top="5%",orient="vertical"),)
)
pie_chart.render("pie_set_color.html")
# 渲染图形
pie_chart.render_notebook()

4.5 受害者性别分布

  分析受害者的性别分布情况。

# 受害者性别分布
gender_distribution = df['Victim Gender'].value_counts()
gender_distribution  = [(color, count) for color, count in gender_distribution.items()]# 创建饼图
pie_chart = (Pie(init_opts=opts.InitOpts(theme='dark',width='1000px', height='600px')).add("", gender_distribution)# .set_colors(colors)  # 使用颜色映射列表.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).set_global_opts(title_opts=opts.TitleOpts(title='受害者性别分布',subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_top='0%',pos_left="center",title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=15)),legend_opts=opts.LegendOpts(is_show=True, pos_right="10%", pos_top="40%",orient="vertical"),)
)
pie_chart.render("gender_distribution.html")
# 渲染图形
pie_chart.render_notebook()

4.6 各城市犯罪领域分布

  分析各城市的犯罪领域分布情况。

from pyecharts.charts import HeatMapcity_domain_distribution = df.groupby(['City', 'Crime Domain']).size().unstack().fillna(0).reset_index()
city_domain_distribution = city_domain_distribution.melt(id_vars='City', var_name='Crime Domain', value_name='Count')FA = city_domain_distribution[city_domain_distribution['Crime Domain'] == 'Fire Accident'][['City','Count']]
OC = city_domain_distribution[city_domain_distribution['Crime Domain'] == 'Other Crime'][['City','Count']]
TF = city_domain_distribution[city_domain_distribution['Crime Domain'] == 'Traffic Fatality'][['City','Count']]
VC = city_domain_distribution[city_domain_distribution['Crime Domain'] == 'Violent Crime'][['City','Count']]data = FA.merge(OC,how='left',on='City',suffixes=('_df1', '_df2'))
data = data.merge(TF,how='left',on='City',suffixes=('', '_df3'))
data = data.merge(VC,how='left',on='City',suffixes=('', '_df4'))
data.columns = ['City','Fire Accident','Other Crime','Traffic Fatality','Violent Crime']# 创建堆叠柱状图
bar = (Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))  # 使用明亮的主题.add_xaxis(data['City'].tolist()).add_yaxis('Fire Accident', data['Fire Accident'].tolist(), stack='stack1', color='blue', label_opts=opts.LabelOpts(is_show=False)).add_yaxis('Other Crime', data['Other Crime'].tolist(), stack='stack1', color='green', label_opts=opts.LabelOpts(is_show=False)).add_yaxis('Traffic Fatality', data['Traffic Fatality'].tolist(), stack='stack1', color='orange', label_opts=opts.LabelOpts(is_show=False)).add_yaxis('Violent Crime', data['Violent Crime'].tolist(), stack='stack1', color='red', label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title='各城市犯罪领域分布',subtitle="""--公众号:NLP随手记  CSDN:云天徽上--""",pos_left="center"),xaxis_opts=opts.AxisOpts(name='城市', axislabel_opts=opts.LabelOpts(rotate=45)),yaxis_opts=opts.AxisOpts(name='犯罪数'),datazoom_opts=opts.DataZoomOpts(),  # 添加滑动条功能legend_opts=opts.LegendOpts(is_show=True, pos_right="-5%", pos_top="40%",orient="vertical"),# toolbox_opts=opts.ToolboxOpts(is_show=True)  # 启用工具箱)
)bar.render("city_domain_distribution.html")
bar.render_notebook()

4.7 各种武器在犯罪类型里使用的频率

  分析不同犯罪类型中各种武器的使用频率。

# 各种武器在犯罪类型里使用的频率
weapon_crime_distribution = df.groupby(['Crime Description', 'Weapon Used']).size().unstack().fillna(0).reset_index()
weapon_crime_distribution = weapon_crime_distribution.melt(id_vars='Crime Description', var_name='Weapon Used', value_name='Count')Blunt  = weapon_crime_distribution[weapon_crime_distribution['Weapon Used']=='Blunt Object'].set_index('Crime Description')['Count'].to_dict()
Explosives = weapon_crime_distribution[weapon_crime_distribution['Weapon Used']=='Explosives'].set_index('Crime Description')['Count'].to_dict()
Firearm  = weapon_crime_distribution[weapon_crime_distribution['Weapon Used']=='Firearm'].set_index('Crime Description')['Count'].to_dict()
Knife  = weapon_crime_distribution[weapon_crime_distribution['Weapon Used']=='Knife'].set_index('Crime Description')['Count'].to_dict()
Poison  = weapon_crime_distribution[weapon_crime_distribution['Weapon Used']=='Poison'].set_index('Crime Description')['Count'].to_dict()
None1  = weapon_crime_distribution[weapon_crime_distribution['Weapon Used']=='None'].set_index('Crime Description')['Count'].to_dict()
Other  = weapon_crime_distribution[weapon_crime_distribution['Weapon Used']=='Other'].set_index('Crime Description')['Count'].to_dict()Blunt_list = [[key, value] for key, value in Blunt.items()]
Explosives_list = [[key, value] for key, value in Explosives.items()]
Firearm_list = [[key, value] for key, value in Firearm.items()]
Knife_list = [[key, value] for key, value in Knife.items()]
Poison_list = [[key, value] for key, value in Poison.items()]
None1_list = [[key, value] for key, value in None1.items()]
Other_list = [[key, value] for key, value in Other.items()]c = (Pie(init_opts=opts.InitOpts(theme='dark',width='1400px', height='700px')).add("",Blunt_list,   # 两个值radius=["15%", "20%"],  # 大小center=["10%", "20%"],  # 位置rosetype="radius",   label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据).add("",Explosives_list,   # 两个值radius=["15%", "20%"],  # 大小center=["40%", "20%"],  # 位置rosetype="radius",   label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据).add("",Firearm_list,   # 两个值radius=["15%", "20%"],  # 大小center=["70%", "20%"],  # 位置rosetype="radius",   label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据).add("",Knife_list,   # 两个值radius=["15%", "20%"],  # 大小center=["10%", "50%"],  # 位置rosetype="radius",   label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据).add("",Poison_list,   # 两个值radius=["15%", "20%"],  # 大小center=["40%", "50%"],  # 位置rosetype="radius",   label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据).add("",None1_list,   # 两个值radius=["15%", "20%"],  # 大小center=["70%", "50%"],  # 位置rosetype="radius",   label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据).add("",Other_list,   # 两个值radius=["15%", "20%"],  # 大小center=["40%", "80%"],  # 位置rosetype="radius",   label_opts=opts.LabelOpts(is_show=False),  # 不在图形上显示数据).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).set_global_opts(title_opts=opts.TitleOpts(title='各种武器在犯罪类型里使用的频率',subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_top='0%',pos_left="center",title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=15)),legend_opts=opts.LegendOpts(is_show=True, pos_right="0%", pos_top="20%",orient="vertical"),)
)c.render("weapon_domain_distribution.html")
c.render_notebook()

4.8 受害者各年龄数量分布

  分析受害者年龄的分布情况。

age_distribution = df['Victim Age'].value_counts().reset_index()
age_distribution.columns = ['Age', 'Count']
age_distribution = age_distribution.sort_values(by='Age')# 创建散点图
scatter = (Scatter(init_opts=opts.InitOpts(theme='dark',width='1000px', height='600px')).add_xaxis(age_distribution['Age'].tolist()).add_yaxis("", age_distribution['Count'].tolist(), symbol_size=10,label_opts=opts.LabelOpts(is_show=False),itemstyle_opts=opts.ItemStyleOpts(color="skyblue", opacity=0.6))  # 设置散点大小.set_global_opts(title_opts=opts.TitleOpts(title='受害者性别分布',subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_top='0%',pos_left="center",title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=15)),xaxis_opts=opts.AxisOpts(type_="category", name="受害者年龄",boundary_gap=False,max_=82),yaxis_opts=opts.AxisOpts(type_="value", name="数量",max_=max(age_distribution['Count'].tolist())+30, min_=min(age_distribution['Count'].tolist())-30),visualmap_opts=opts.VisualMapOpts(type_="size",is_show=False,pos_top='60%',pos_left='40%',range_color=["purple"],max_=max(age_distribution['Count'].tolist()),min_=min(age_distribution['Count'].tolist())),# visualmap_opts=opts.VisualMapOpts(type_="size"),  # 根据数量设置散点大小tooltip_opts=opts.TooltipOpts(formatter="{b}: {c}"),  # 鼠标悬停提示)
)scatter.render("age_distribution.html")
scatter.render_notebook()

4.9 不同年龄区间的受害者数量

  分析不同年龄区间的受害者数量分布情况。

bins = [0, 17, 24, 34, 44, 54, 64, 74, 84, 94, 1000]
labels = ['0-17', '18-24', '25-34', '35-44', '45-54', '55-64', '65-74', '75-84', '85-94', '95+']
df['Age Group'] = pd.cut(df['Victim Age'], bins=bins, labels=labels, right=True)
# 将 Age Group 转换为有序类别
df['Age Group'] = pd.Categorical(df['Age Group'], categories=labels, ordered=True)
# 计算每个年龄区间的数量
vic_age = df['Age Group'].value_counts()gender_distribution  = [(color, count) for color, count in vic_age.items()]# 创建饼图
pie_chart = (Pie(init_opts=opts.InitOpts(theme='dark',width='1000px', height='600px')).add("", gender_distribution)# .set_colors(colors)  # 使用颜色映射列表.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).set_global_opts(title_opts=opts.TitleOpts(title='不同年龄区间的受害者数量分布',subtitle="""--公众号:NLP随手记, CSDN:云天徽上--""",pos_top='0%',pos_left="center",title_textstyle_opts=opts.TextStyleOpts(color='#228be6',font_size=15)),legend_opts=opts.LegendOpts(is_show=True, pos_right="10%", pos_top="40%",orient="vertical"),)
)
pie_chart.render("age_group_distribution.html")
# 渲染图形
pie_chart.render_notebook()

总结

  以上代码实现了对印度犯罪数据的10个关键维度的可视化分析。通过 pyecharts,我们能够直观地展示城市犯罪数量、犯罪领域、警力部署、受害者特征等多方面的信息。这些可视化图表可以帮助研究人员、政策制定者和执法机构更好地理解犯罪模式,从而制定更有效的公共安全策略。

相关文章:

【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

thingboard告警信息格式美化

原始报警json内容: { "severity": "CRITICAL","acknowledged": false,"cleared": false,"assigneeId": null,"startTs": 1739801102349,"endTs": 1739801102349,"ackTs": 0,&quo…...

Javaweb中,使用Servlet编写简单的接口

案例:网页提交用户名和密码信息,后端校验密码长度需在6-12位之间 后端部分 WebServlet("/valid") public class SimpleServlet extends HttpServlet{public void service(HttpServletRequest req, HttpServletResponse resp) throws IOExcepti…...

三层渗透测试-DMZ区域 二三层设备区域

DMZ区域渗透 信息收集 首先先进行信息收集,这里我们可以选择多种的信息收集方式,例如nmap如此之类的,我的建议是,可以通过自己现有的手里小工具,例如无影,密探这种工具,进行一个信息收集。以免…...

Java 开发者需要了解的 PDF 基础知识

PDF 代表“可移植文档格式”(Portable Document Format),它是全球最流行的文件格式。因此,Java 开发人员很可能会经常需要处理它。然而,与 Microsoft Word 或 HTML/XML 这样的格式相比,PDF 并不那么直观。理…...

基于图像处理的裂缝检测与特征提取

一、引言 裂缝检测是基础设施监测中至关重要的一项任务,尤其是在土木工程和建筑工程领域。随着自动化技术的发展,传统的人工巡检方法逐渐被基于图像分析的自动化检测系统所取代。通过计算机视觉和图像处理技术,能够高效、精确地提取裂缝的几何特征,如长度、宽度、方向、面…...

Webpack 基础入门

一、Webpack 是什么 Webpack 是一款现代 JavaScript 应用程序的静态模块打包工具。在 Web 开发中,我们的项目会包含各种类型的文件,如 JavaScript、CSS、图片等。Webpack 可以将这些文件打包成一个或多个文件,以便在浏览器中高效加载。它就像…...

掌握SQLite_轻量级数据库的全面指南

1. 引言 1.1 SQLite简介 SQLite 是一个嵌入式关系型数据库管理系统,它不需要单独的服务器进程或系统配置。它的设计目标是简单、高效、可靠,适用于各种应用场景,尤其是移动设备和嵌入式系统。 1.2 为什么选择SQLite 轻量级:文件大小通常在几百KB到几MB之间。无服务器架构…...

大数据处理如何入门

大数据处理的入门可以从以下几个方面入手: 1. 基础知识学习 在深入大数据领域之前,建议先掌握一些基础知识,包括数据类型、存储与处理的基本概念,以及常用的数据处理工具。例如,Python或Java编程语言在大数据领域应用…...

算法与数据结构(最小栈)

题目 思路 为了返回栈中的最小元素,我们需要额外维护一个辅助栈 min_stack,它的作用是记录当前栈中的最小值。 min_stack的作用: min_stack的栈顶元素始终是当前栈 st 中的最小值。 每当st中压入一个新元素时,如果这个元素小于等…...

LeetCode 1287.有序数组中出现次数超过25%的元素:遍历

【LetMeFly】1287.有序数组中出现次数超过25%的元素:遍历 力扣题目链接:https://leetcode.cn/problems/element-appearing-more-than-25-in-sorted-array/ 给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出…...

春招项目=图床+ k8s 控制台(唬人专用)

1. 春招伊始 马上要春招了,一个大气的项目(冲击波项目)直观重要,虽然大家都说基础很重要,但是一个足够新颖的项目完全可以把你的简历添加一个足够闪亮的点。 这就不得不推荐下我的 k8s 图床了,去年折腾快…...

Vue 记录用户进入页面的时间、离开页面的时间并计算时长

在 Vue 项目中,要记录用户进入页面的时间、离开页面的时间,并在用户离开时计算时长并调用后端接口,可以借助 Vue 的生命周期钩子和浏览器的一些事件来实现。以下是具体的实现步骤和示例代码: 实现思路 记录进入时间:…...

解锁豆瓣高清海报(三)从深度爬虫到URL构造,实现极速下载

脚本地址: 项目地址: Gazer PosterBandit_v2.py 前瞻 之前的 PosterBandit.py 是按照深度爬虫的思路一步步进入海报界面来爬取, 是个值得学习的思路, 但缺点是它爬取慢, 仍然容易碰到豆瓣的 418 错误, 本文也会指出彻底解决旧版 418 错误的方法并提高爬取速度. 现在我将介绍…...

机器学习--逻辑回归

机器学习–逻辑回归 一、认知革命:从线性回归到逻辑回归 1.1 本质差异对比 维度线性回归逻辑回归输出类型连续值概率值 (0-1)目标函数最小二乘法极大似然估计数学表达式 y w T x b yw^Txb ywTxb p 1 1 e − ( w T x b ) p\frac{1}{1e^{-(w^Txb)}} p1e−(wTxb…...

gradio创建openai前端对接deepseek等模型流式输出markdown格式文本

环境 gradio3.50.2 openai1.63.1代码 import openai import gradio as gr#导入gradio的包api_key "sk-**a8" api_base "https://api.deepseek.com/v1"import gradio as gr import openai from typing import List, Any, Iteratorclient openai.OpenAI…...

【LeetCode Hot100】最大子数组和|动态规划/贪心,Java实现!图解+代码,小白也能秒懂!

💻 [LeetCode Hot100] 最大子数组和|动态规划/贪心,Java实现!图解代码,小白也能秒懂! ✏️本文对应题目链接:最大子数组和 📌 题目描述 给定一个整数数组 nums,找到一个…...

【Go语言快速上手】第二部分:Go语言进阶之网络编程

文章目录 前言:网络编程一、TCP/UDP 编程:net 包的使用1. TCP 编程1.1 TCP 服务器1.2 TCP 客户端 2. UDP 编程2.1 UDP 服务器2.2 UDP 客户端 二、HTTP 编程:net/http 包的使用,编写 HTTP 服务器和客户端2.1 HTTP 服务器2.2 HTTP 客…...

AI法理学与责任归属:技术演进下的法律重构与伦理挑战

文章目录 引言:智能时代的新型法律困境一、AI技术特性对传统法理的冲击1.1 算法黑箱与可解释性悖论1.2 动态学习系统的责任漂移1.3 多智能体协作的责任稀释二、AI法理学的核心争议点2.1 法律主体资格认定2.2 因果关系的技术解构2.3 过错标准的重新定义三、责任归属的实践案例分…...

Linux探秘坊-------8.进程详解

1.概念详解 1.运行&&阻塞&&挂起 内容基础:方框中的就是调度队列,是一个 双向队列,每一个元素是PCB其对应的代码数据 1.运行 只要进程 在调度队列中,进程的状态就是运行(running). 2.阻塞…...

C#使用文件读写操作实现仙剑五前传称号存档修改

手把手教学仙剑五前传 称号存档修改器 首先找到 Pal5Q所在目录的save\global.sav 文件,这是一个只有488字节的文件,这里存放称号对应的编号ID,以及是否已获得该称号,1为已获取称号,0为未获取称号 [称号:是否获取]这是一个键值对 称号的编号ID是一个Int32数字,使用C#的方法Bi…...

Kubernetes知识点总结(十)

什么是 K8s 的 namespace? 在 K8s 中,Namespace(名字空间)提供了一种机制,将同一集群中的资源划分为相互隔离的组, 是在多个用户之间划分集群资源的一种方法。 名字空间作用域仅针对带有名字空间的对…...

【达梦数据库】disql工具参数绑定

前言 在达梦数据库的使用过程中尽管管理工具很好用,但是命令行工具还是有着得天独厚的优势,但是在参数绑定方面就没有管理工具做的更加完美,现在就汇总下disql 工具参数绑定的常用几种方式 disql 参数绑定 使用 ? select * from v$dm_in…...

箭头函数的this指向谁

先看1个重要原则: 由Vue管理的函数,一定不要写箭头函数,箭头函数的this就不再是Vue实例了 箭头函数的 this 指向在定义时确定,继承自外层作用域(即定义时的上下文)的 this,且无法通过 call、app…...

Node.js技术原理分析系列——Node.js调试能力分析

本文由体验技术团队屈金雄原创。 Node.js 是一个开源的、跨平台的 JavaScript 运行时环境,它允许开发者在服务器端运行 JavaScript 代码。Node.js 是基于 Chrome V8引擎构建的,专为高性能、高并发的网络应用而设计,广泛应用于构建服务器端应…...

网络基础 【UDP、TCP】

1.UDP 首先我们学习UDP和TCP协议 要从这三个问题入手 1.报头和有效载荷如何分离、有效载荷如何交付给上一层的协议?2.认识报头3.学习该协议周边的问题 UDP报头 UDP我们先从示意图来讲解,认识报头。 UDP协议首部有16位源端口号,16位目的端…...

python旅游推荐系统+爬虫+可视化(协同过滤算法)

✅️基于用户的协同过滤算法 ✅️有后台管理 ✅️2w多数据集 这个旅游数据分析推荐系统采用了Python语言、Django框架、MySQL数据库、requests库进行网络爬虫开发、机器学习中的协同过滤算法、ECharts数据可视化技术,以实现从网站抓取旅游数据、个性化推荐和直观展…...

数据结构 树的存储和遍历

一、树的定义 树的定义 树型结构是⼀类重要的⾮线性数据结构。 • 有⼀个特殊的结点,称为根结点,根结点没有前驱结点。 • 除根结点外,其余结点被分成M个互不相交的集合T1 、T2 、...、Tm T,其中每⼀个集合⼜是⼀棵树&#xff0c…...

《解锁自然语言处理:让公众正确拥抱AI语言魔法》

在当今数字化浪潮中,自然语言处理(NLP)技术作为人工智能领域的璀璨明珠,正以惊人的速度融入我们的生活。从智能语音助手到智能客服,从机器翻译到内容创作辅助,NLP技术无处不在。然而,如同任何强…...

qt实习总结

创建一个滑动条 QSlider *slider new QSlider(Qt::Vertical); //创建一个垂直方向的 进度条 带有上下箭头的输入框 QSpinBox 提供了一个带有上下箭头的输入框 垂直 水平怎么说 horizontal vetical 布局知识 BtnLayout->addWidget(AmendBtn); BtnLayout->addWidg…...

HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?

一、前言 作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承…...

Docker 镜像标签使用

写在前面 当使用命令 docker pull mysql 拉取镜像时,其实等价于如下命令 docker pull mysql:latest latest 是默认的标签,字面上理解为最新版本的镜像,实质上 latest 只是镜像的标签名称,跟具体某个版本号地位一样,…...

C#异步/多线程编程中Task对象强大的功能介绍。

在 C# 的异步编程中,Task 是一个非常重要的类,它表示一个异步操作。Task 类提供了许多方法,用于管理、控制和组合异步操作。以下是 Task 类中一些常用方法的详细讲解及其功能。 1. Task.Run 功能:将指定的代码块调度到线程池中异步…...

DDD聚合在 ASP.NET Core中的实现

在ASP.NET Core中实现DDD(领域驱动设计,Domain-Driven Design)聚合通常涉及到几个关键步骤,包括定义领域模型、实现领域服务、使用仓储模式等。以下是如何在ASP.NET Core应用中实现DDD聚合的一些步骤和示例。 1. 定义领域模型 首…...

docker push镜像到阿里云

阿里云账号 阿里云-计算,为了无法计算的价值 开通个人镜像容器 进入控制台,试用容器 实例列表界面 点击上图中的个人,个人版特性 创建个人版: 个人版实例界面: 设置密码 个人版实例: 创建镜像仓库 如上…...

移动通信发展史

概念解释 第一代网络通信 1G 第二代网络通信 2G 第三代网络通信 3G 第四代网络通信 4G 4g网络有很高的速率和很低的延时——高到500M的上传和1G的下载 日常中的4G只是用到了4G技术 运营商 移动-从民企到国企 联通-南方教育口有人 电信 铁通:成立于 2000 年…...

Transformer笔记

Transformer笔记 文章目录 Transformer笔记模型架构核心技术多头注意力机制概念数学概念单头注意力机制代码 基于位置的前馈网络残差连接和层规范化 编码器解码器 特点:Transformer模型完全基于注意力机制,没有任何卷积层或循环神经网络。之前Transforme…...

【学习资源】时间序列数据分析方法(1)

时间序列数据分析是一个有趣的话题,让我们多花一些时间来研究。此篇为第一篇文章。主要介绍特征提取方法、深度学习时序数据分析模型、参考资源。期望能帮助大家解决工业领域的相关问题。 1 特征提取方法:信号处理 (来源:INTELLIGENT FAULT DIAGNOSIS A…...

PHP 文件与目录操作

PHP 学习资料 PHP 学习资料 PHP 学习资料 在 PHP 编程中,文件与目录操作是一项基础且重要的技能。无论是处理用户上传文件、生成日志,还是管理项目中的各类资源,都离不开对文件和目录的操作。PHP 提供了丰富的内置函数,方便开发…...

PostgreSQL认证指南

PostgreSQL 作为一款强大的开源关系型数据库,深受开发者和企业的青睐。获得 PostgreSQL 专家认证,不仅能提升个人在数据库领域的专业能力,还能为职业发展增添有力筹码。下面为大家详细介绍 PostgreSQL 专家认证的学习路径。 一、深入理解基础…...

hive全量迁移脚本

#!/bin/bash #场景:数据在同一库下,并且hive是内部表(前缀的hdfs地址是相同的)#1.读取一个文件,获取表名#echo "时间$dt_jian_2-------------------------" >> /home/hadoop/qianyi_zengliang/rs.txt#…...

Qt5开发入门指南:从零开始掌握跨平台开发

目录 Qt框架概述 开发环境搭建 基础语法与核心机制 第一个Qt窗口程序 常见问题解答 一、Qt框架概述 1.1 什么是Qt? Qt是一个1995年由挪威Trolltech公司开发的跨平台C图形用户界面应用程序框架。最新Qt5版本主要包含: GUI模块:支持Wind…...

WPF的Prism框架的使用

安装Prism.DryIoc库&#xff1a; Prism的区域和模块化&#xff1a; 一个区域可以显示一个用户控件 一个模块就是一个项目&#xff0c;也就是一个类库 动态切换用户控件的案例&#xff1a; <Grid><Grid.RowDefinitions><RowDefinition Height"auto"…...

【机器学习】线性回归 线性回归模型的损失函数 MSE RMSE MAE R方

【机器学习系列】 KNN算法 KNN算法原理简介及要点 特征归一化的重要性及方式线性回归算法 线性回归与一元线性回归 线性回归模型的损失函数 多元线性回归 多项式线性回归 线性回归模型的损失函数 V1.0损失函数的计算方法损失函数的分类MSE (Mean Squared Error)RMSE (Root Mea…...

服务器部署DeepSeek,通过Ollama+open-webui部署

1. 安装ollama 1.1. linux 安装 Ollama是目前常用的AI模式部署的第三方工具&#xff0c;能一键部署deepSeek Ollama官方网址https://ollama.com/ 选择Download下载对应的服务版本 服务器选择Linux&#xff0c;下面是下载代码 curl -fsSL https://ollama.com/install.…...

Java 大视界 -- 开源社区对 Java 大数据发展的推动与贡献(91)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

【Vue3源码解析】应用实例创建及页面渲染

下载源码 git clone https://github.com/vuejs/core.git写该文章时的Vue版本为&#xff1a; "version": "3.5.13",这里要注意 pnpm 的版本不能太低&#xff0c;我此时的版本为 9.15.4。更新 pnpm 版本&#xff1a; npm install -g pnpm然后安装依赖&…...

云原生AI Agent应用安全防护方案最佳实践(上)

当下&#xff0c;AI Agent代理是一种全新的构建动态和复杂业务场景工作流的方式&#xff0c;利用大语言模型&#xff08;LLM&#xff09;作为推理引擎。这些Agent代理应用能够将复杂的自然语言查询任务分解为多个可执行步骤&#xff0c;并结合迭代反馈循环和自省机制&#xff0…...

人工智能 - 主动视觉可能就是你所需要的:在双臂机器人操作中探索主动视觉

AV-ALOHA 系统使用用于 AV 的 VR 耳机实现直观的数据收集&#xff0c;并且 用于作的 VR 控制器或引线臂。这有助于捕捉全身和头部 远程作我们的真实和模拟系统的运动&#xff0c;记录来自 6 个的视频 不同的摄像头&#xff0c;并为我们的 AV 仿制学习策略提供训练数据。 加州大…...

Ubuntu 下 systemd 介绍

系列文章目录 Linux内核学习 Linux 知识&#xff08;1&#xff09; Linux 知识&#xff08;2&#xff09; WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…...