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.pswp.cn/web/39210.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39210.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39210.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

xmind導入導出支持圖片功能源碼改造

xmind導入導出支持圖片功能 在開發用例管理平臺的過程中,需要使用xmind來管理用例。所以也涉及到xmind用例的導入導出功能, 在開始的時候,xmind文件中沒有圖片,所以使用xmind,xmindparser包就可以完成改任務。現在新增需求&#x…

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的房價數據分析平臺具有重要…

職業技能大賽引領下物聯網專業實訓教學的改革研究

隨著物聯網技術的迅猛發展,作為培養高技能應用型人才的高職院校,面臨著將理論與實踐深度結合,以滿足行業對物聯網專業人才新要求的挑戰。職業技能大賽作為一種重要的教育評價與促進機制,為物聯網專業實訓教學的改革提供了新的視角…

面試題004-Java-Java多線程(下)

面試題004-Java-Java多線程(下) 這里寫目錄標題 面試題004-Java-Java多線程(下)題目自測題目答案1. synchronized 關鍵字的作用?2. volatile 關鍵字的作用?3. synchronized 和 volatile 的區別?4. synchronized 和 ReentrantLock 的區別&…

成人高考本科何時報名-深職訓學校幫您規劃學習之路

你有想過繼續深造自己的學歷嗎?也許你已經工作多年,但總覺得學歷是一塊心病,想要通過成人高考本科來提升自己。不用著急,今天我們來聊一聊成人高考本科的報名時間,以及深職訓學校如何幫助你順利完成報名。 深圳成人高…

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或者不同端口之間通信,就會存在這個問題。前后端分離是兩個服務,端口不一樣,所以必須要…

PCA和PCoA分析的python代碼

主成分分析(PCA)和主坐標分析(PCoA)都是數據降維和可視化的常用方法,但它們在適用場景和計算方法上有一些重要區別。 主成分分析(PCA) 定義: PCA是一種線性降維方法,通過正交變換將原始數據轉化為一組線性不相關的變量(主成分)。這些主成分是數據中方差最大的方向。…

XLSX + LuckySheet + LuckyExcel實現前端的excel預覽

文章目錄 功能簡介簡單代碼實現效果參考 功能簡介 通過LuckyExcel的transformExcelToLucky方法, 我們可以把一個文件直接轉成LuckySheet需要的json字符串, 之后我們就可以用LuckySheet預覽excelLuckyExcel只能解析xlsx格式的excel文件,因此對…

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

01閱讀須知 此文所提供的信息只為網絡安全人員對自己所負責的網站、服務器等(包括但不限于)進行檢測或維護參考,未經授權請勿利用文章中的技術資料對任何計算機系統進行入侵操作。利用此文所提供的信息而造成的直接或間接后果和損失&#xf…

Java中s-EJB 與 e-EJB的區別

在Java中,關于“s-EJB”與“e-EJB”的區分,實際上可能存在一定的誤解或混淆,因為在標準的EJB(Enterprise JavaBeans)術語中,并沒有直接稱為“s-EJB”和“e-EJB”的明確分類。然而,為了嘗試解答這…

【Postman gRPC測試全攻略】探索微服務通信的新紀元

標題:【Postman gRPC測試全攻略】探索微服務通信的新紀元 gRPC是一種高性能、開源和通用的RPC框架,由Google主導開發,它使用Protocol Buffers作為接口描述語言和消息交換格式。Postman作為API開發的利器,也提供了對gRPC服務的測試…

封裝2個函數

1 #include "key1.h"2 //封裝EXTI章節函數3 void hal_exti_init(int exti,unsigned int i)4 {5 switch(exti)6 {7 case 9:8 //使能GPIOF外設時鐘9 RCC->MP_AHB4ENSETR | (0x1<<5);10 //將PF9設置為輸出模式11 …