最近在看《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》的時(shí)候萌生了一個(gè)想法,自己去網(wǎng)上爬一些數(shù)據(jù)按照書上的方法處理一下,不僅可以加深自己對書本的理解,順便還可以在github拉拉人氣。剛好在看決策樹這一章,書里面的理論和例子讓我覺得這個(gè)理論和選擇對象簡直不能再貼切,看完長相看學(xué)歷,看完學(xué)歷看收入。如果可以從婚戀網(wǎng)站上爬取女性的數(shù)據(jù)信息,手動給她們打標(biāo)簽,并根據(jù)這些數(shù)據(jù)構(gòu)建決策樹,不就可以找出自己的擇偶模式了嗎!github項(xiàng)目:huatian-funny,下面就詳細(xì)的闡釋一下。
數(shù)據(jù)爬取
之前在世紀(jì)佳緣上爬取過類似的數(shù)據(jù),總體的感覺是上面的用戶數(shù)據(jù)要么基本不填要么一看就很假,周圍的一些老司機(jī)建議可以在花田網(wǎng)上看下,數(shù)據(jù)質(zhì)量確實(shí)高很多,唯一的缺點(diǎn)就是上面的數(shù)據(jù)不給爬,搜索用戶的API需要登錄,而且只顯示三十多個(gè)用戶的信息。剛好我需要的數(shù)據(jù)也很少,就把搜索條件劃分的很細(xì),每次取到的數(shù)據(jù)很小,但最終匯集的數(shù)量還是相當(dāng)可觀的,最終獲取了位置在上海年齡22-27共計(jì)2000個(gè)左右的用戶數(shù)據(jù)。填寫好spider.py中的用戶名和密碼,直接運(yùn)行這個(gè)文件就可以爬取數(shù)據(jù),因?yàn)閿?shù)據(jù)量不大,很快就可以運(yùn)行完畢,存儲在mongodb中的數(shù)據(jù)如下:

爬蟲用到的工具是requests,流程上也很簡單,先發(fā)送登陸請求獲取cookie,然后調(diào)用搜索API獲取數(shù)據(jù),拿到的數(shù)據(jù)是json格式,不需要任何轉(zhuǎn)換直接存儲mongodb,非常的方便,唯一想吐槽的就是花田搜索API接口竟然用的是POST方式,太沒有專業(yè)水準(zhǔn)了。稍微提一下如何用request獲取cookie,用Session構(gòu)建一個(gè)session對象,用這個(gè)對象發(fā)送登陸請求后,之后的請求都會自動帶上登陸返回的cookie,使用起來非常的簡單。

給用戶打標(biāo)簽
由于決策樹屬于監(jiān)督學(xué)習(xí),需要一個(gè)給定的標(biāo)簽,因此需要自己根據(jù)用戶的外貌、年齡、學(xué)歷等多個(gè)維度的判斷給出一個(gè)標(biāo)簽,最后生成的決策樹在一定程度上就可以反映自己的擇偶標(biāo)準(zhǔn)。針對女性的標(biāo)簽很簡單粗暴,只有滿意和不滿意兩種,有興趣的同學(xué)可以按照真實(shí)的情況設(shè)置更多的標(biāo)簽,例如優(yōu)秀、一般、備胎、不合格等等。因?yàn)橥饷彩沁x擇對象過程中一個(gè)必不可少的要素,把相貌量化至關(guān)重要,因?yàn)闆]有相關(guān)的工具根據(jù)頭像進(jìn)行評分,只能個(gè)人主觀進(jìn)行量化,采用了當(dāng)下非常流行的十分制。
為了增加打標(biāo)簽的效率,專門寫了一個(gè)桌面窗口,運(yùn)行mark.py即可,運(yùn)行結(jié)果如下。(tkinter是一個(gè)坑,調(diào)代碼的時(shí)間夠我把整個(gè)數(shù)據(jù)集看好幾遍了,不過真的用起來的時(shí)候還是挺有意思的)
備注:因?yàn)閯傞_始看的很多用戶只有頭像、年齡、身高、工資、學(xué)歷這五個(gè)信息,所以整個(gè)過程中只參考了這五個(gè)維度進(jìn)行評價(jià),下面的決策樹也是根據(jù)這五個(gè)維度進(jìn)行處理。
訓(xùn)練數(shù)據(jù)
決策樹
機(jī)器學(xué)習(xí)中,決策樹是一個(gè)預(yù)測模型,它代表的是對象屬性與對象值之間的一種映射關(guān)系。樹中每個(gè)節(jié)點(diǎn)表示某個(gè)對象,而每個(gè)分叉路徑則代表的某個(gè)可能的屬性值,而每個(gè)葉結(jié)點(diǎn)則對應(yīng)從根節(jié)點(diǎn)到該葉節(jié)點(diǎn)所經(jīng)歷的路徑所表示的對象的值。決策樹僅有單一輸出,若欲有復(fù)數(shù)輸出,可以建立獨(dú)立的決策樹以處理不同輸出。從數(shù)據(jù)產(chǎn)生決策樹的機(jī)器學(xué)習(xí)技術(shù)叫做決策樹學(xué)習(xí), 通俗點(diǎn)說就是決策樹,說白了,這是一種依托于分類、訓(xùn)練上的預(yù)測樹,根據(jù)已知預(yù)測、歸類未來。
理論方面我可以參考《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》第三章或者這篇博客,很淺顯易懂的解釋了具體的原理,我就不贅述了。
結(jié)果展示
代碼參考的是《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,針對現(xiàn)實(shí)自己做了一些優(yōu)化調(diào)整,和原來的代碼不是完全相同,運(yùn)行train.py就可以顯示出結(jié)果,如下:

因?yàn)榫€很擠,調(diào)了很久只能拿到這個(gè)效果了。到這兒已經(jīng)很清晰明了的闡明了主題,我就是一個(gè)外貌黨,顏值高的pass,顏值低的忽略,不高不低的考慮的相當(dāng)糾結(jié)。有興趣的同學(xué)可以自己試一試。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8541瀏覽量
136233 -
python
+關(guān)注
關(guān)注
57文章
4857瀏覽量
89586
原文標(biāo)題:Python抓取婚戀網(wǎng)用戶數(shù)據(jù),用決策樹生成自己擇偶觀
文章出處:【微信號:WUKOOAI,微信公眾號:悟空智能科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
關(guān)于決策樹,這些知識點(diǎn)不可錯過
怎樣使用UNICO生成具有多個(gè)決策樹的UCF文件呢
決策樹的生成資料
決策樹的構(gòu)建設(shè)計(jì)并用Graphviz實(shí)現(xiàn)決策樹的可視化
機(jī)器學(xué)習(xí):決策樹--python
機(jī)器學(xué)習(xí)之決策樹生成詳解
決策樹的原理和決策樹構(gòu)建的準(zhǔn)備工作,機(jī)器學(xué)習(xí)決策樹的原理
決策樹的基本概念/學(xué)習(xí)步驟/算法/優(yōu)缺點(diǎn)
什么是決策樹模型,決策樹模型的繪制方法

大神教你怎么用Python抓取婚戀網(wǎng)用戶數(shù)據(jù),用決策樹生成自己擇偶觀
評論