《重生學神有系統》第51章 「知機」的初次實戰
業餘黑客有個潛規則。
政府機關、金融系統、電子商務……這類網站的後臺,是機重地,通常有高手坐鎮,沒事最好別去溜達。
被網監或者安全專家盯上,十有八九落不了好。
而個人網站、小型辦公網路、學校網站……
這種信息安全不太敏的,僅僅是瀏覽或下載一些數據,一般不會有什麼大問題。
比如從鐵道部網12306爬點數據,做個輔助訂票系統什麼的……
但無論任何地方,肆意破壞總是不被允許的,這是底線。
《原始數據表》的奇怪況,份證位數不對,側面支持了這種可能。
通過黑客手段獲取數據,有時候會遇到一些匪夷所思的問題,比如數據格式特殊,下載的數據寬度限……
有時候,甚至在後臺資料庫里,只能找到數據的一部分,而其餘部分被保存在無法訪問的文件里。
寫後臺程序的人,會基於各種各樣的理由,寫出可讀極差的代碼。
比如:讀寫效率、數據安全、修補bug、系統健壯……
又或者不想被人繼承代碼,取代自己的位置,甚至單純為了個人興趣、編程風格……
都可能導致這些人,搞出種種令人費解的作。
當然,也可能老高的技還有缺陷,或者他是從虛擬存、換文件里挖掘出來的數據。
也有可能在「作案」過程中被人盯上,不得不提前斷開連接……
總之,擺在江寒面前的,就是這麼兩張各有缺陷的表格,外加一個圖片包。
接下來,江寒首先要做的,是從《原始數據表》里,篩選出需要的記錄,複製到《報名信息表》里。
這一步非常簡單,只要用excel自帶的VBScript編寫一個小腳本,將兩個表格按照姓名匹配,就可以得到每個考生在原始表裡的行號。
當然,同名同姓是避免不了的,可能報名信息里一個「張三」,在原始數據里會找到一堆「張三」……這個一會兒再說。
腳本編程非常簡單,江寒只用了二十分鐘,就寫完程序並調試無誤。
按了一下預設的快捷鍵,腳本開始執行。
一邊是3萬多行的考生姓名,一邊是10萬多行的原始數據,腳本足足跑了八分鐘,才得到了一個映關係表。
接下來,是第二個腳本,參照映關係表,將原始數據文件篩選出需要保留的行,其他行全都刪除,然後按照《報名信息表》的序號,重新進行排序,得到臨時文件1。
這個臨時文件的行數,要比報名表多出幾千行,這是因為江寒對重名進行了理,將重名的人都編上了相同的二級序號。
接下來理重名。
經過一番分析,江寒發現,原始數據表和報名信息表裡的數據,排列順序是有規律的。
其以地區為主關鍵字,所在學校為次要關鍵字,而所在班級則是第三關鍵字排序。
也就是說,一個學校里,一個班級的人,都挨在一起,學校、地區之間也沒有混。
這樣就好辦了。
由於臨時文件已經按序號排列,重名的人擁有同樣的二級序號,自然就聚攏在了一起。
這時,只要看一下這些人的所在地區和學校,就能輕鬆分辨出哪些是多餘的,那個才是真正對應於《報名信息表》的。
如果一個班級也有同名,就只能況分析了,實在確定不了的,就先記下來,放在一邊,以後再說。
一番整理后,臨時文件1已經十分接近高老師希得到的《報名信息表》。
聯繫電話、家庭住址,畢業學校、班級、民族、年齡、出生年月日都有了。
接下來是重頭戲,通過照片判斷每個學生的別。
幸運的是,雖然《原始數據表》里的份證號,殘缺不全,導致別信息不可用,可是《報名信息表》里還有部分殘餘的別數據。
這就給江寒減了許多負擔。
接下來,先將照片.rar解,然後觀察了一下。
三萬多張照片,按學校、班級分類,放幾千個文件夾中。
每個文件的大小,都在10KB至30KB之間。
像素只有210*120,不算特別清晰,但看清面部特徵,還是沒什麼問題的。
其中,同班級里重名的況,都在姓名后標記著數字1、2……
江寒猜想,這可能是輸報名表的順序。
接下來要做的,就是在臨時文件1里,找到每張照片對應的人。
這很簡單,照片的文件名就是姓名,輕鬆就能和表格里的名字對上。
在解決了數量不算很多的同班重名問題后,就生了一個照片索引,將每一張照片和報名序號一一對應上了。
然後,是判斷別,填新《報名信息表》對應的單元格里。
這一步,按照高老師的想法,就是一個笨功夫,用眼睛去看,然後一個一個敲進去。
這十分麻煩,而且太沒效率。
江寒希能找個輕巧的辦法,能更快、更好的完這一步。
那麼,這樣的辦法真的有嗎?
是的。
江寒畢竟搞過機學習,編程思維有點不一樣。
高老師那樣的普通程序員,也能做到剛才那些步驟。
但江寒接下來的作,就是他的思維盲區了。
機學習里,有多種演算法,都可以輔助完這樣的任務。
其中江寒最擅長的,自然是人工神經網路。
人工神經網路也分為好多種類。
比如CNN,也就是卷積神經網路,是最擅長圖形識別的;
而RNN,也就是循環神經網路,比較適合語音識別、自然語言理解……
如果採用人工神經網路,哪怕不出CNN,只用多層神經網路,也就是所謂的「深度學習」,也可以非常完地解決這個問題。
但江寒琢磨了一下,還是放棄了這個想法。
一旦泄出去,他很可能會有麻煩。
因為這些技的來源,他本沒法解釋。
技度太大了。
好吧,安全第一,先用「知機」湊合一下。
哪怕準確率低點,也無所謂了。
江寒現在唯一可以拿出來的,就是「單層知機」。
這種技只能解決二分類問題,並且還要求線可分。
好在當前所面臨的問題,這兩個要求正好都符合。
江寒重生前,做過一個實驗,用「單層知機」識別手寫數字,應用場景與現在差不多。
效果也還過得去。
所以,看照片識別男的任務,完全可以使用「單層知機」解決。
說起來,這可能是神經網路技,在這個世界的第一次實戰?
江寒前幾天寫的論文里,就有「單層知機」的代碼,稍微改了一下,就能用上了。
研究機學習,首選語言是Python,語法簡單,開發效率高,不容易出錯,也不用關心底層如何實現。
不過,這篇論文的代碼,實在太簡單,用什麼都一樣。
所以,江寒使用了最悉的C++。
代碼略……
(PS:絕對不是空白太小寫不下。)。
重生爭霸星空
重頭再來,我命由我不由人,重頭再來,逆天爭霸逞英雄,重頭再來,一人征戰爲了誰?重頭再來,久經戰亂人心亂!……曾經的封神玩家之一,這一世要攀向遊戲的更高頂點。十年的遊戲頂級玩家經驗,重生於遊戲公測之前……
5 26992豪門第一贅婿
十年疆場,不敗神話。認識他的,都尊稱他一聲少帥。為尋找十年的她,選擇退役,成為寵妻狂魔,為妻打造東方第一豪門……
8 60897逆天神醫
真正的神醫是什麼?是會殺人的神醫! 殺一人,救百人,殺不殺?殺! 這是一個不一樣的神醫;他妙手回春,有人將他的名字刻在長生牌位之上,日夜供奉。 他受人唾罵,有人恨不得將他剝皮抽筋,日夜詛咒。 他左擒濟世壺,一手金針渡人苦海;他右持殺生劍,一劍送人斷頭臺。 可救人病,亦可要人命!
8.33 611560爭霸:開局召喚西涼鐵騎
林逸穿越異界成為世子殿下,這里沒有四書五經,也沒有諸子百家,但同樣戰亂不休,王朝更迭,三公九卿,王侯將相,逐鹿中原。所幸林逸覺醒系統,開局召喚三國時期猛將馬超以及西涼鐵騎,只要讓人信服、把人打服,就能獲得三國時期的謀士、武將、士兵、糧食武器等等好東西。所有人頓時都驚呆了,這還是他們認識的那個廢物世子嗎?為什麼世子殿下那麼強!
8 103931全家穿越后,錦鯉閨女躺贏了
李妤剛決定離婚,再睜眼全家穿到了災荒年代。原主一家三口全是舔狗,自己餓著肚子,也要讓白月光一家吃飽。婆婆更是難纏、妯娌算計不斷……最氣憤的是白月光和前夫的白月光長得一模一樣!這舔狗誰愛當誰當,她才不當!帶著她的錦鯉閨女每天上山撿撿撿!日子越來越舒心!被冷落的白月光一家徹底慌了,日子越過越差不說,巴巴地貼上來求原諒。前世她踹開的狗男人更是化身狗屁膏藥。“娘子,累了嗎?我給你捶腿。”“娘子,餓了嗎?我來煮飯。”“娘子,今晚可以不睡地鋪嗎?”李妤冷笑一聲。“滾。”
8 7240獸域無疆
凜冬將至,整個星球又一次陷入了物資恐慌,強大的魔獸匯聚在一起,形成了排山倒海的受潮…這一次,人類能否抵御?當食物成為終極問題的時候,活下去,要的不僅僅是勇氣!
8.33 13911