Python数据分析-旧金山犯罪预测分析(San Francisco Crime Classification)

一、研究背景

旧金山是一个人口稠密、旅游业发达的城市,同时也是美国犯罪率较高的城市之一。随着城市的不断发展,犯罪行为的类型和频率也在不断变化,这对城市的治安管理和社会稳定构成了巨大的挑战。近年来,数据科学技术的迅猛发展为犯罪行为的预测和预防提供了新的思路和工具。通过对大量历史犯罪数据的分析,可以发现潜在的犯罪模式和趋势,从而为警察部门和相关决策机构提供有价值的参考。旧金山犯罪分类研究的目标是利用机器学习和数据挖掘技术,对犯罪数据进行系统的分析和分类,以期能够更准确地预测未来的犯罪行为,并制定更有效的防范措施。

二、研究意义

  • 社会治安管理:通过对旧金山犯罪数据的深入分析,可以帮助警察部门更好地理解犯罪行为的分布和特点,从而优化警力配置,提高犯罪预防和打击的效率。

  • 公共安全保障:准确的犯罪预测可以为居民和游客提供更安全的生活和旅游环境,增强公众的安全感和幸福感。

  • 数据科学应用:该研究是数据科学在社会治理领域的一次重要尝试,能够展示机器学习和数据挖掘技术在实际应用中的巨大潜力,并为其他城市的犯罪预防提供借鉴和参考。

  • 政策制定支持:通过对犯罪数据的分析,可以为政府和相关决策机构提供数据支持,帮助其制定更加科学和合理的治安管理政策。

三、实证分析

首先导入包 读取数据集

代码和数据

#imports
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import time as systime
import datetime as dt
import string
import seaborn as sns
import matplotlib.colors as colors
%matplotlib inline
train=pd.read_csv('train.csv')
test=pd.read_csv('test.csv')

 查看数据集类型

查看数据集的形状和具体的前4行

查看其缺失情况

train.isnull().sum()

发现不存在缺失值

通过groupby().size()方法返回分组后的统计结果

cate_group = train.groupby(by='Category').size()
cate_group

分析一下目标分类共有多少种类型

cat_num = len(cate_group.index)
cat_num

 

还挺多

接下来可视化特征

cate_group.index = cate_group.index.map(string.capwords)
cate_group.sort_values(ascending=False,inplace=True)
cate_group.plot(kind='bar',logy=True,figsize=(15,10),color=sns.color_palette('coolwarm',cat_num))
plt.title('No. of Crime types',fontsize=20)
plt.show()

 

接下来查看各区犯罪率

dis_group.index = dis_group.index.map(string.capwords)
dis_group.sort_values(ascending=True,inplace=True)
dis_group.plot(kind='barh',figsize=(15,10),fontsize=10,color=sns.color_palette('coolwarm',10))
plt.title('Frequncy. of crimes by district',fontsize=20)
plt.show()

 

接下来将犯罪情况用时间来分别展示

 

plt.figure(figsize=(8,19))year_group = train.groupby('year').size()
plt.subplot(311)
plt.plot(year_group.index[:-1],year_group[:-1],'ks-')
plt.xlabel('year')month_group = train.groupby('month').size()
plt.subplot(312)
plt.plot(month_group,'ks-')
plt.xlabel('month')day_group = train.groupby('day').size()
plt.subplot(313)
plt.plot(day_group,'ks-')
plt.xlabel('day')plt.show()

 

接下来展示每周的犯罪情况

week_group.T.plot(figsize=(12,8))#行列互换后画图
plt.xlabel('hour of day',size=15)
plt.ylabel('Number of crimes',size=15)
plt.show()

接下来查看犯罪种类

tmp = train[train['Category'].map(string.capwords).isin(top6)]
tmp_group = tmp.groupby(['Category','hour']).size()
tmp_group = tmp_group.unstack()
tmp_group.T.plot(figsize=(12,6),style='o-')
plt.show()

 

接下来对测试集的Dates做同样的处理

test['date'] = pd.to_datetime(test['Dates'])
test['year'] = test.date.dt.year
test['month'] = test.date.dt.month
test['day'] = test.date.dt.day
test['hour'] = test.date.dt.hour
test.info()

 准备开始机器学习

#加入所有特征
training,valid,y_train,y_valid = train_test_split(full[:train.shape[0]],target,train_size=0.7,random_state=0)

分别使用三种机器学习模型

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import log_loss
from sklearn.naive_bayes import BernoulliNB
import time
LR = LogisticRegression(C=0.1)
lrstart = time.time()
LR.fit(training, y_train)
lrcost_time = time.time()-lrstart
predicted = np.array(LR.predict_proba(valid))
print("逻辑回归log损失为 %f" %(log_loss(y_valid, predicted)))
print('逻辑回归建模耗时 %f 秒' %(lrcost_time))

 

params = [12, 13, 14, 15, 16]
clf = RandomForestClassifier(n_estimators=30)start_time = time.time()for par in params:clf.set_params(max_depth=par)clf.fit(training, y_train)predicted = clf.predict_proba(valid)loss = log_loss(y_valid, predicted)print("随机森林 log 损失为 %.4f" % loss)

 

NB = BernoulliNB()
nbstart = time.time()
NB.fit(training,y_train)
nbcost_time = time.time()-nbstart
predicted = np.array(NB.predict_proba(valid))

 

四、结论

本研究通过对旧金山的犯罪数据进行分析和分类,展示了数据科学技术在犯罪预防和社会治理中的应用潜力。研究结果表明,犯罪行为具有一定的时空分布规律,可以通过历史数据进行有效预测。这不仅为警察部门的日常工作提供了有力支持,也为公众安全提供了保障。此外,该研究还进一步证明了数据科学在解决实际问题中的重要作用和广泛前景。未来,随着技术的不断进步和数据的进一步积累,犯罪预测的精度和实用性将会不断提高,从而为建设更加安全和谐的社会贡献力量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 编程中互斥锁的使用

C# 中的互斥锁 互斥锁是 C# 中使用的同步原语,用于控制多个线程或进程对共享资源的访问。其目的是确保在任何给定时间只有一个线程或进程可以获取互斥锁,从而提供互斥。 C# 中互斥锁的优点 可以使用互斥锁 (Mutex) 并享受其带来的好处。 1. 共享资源…

德国威步的技术演进之路(下):从云端许可管理到硬件加密狗的创新

从单机用户许可证到WkNET网络浮点授权的推出,再到引入使用次数和丰富的时间许可证管理,德国威步产品不断满足市场对灵活性和可扩展性的需求。TCP/IP浮动网络许可证进一步展示了威步技术在网络时代的创新应用。借助于2009年推出的借用许可证以及2015年推出…

mac磁盘工具如何合并分区 macos 磁盘工具 无法抹除 磁盘管理软件哪个使用率最高

一、什么是NTFS格式分区 NTFS格式分区是微软公司开发的诸多文件系统中的一种。NTFS格式分区是一种文件系统,磁盘只有在安装了文件系统后才能被正常使用,文件系统的格式有非常多,常见的有FAT 32和NTFS。 作为常见文件系统,NTFS格式…

无人机集群协同搜索研究综述

源自:指挥控制与仿真 作者:刘圣洋, 宋婷, 冯浩龙, 孙玥, 韩飞 注:若出现无法显示完全的情况,可 V 搜索“人工智能技术与咨询”查看完整文章 摘要 无人机集群协同区域搜索能够有效地获取任务区域地面信息,降低环境不确定度。基…

买卖股票的最佳时期含冷冻期(leetcode)

个人主页:Lei宝啊 愿所有美好如期而遇 也就有这样的状态转移方程: 买入:dp[i][0] max(dp[i-1][1] - prices[i], dp[i-1][0]); 可买入:dp[i][1] max(dp[i-1][1], dp[i-1][2]); 冷冻期:dp[i][2] dp[i-1][0] prices…

使用ChatGPT自动生成测试用例思维导图

使用ChatGPT自动生成测试用例思维导图 引言ChatGPT在测试用例编写中的应用全面覆盖测试场景边界测试避免测试用例重复 借助ChatGPT生成测试用例思维导图准备工作步骤一:与ChatGPT对话步骤二:生成思维导图代码 结语 引言 在编写测试用例时,测…

基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型

背景 随着城市化进程的加速和房地产市场的快速发展,房价已成为经济学、社会学等多学科交叉研究的热点问题。为了更精确地分析和预测房价,数据分析和机器学习技术被广泛应用。在此背景下,开发一个基于Python Django的房价数据分析平台具有重要…

职业技能大赛引领下物联网专业实训教学的改革研究

随着物联网技术的迅猛发展,作为培养高技能应用型人才的高职院校,面临着将理论与实践深度结合,以满足行业对物联网专业人才新要求的挑战。职业技能大赛作为一种重要的教育评价与促进机制,为物联网专业实训教学的改革提供了新的视角…

成人高考本科何时报名-深职训学校帮您规划学习之路

你有想过继续深造自己的学历吗?也许你已经工作多年,但总觉得学历是一块心病,想要通过成人高考本科来提升自己。不用着急,今天我们来聊一聊成人高考本科的报名时间,以及深职训学校如何帮助你顺利完成报名。 深圳成人高…

LeetCode-刷题记录-滑动窗口合集(本篇blog会持续更新哦~)

一、滑动窗口概述 滑动窗口(Sliding Window)是一种用于解决数组(或字符串)中子数组(或子串)问题的有效算法。 Sliding Window核心思想: 滑动窗口技术的基本思想是维护一个窗口(一般…

怎样在Python中使用oobabooga的API密钥,通过端口5000获取模型列表的授权

题意: oobabooga-textgen-web-ui how to get authorization to view model list from port 5000 via the oobas api-key in python 怎样在Python中使用oobabooga的API密钥,通过端口5000获取模型列表的授权 问题背景: I wish to extract an…

fastapi+vue3前后端分离开发第一个案例整理

开发思路 1、使用fastapi开发第一个后端接口 2、使用fastapi解决cors跨域的问题。cors跨域是浏览器的问题,只要使用浏览器,不同IP或者不同端口之间通信,就会存在这个问题。前后端分离是两个服务,端口不一样,所以必须要…

XLSX + LuckySheet + LuckyExcel实现前端的excel预览

文章目录 功能简介简单代码实现效果参考 功能简介 通过LuckyExcel的transformExcelToLucky方法, 我们可以把一个文件直接转成LuckySheet需要的json字符串, 之后我们就可以用LuckySheet预览excelLuckyExcel只能解析xlsx格式的excel文件,因此对…

.NET 漏洞分析 | 某ERP系统存在SQL注入

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

学习笔记——动态路由——OSPF(认证)

十二、OSPF邻居认证 1、OSPF邻居认证概述 链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。 OSPF认…

基于Vue框架实现的记事本

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>懒人记事本</title><style>body {fo…

深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇

序言 反向传播&#xff08;Backpropagation&#xff0c;简称backprop&#xff09;是神经网络训练过程中最关键的技术之一&#xff0c;尤其在多层神经网络中广泛应用。它是一种与优化方法&#xff08;如梯度下降法&#xff09;结合使用的算法&#xff0c;用于计算网络中各参数的…

如何计算弧线弹道的落地位置

1&#xff09;如何计算弧线弹道的落地位置 2&#xff09;Unity 2021 IL2CPP下使用Protobuf-net序列化报异常 3&#xff09;编译问题&#xff0c;用Mono可以&#xff0c;但用IL2CPP就报错 4&#xff09;Wwise的Bank在安卓上LoadBank之后&#xff0c;播放没有声音 这是第393篇UWA…

02 数据加工层 如何搭建用户与内容的标准规范体系

你好&#xff0c;我是周大壮。 01 讲我们提到了个性化流量分发体系的四个阶段&#xff0c;并着重讲解了数据采集阶段的内容。那么&#xff0c;这一讲我们主要围绕数据加工阶段的内容进行详细讲解。 在课程开始之前&#xff0c;我们先举一个场景进行说明。 近年来&#xff0c…

静态方法与实例方法的区别

静态方法与实例方法的区别 1、静态方法&#xff08;Static Methods&#xff09;1.1 调用方式1.2 访问权限 2、实例方法&#xff08;Instance Methods&#xff09;2.1 调用方式2.2 访问权限 3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1…