第52章 “感知機”的初次實戰

業餘黑客有個潛規則。

政府機關、金融系統、電子商務……這類網站的後臺,是機密重地,通常有高手坐鎮,沒事最好別去溜達。

被網監或者安全專家盯上,十有八九落不了好。

而個人網站、小型辦公網絡、學校網站……

這種信息安全不太敏感的,僅僅是瀏覽或下載一些數據,一般不會有什麼大問題。

比如從鐵道部官網12306爬點數據,做個輔助訂票系統什麼的……

但無論任何地方,肆意破壞總是不被允許的,這是底線。

《原始數據表》的奇怪情況,身份證位數不對,側面支持了這種可能性。

通過黑客手段獲取數據,有時候會遇到一些匪夷所思的問題,比如數據格式特殊,下載的數據寬度受限……

有時候,甚至在後臺數據庫裡,只能找到數據的一部分,而其餘部分被保存在無法訪問的文件裡。

寫後臺程序的人,會基於各種各樣的理由,寫出可讀性極差的代碼。

比如:讀寫效率、數據安全、修補bug、系統健壯……

又或者不想被人繼承代碼,取代自己的位置,甚至單純爲了個人興趣、編程風格……

都可能導致這些人,搞出種種令人費解的騷操作。

當然,也可能老高的技術還有缺陷,或者他是從虛擬內存、交換文件裡挖掘出來的數據。

也有可能在“作案”過程中被人盯上,不得不提前斷開連接……

總之,擺在江寒面前的,就是這麼兩張各有缺陷的表格,外加一個圖片壓縮包。

接下來,江寒首先要做的,是從《原始數據表》裡,篩選出需要的記錄,複製到《報名信息表》裡。

這一步非常簡單,只要用excel自帶的VBScript編寫一個小腳本,將兩個表格按照姓名匹配,就可以得到每個考生在原始表裡的行號。

當然,同名同姓是避免不了的,可能報名信息裡一個“張三”,在原始數據裡會找到一堆“張三”……這個一會兒再說。

腳本編程非常簡單,江寒只用了二十分鐘,就寫完程序並調試無誤。

按了一下預設的快捷鍵,腳本開始執行。

一邊是3萬多行的考生姓名,一邊是10萬多行的原始數據,腳本足足跑了八分鐘,纔得到了一個映射關係表。

接下來,是第二個腳本,參照映射關係表,將原始數據文件篩選出需要保留的行,其他行全都刪除,然後按照《報名信息表》的序號,重新進行排序,得到臨時文件1。

這個臨時文件的行數,要比報名表多出幾千行,這是因爲江寒對重名進行了處理,將重名的人都編上了相同的二級序號。

接下來處理重名。

經過一番分析,江寒發現,原始數據表和報名信息表裡的數據,排列順序是有規律的。

其以地區爲主關鍵字,所在學校爲次要關鍵字,而所在班級則是第三關鍵字排序。

也就是說,一個學校裡,一個班級的人,都挨在一起,學校、地區之間也沒有混亂。

這樣就好辦了。

由於臨時文件已經按序號排列,重名的人擁有同樣的二級序號,自然就聚攏在了一起。

這時,只要看一下這些人的所在地區和學校,就能輕鬆分辨出哪些是多餘的,那個纔是真正對應於《報名信息表》的。

如果一個班級也有同名,就只能具體情況具體分析了,實在確定不了的,就先記下來,放在一邊,以後再說。

一番整理後,臨時文件1已經十分接近高老師希望得到的《報名信息表》。

聯繫電話、家庭住址,畢業學校、班級、民族、年齡、出生年月日都有了。

接下來是重頭戲,通過照片判斷每個學生的性別。

幸運的是,雖然《原始數據表》裡的身份證號,殘缺不全,導致性別信息不可用,可是《報名信息表》裡還有部分殘餘的性別數據。

這就給江寒減少了許多負擔。

接下來,先將照片.rar解壓,然後觀察了一下。

三萬多張照片,按學校、班級分類,放入幾千個文件夾中。

每個文件的大小,都在10KB至30KB之間。

像素只有210*120,不算特別清晰,但看清面部特徵,還是沒什麼問題的。

其中,同班級裡重名的情況,都在姓名後標記着數字1、2……

江寒猜想,這可能是輸入報名表的順序。

接下來要做的,就是在臨時文件1裡,找到每張照片對應的人。

這很簡單,照片的文件名就是姓名,輕鬆就能和表格裡的名字對上。

在解決了數量不算很多的同班重名問題後,就生成了一個照片索引,將每一張照片和報名序號一一對應上了。

然後,是判斷性別,填入新《報名信息表》對應的單元格里。

這一步,按照高老師的想法,就是一個笨功夫,用眼睛去看,然後一個一個敲進去。

這十分麻煩,而且太沒效率。

江寒希望能找個輕巧的辦法,能更快、更好的完成這一步。

那麼,這樣的辦法真的有嗎?

是的。

江寒畢竟搞過機器學習,編程思維有點不一樣。

高老師那樣的普通程序員,也能做到剛纔那些步驟。

但江寒接下來的操作,就是他的思維盲區了。

機器學習裡,有多種算法,都可以輔助完成這樣的任務。

其中江寒最擅長的,自然是人工神經網絡。

人工神經網絡也分爲好多種類。

比如CNN,也就是卷積神經網絡,是最擅長圖形識別的;

而RNN,也就是循環神經網絡,比較適合語音識別、自然語言理解……

如果採用人工神經網絡,哪怕不出動CNN,只用多層神經網絡,也就是所謂的“深度學習”,也可以非常完美地解決這個問題。

但江寒琢磨了一下,還是放棄了這個想法。

一旦泄露出去,他很可能會有麻煩。

因爲這些技術的來源,他根本沒法解釋。

技術跨度太大了。

好吧,安全第一,先用“感知機”湊合一下。

哪怕準確率低點,也無所謂了。

江寒現在唯一可以拿出來的,就是“單層感知機”。

這種技術只能解決二分類問題,並且還要求線性可分。

好在當前所面臨的問題,這兩個要求正好都符合。

江寒重生前,做過一個實驗,用“單層感知機”識別手寫數字,應用場景與現在差不多。

效果也還過得去。

所以,看照片識別男女的任務,完全可以使用“單層感知機”解決。

說起來,這可能是神經網絡技術,在這個世界的第一次實戰?

江寒前幾天寫的論文裡,就有“單層感知機”的代碼,稍微改動了一下,就能用上了。

研究機器學習,首選語言是Python,語法簡單,開發效率高,不容易出錯,也不用關心底層如何實現。

不過,這篇論文的代碼,實在太簡單,用什麼都一樣。

所以,江寒使用了最熟悉的C++。

代碼略……

(PS:絕對不是空白太小寫不下。)

第392章 深度卷積神經網絡第357章 再給你一次機會第82章 渣男反編譯第286章 破解壞蘋果第116章 要節制一點了第195章 二八佳人體如酥第132章 做個小遊戲第421章 身世大白第402章 讀書之樂,臨行之前第175章 一億一個第179章 馬爾可夫隨機場第77章 多少次回眸第182章 罪證都沒銷燬乾淨第75章 金少樓的警告第15章 夏雨菲的羨慕第149章 夢後樓臺深鎖第333章 不怕教壞了乖女兒?第14章 別帶壞了江寒第158章 查崗?第309章 天賦異稟,出生太晚第255章 調整超參數,以及防止過擬合第374章 手工打造LED顯示器第216章 有些事,再多的錢也沒得談第24章 投稿AMC第325章 說好的理想男神呢?第357章 再給你一次機會第290章 其實已經有點過時了第427章 詭異的附加關卡第137章 聽鬆小院,好地方?第302章 聳人聽聞,觸目驚心第39章 這可能是個誤會第51章 任務分析第414章 蚊子再小也是肉第278章 Root Me,Hack Me第265章 羨慕使人質壁分離第324章 如果是江寒哥哥的話……第106章 查戶口第252章 生吃海蔘,不蘸醬油第146章 給你個眼神自己領會第101章 偷換概念第222章 《Adaline網絡》和《最小均方濾波器(LMS)》第272章 冤死駱駝的最後一根稻草第250章 幸虧有雙保險第278章 Root Me,Hack Me第109章 不擅長的事情第401章 有種奇遇叫頓悟第25章 我想參加NOIP第40章 好朋友來了第146章 給你個眼神自己領會第425章 街頭象棋第271章 破壞永遠比建設更容易第94章 水論文的正確姿勢第349章 說錯了什麼?第338章 脫胎換骨,戰神軍團第68章 舉報了、舉報了第417章 江寒的圍棋水平第14章 別帶壞了江寒第345章 意外連連第211章 就當幫他們改進一下服務質量了第101章 偷換概念第285章 “彈性碰撞”第137章 聽鬆小院,好地方?第426章 坦白從寬,回家過節。第275章 整整齊齊、更高更遠第414章 蚊子再小也是肉第66章 審覈過程第329章 拋棄框架,從零開始造輪子第107章 附加條件第214章 小夥子,你很有勇氣啊!第422章 更有效率的刷分第150章 全+1!第275章 整整齊齊、更高更遠第132章 做個小遊戲第208章 有埋伏第135章 巧合?考驗?第291章 驚動了各路神仙第372章 卷積神經網絡第302章 聳人聽聞,觸目驚心第345章 意外連連第361章 有點像“年輕”時的自己第199章 大功告成第264章 不知人間疾苦第113章 刷分的可能性第20章 寫論文第344章 好險間接那個啥第332章 大功告成,樂不思蜀第394章 超參數全自動搜索第93章 《泡沫》第48章 《如果時間能倒退》第124章 招兵買馬第305章 再不用就過期了第87章 夜話第268章 最終版本第88章 有點刺激第336章 女孩的心思你別猜第429章 阿法狗的三板斧第79章 李東的Show time第375章 沒有操作系統怎麼辦?第410章 六度分割理論?第87章 夜話