鄭涵之 葉燊 王曉凱
摘要:鐵路旅財案件的現場痕跡易被破壞,嫌疑人作案時空具有一定選擇性,通過分析旅客乘車數據,可以從大量乘客中找出有作案嫌疑的乘客。運用Python語言編寫算法,服務于一線鐵路民警,減少重復性人工操作,節約警力。
關鍵詞:鐵路;旅財案件;Python
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1007-9416(2020)05-0033-02
0引言
旅客運輸是鐵路運輸生產的重要方面,鐵路車站是一個將自四面八方的旅客高度聚集的、流動的公共場所。旅財案件,即旅客財物被盜案件,也是鐵路區域內的多發性案件。所謂的鐵路旅財案件就是指在鐵路上實施的侵犯旅客財產的犯罪行為,即列車上行竊即可稱為旅財案件。犯罪主體具有多樣性,犯罪分子作案一般都有個對作案環境和目標的熟悉情況有所了解。這不僅是犯罪分子作案的預備、對作案目標的選擇問題,也是其犯罪心理安全的需要。所以,犯罪分子的作案活動要么選擇自己熟悉的環境,要么事先進行踩點、預謀。鐵路站車是一個特殊的地域和社會環境,這里面的環境格局、設施設備、人員崗位、生產作業流程、旅客旅行過程以及警察的勤務活動等都有一定的規范性和特殊性。
雖然火車票實名制的實施為破獲侵財案件提供了一些便利,公安機關可以根據購票人信息順藤摸瓜,查找作案人,但一些車站并未嚴格實行實名制檢票,從而為不法分子提供了可乘之機,他們或用虛假身份證購票,或用他人身份證購票,為案件偵破帶來了重重障礙。
Python是一種跨平臺的計算機程序設計語言,是一種面向對象的動態類型語言,提供了多個數據分析的模塊,如pandas庫numpy庫和openpyxl等,以及可以連接ftp的功能模塊如ftplib庫等,可以高效地實現對旅財案件嫌疑人乘車軌跡的數據進行分析的任務。
1嫌疑人作案規律研究
鐵路旅財案件的作案人無論是慣犯、流竄犯,還是臨時起意的人員,大多都熟知客運規律和站車地形。不法分子會選擇自己熟悉的地方作案,這樣既容易得手,又便于及時銷贓和逃逸。鐵路客運規律和站車地形都有其特殊性,如列車的運行和站停有一定規律、人財物高度集中又流動性大、旅客之間多互不認識、車站出口較多等,對此不熟悉的人會感到茫然而拘謹,而熟悉站車地形和客運規律的人作起案來則是輕車熟路。
在公安機關的打擊和宣傳下,旅客對侵財案件的傳統作案手法已經有所警惕,作案人不得不采取更加多樣化、智能化的作案手段。如作案人事先踩點、預謀,趁旅客在售票廳購票時暗中觀察旅客的錢財數量和放置位置等情況信息,或趁旅客不注意時盜走其財物,或趁上車人多擁擠時下手,或跟隨目標上車后伺機作案。失主往往短時間內難以發現財物被盜。
經總結旅財案件嫌疑人存在以下作案規律:(1)為作案得手后及時逃脫,且不引起其他乘客注意力,—般不攜帶兒童。(部分以兒童為掩護實施盜竊的作案人例外)(2)作案人以男性為主,且年齡主要在16到50歲之間,年齡跨度較大。不能夠僅僅憑借年齡作為篩選的主要條件。(3)作案人購買的車票票價一般較低,且以普通座次為主,票價多在300元以下。以此來降低自己的作案成本,提高作案所得。(4)作案人的乘車軌跡較為復雜、繁瑣,存在短期內的多次乘車,購買了與之前購票規律不符的車票(存在盜用身份證的嫌疑),乘車軌跡出現大量“斷點”(不連續)等,且存在較高的“斷點比率”,根據之前的案件數據分析得出斷點比率在75%以上的乘客乘車數據,大多存在一定的異常現象。
在旅財案件中,嫌疑人的旅客乘車數據中最為明顯就是“斷點”,所謂的“斷點”就是在一段時間內,一個人的乘車軌跡不連續,如從一開始的乘車軌跡為南京到上海而下一次的乘車軌跡卻是從常州到無錫,這就是所謂的“斷點”。因為,大多數嫌疑人會在得手之后直接在就近的車站提前下車,然后通過車票提前出站,而下一次再購票乘車的出發站就與之前軌跡的到達站不一致,這就導致了乘車軌跡的不連續。所以,如果一個人在一段時間內的乘車軌跡存在大量的“斷點”,這個人的乘車軌跡就存在問題,從一定角度上說就存在作案的嫌疑。
2基于Python的鐵路旅財數據分析軟件設計
處理數據的流程即先從發生盜竊的列車上的旅客數據進行分析處理,從中去除一些作案嫌疑較小的乘客,如女性乘客(鐵路旅財案件的嫌疑人以男性為主);攜帶兒童的乘客;乘車距離較長票價較貴的乘客;年齡大于6噦的老人(根據大量案例的數據分析以及民警的辦案經驗,鐵路旅財案件的作案人員年齡分布較廣,作案人年齡可跨越16歲到60歲不等)等。并且從中尋找是否有前科人員乘坐該次列車,若有則將其作為重點分析對象,單獨進行分析;如果無,則考慮是否存在冒用身份等情況。通過種種條件來對于龐大的乘客個人信息數據進行篩選,縮小偵查范圍。并且設置“斷點比率”,以75%為閾值,高于這個值的人員將被歸為重點嫌疑人員。
本軟件用Python語言進行編寫,以針對旅財案件的“斷點”模型自動化分析為主要功能,其中“斷點”模型以“斷點”和“斷點”比率為主要特征作為篩選條件,輔以年齡、性別、網絡購票等特征進一步篩選,實現了整套流程的自動化分析以及信息推送。其它功能還包括:碰撞法尋找旅財人員和逃票人員的軌跡“斷點”、鐵路旅財案件自動篩選管轄前科人員、前科人員以及案情信息查詢、15位身份證轉換為18位身份證、提供豐富快捷的信息查詢篩選功能、從指定ftp下載數據、上傳數據至指定ftp等功能(軟件的每個數據處理模塊都默認先將所有數據進行數據清洗、去重以及按照身份證號排序)。
2.1鐵路旅財案件“斷點”模型自動化分析
軟件初始頁面有六個功能模塊可供選擇,輸入數字“1”選擇功能一,將需要分析的excel文件放入指定路徑下,軟件自動分析完畢后會利用pandas.DataFrame方法和pandas.setoption方法提供預覽,預覽結果中會運用sorted方法和operator.itemgetter方法將所有人根據出現“斷點”次數降序進行排序和匯總。
預覽“斷點”分析結果,可以看到軟件會將乘客每條軌跡數據標記上是否為斷點,并將每個乘客按照斷點次數降序排列。軟件在指定路徑中自動生成名為“斷點結果”的文件夾,即可將多+excel~格中的所有乘車數據匯總結果到結果中,并且以時間來命名,解決了同一人的乘車數據出現在多個excel文件中的問題。
處理后的數據格式新增了“性別”“年齡”“是否網絡購票”“車站是否有人臉識別”“此條軌跡是否為斷點”這,個新的字段。每個人的最后一條乘車數據示為“無效值”,因為在設計“斷點”算法時將每一個人的軌跡以時間先后順序從前向后進行“斷點”比較計算的,最后一條軌跡數據沒有向后的比較值,所以作為“無效值”,不影響“斷點”比率的計算;若某個人只有一條軌跡數據,則標記為“無效值”。
前期經過數據清洗、去重以及按照身份證和時間排序后,先通過xlrd模塊和openpyxlN塊讀取整+exce墳件并記錄其所有數據條數,再通過while循環將循環次數限制在與數據條數相同,并對比某一條數據的身份證列與下一條數據是否相同,若相同,則說明這兩條數據是同一個人,就可以將本條數據的到站與下一條數據的發站進行比較,來得出本條數據是否為“斷點”;若本條數據的身份證列與下一條數據不相同,則說明該條數據是該人的軌跡中最后一條數據,因而無法與下一條數據比較,即標識“無效值”。
在給每一條軌跡數據標記了是否為“斷點”之后,再運用collections.counter方法計算每個人的軌跡數據總數,再計算每個人的“斷點”軌跡數占個人軌跡數據總數的比重,即為“斷點”比率。
2.2前科人員信息查詢
本模塊主要利用python中的xlrd和xlwt模塊讀取excel文件中內容進行索引查找和數據的挖掘。根據命令提示在指定路徑下放入原始的案情表和人員信息表。軟件會通過0s.1istdir方法判斷指定路徑下是否放入文件,若沒有放入文件則會提示先放人文件在執行關鍵詞查詢。放人文件后先輸入需要查找的關鍵字1,再輸入其它需要查找的關鍵字2,3,4……,若需要所有上述關鍵字搜索的結果,則輸入“并集”;若需要同時滿足上述所有關鍵字的搜索結果,則輸入“交集”。
完成搜索的同時,軟件也會自動將部分舊版的15位身份證轉換為新版的18位身份證。對于在數據源中有港澳通行證的乘客,軟件也會將港澳通行證號放在身份證后面提供預覽。
2.3自動定時爬取數據進行分析并推送
python~時任務框架Apscheduler提供了非常豐富而且方便易用的定時任務接口,主要運用其中用BlockingScheduler調度器和interval方法設置觸發器和定時自動觸發的時間間隔,實現了精細化的控制。在此大框架下編寫具體要執行的定時任務:利用ftplib.FTP方法登錄ftp取數據,通過模擬菜單界面使用戶查看當前路徑下的文件,確定需要選擇的文件,軟件會運用csv.reader方法預覽原文件,針對有最新乘車記錄的前科人員,確定其管轄范圍屬于管內車站還是管內車次,處理結果用open方法和write方法分別寫入所屬轄區各所以及乘警隊的txt文件中,將數據存儲在本地并且分析完畢后在自動定時上傳到指定ftp上完成推送,實現了動態防控。
2.4碰撞法找“斷點”
除了上文提到的分析“斷點”的方法,還有一種方法即碰撞法。這種尋找“斷點”的方法適用于從普通乘客中分離出鐵路逃票嫌疑人。
例如一條鐵路沿線分別有A、B、c三站,將同一天(或若干天)內從A到B和從C到B的乘客數據進行碰撞,碰撞結果即為出現軌跡“斷點”的人員。這種方法更適合在已知固定乘車區間內尋找經常逃票的人員。
將乘車區間互為反向的兩種乘車數據放人指定文件夾下的“正向”和“反向”目錄下(“正向”“反向”為相對的,自行定義某一方向為正向即可,另一方向就為反向)即可自動分析,分析結果文件以時間作為命名格式。
3結語
該分析過程可總結為通過一系列對于乘車軌跡特點的篩選得出一部分存在嫌疑的人員名單,再由民警通過所得的人員名單與前科人員數據庫進行對比,分析其近期是否存在異常的消費記錄、住宿信息以及通話信息等等。通過對于這一系列的數據分析,從而縮小偵查范圍,排查出有嫌疑的人員。根據所得的嫌疑人名單進行進一步的偵查工作,以由“由人到案”為基本思想進行鐵路旅財案件的偵破工作。綜上所述,根據旅客乘車數據進行數據挖掘能夠真正挖掘出數據的潛在價值,為旅客侵財型案件的偵破提供指導方向。但是僅依靠鐵路旅客乘車數據的挖掘遠遠不夠用于應對實際作戰中遇到的種種現象,還需要結合各項其他數據進行綜合的分析,以此才能夠得出較為準確的分析結論。
在大數據、Python數據分析等技術支持手段的支持之下,重視鐵路公路大數據系統建設,基于科學理念為支持,強化信息建設與完善,重視信息數據采集,提根本上提升鐵路信息化管理能力,為智慧鐵路公安系統建設奠定了基礎。以“智慧鐵路”為思想指導,更加有效的利用收集到的鐵路數據,改變以往傳統的辦案方式,從傳統的“由案到人”變為“由人到案”,被動變為主動,主動分析乘客的乘車數據,找到有嫌疑的乘客數據,并將數據及時反饋給一線鐵路民警,提高防范意識,預防制止違法犯罪。在信息數據的支持之下的凸顯鐵路公安信息系統的預警、分析作用,提前做好預警準備,可以真正的做到精確打擊鐵路扒竊的違法犯罪行為。