主成分分析:你為什麼還是單身?

主成分分析:你為什麼還是單身?

歡迎關注天善智能,我們是專注於商業智能BI,人工智能AI,大數據分析與挖掘領域的垂直社區,學習,問答、求職一站式搞定!

對商業智能BI、大數據分析挖掘、機器學習,python,R等數據領域感興趣的同學加微信:tstoutiao,邀請你進入數據愛好者交流群,數據愛好者們都在這兒。

作者:herain R語言中文社區專欄作者

知乎ID:https://www.zhihu.com/people/herain-14

前言

問天問地不如問知乎:【 主成分分析偏向統計技術,小白可以跳過】

天地不仁,以萬物為芻狗,天地沒有閒工夫關心的單身那件小事;所以答案在知乎,同是天涯淪落人,感謝知乎好心人。一起看看知友的回答吧。

本文綱目:

1.數據來源簡述

2.數據的簡單描述

  • 2.1 亮眼高讚的回答
  • 2.2 數據的總體描述
  • 2.3 R製作關鍵詞詞頻圖

3.主成分分析實戰

  • 3.1 ,巧妙的數據轉換
  • 3.2,什麼是主成分分析?
  • 3.3,主成分分析步驟
  • 3.4,R具體操作

4.寄託未來

1.數據來源簡述

感謝知乎平臺,感謝知友貢獻,感謝Python:獲取知乎【單身理由】,【單身的好處】,【為什麼越來越多的人選擇單身】三個搜索關鍵詞的搜索數據。

主成分分析:你為什麼還是單身?

數據獲取流程圖

 1#數據表結構
2mysql> desc why_single;
3+-----------+--------------+------+-----+---------+----------------+
4| Field | Type | Null | Key | Default | Extra |
5+-----------+--------------+------+-----+---------+----------------+
6| w_id | int(20) | NO | PRI | NULL | auto_increment |
7| title | varchar(100) | YES | | NULL | |
8| content | text | YES | | NULL | |
9| vote_num | int(4) | YES | | NULL | |
10| words | varchar(500) | YES | | NULL | |
11| words_num | int(4) | YES | | NULL | |
12+-----------+--------------+------+-----+---------+----------------+
13
14#單條數據: title題目,content文章內容,vote_num贊同數,words關鍵詞,words_num關鍵詞個數
15
16mysql> select * from why_single limit 1 \G;
17*************************** 1. row ***************************
18 w_id: 602
19 title: 純屬個人觀點客觀上來說,現在單身的挺多都是條件很好的。拿我一個朋友的姐姐舉個栗子長相中等偏上,性格溫
20 content: 純屬個人觀點客觀上來說,現在單身的挺多都是條件很好的。拿我一個朋友的姐姐舉個栗子長相中等偏上,性格溫柔,家庭條件一般可是人家自己努力呀,本科,研究生出來工作,月薪,後公司出錢出國培訓,回來後升職加薪,工資。現在出頭了,周圍有人介紹過相親,可是對方一聽這條件都走了,有的覺得太女強人了,有的覺得自己薪水沒她高難堪,有的覺得她看不上自己主動放棄。事實上,她是一旦你跨出第一步,即使之後的步都由她來走也無所謂這種女生,然而從未有人跨出這一步來。再者有部分是高不成低不就的,反正還年輕,也不急,詩酒趁年華嘛。也有將感情視為重大的抉擇,希望慎重考慮這些也不在少數,比如我記幾。希望談一場不分手的戀愛,所以就會想得很多,哎我能承擔兩個人在一起後的責任嗎?若有了孩子我能教育得好嗎?再反過來審視自己,嗯還差得很遠,算了再等等。總得來說。畢竟人生只有一次,要為自己而活。你若盛開,清風自來。

21 vote_num: 0
22 words: 條件,不急,月薪,一般,家庭,人家,溫柔,公司,純屬,教育,重大,朋友,客觀,孩子,姐姐,感情,個人觀點,研究生,工作,性格,詩酒,年輕,努力,培訓,對方,很好
23words_num: 26
24

2.數據的簡單描述

2.1

亮眼的回答

主成分分析:你為什麼還是單身?

亮眼的高贊回答

2.2

數據的總體描述

1#文章總數,贊同總數,關鍵詞總數
2select count(1) as article_num, sum(vote_num) as vote_num , sum(words_num) from why_single;
3+-------------+----------+----------------+
4| article_num | vote_num | sum(words_num) |
5+-------------+----------+----------------+
6| 535 | 295044 | 11154 |
7+-------------+----------+----------------+
81 row in set (0.01 sec)
主成分分析:你為什麼還是單身?

2.3

R製作關鍵詞詞頻圖

 1mysql> select words from why_single order by vote_num desc limit 2 \G;
2*************************** 1. row ***************************
3words: 女博士,博士,工作,幹部,答友,媽呀,人生,幹嘛,兒子,優秀,廳長,男人,情趣,經歷,感情,正統,有點,背景,羊毛,清醒,氮氣,分數,教育,頭腦,家務,複雜,家庭,我會,圍觀,充滿
4*************************** 2. row ***************************
5words: 問題,態度,女生,情緒,情感,生活,對方,階段,用法,友善,愛意,塊錢,故事,心情,方式,預測,道理,我會,豐富,乾貨,人生,束縛,女朋友,禮貌,人格,準則,男生,緊急,懸念,熱烈
6*************************** 3. row ***************************
7words: 生活,北京,女人,經歷,套路,婚姻,邏輯,同事,社會,質量,孩子,無法,男生,快樂,車房,合適,巨大,妻子,消費者,廊坊,全職,旅遊,故事,問題,事業,不錯,幹嘛,評論,洗腦,個人
8#R繪製詞雲圖
9> data110> v 11> wordcloud(v$x,v$Freq,colors = rainbow(length(v$Freq)));
主成分分析:你為什麼還是單身?

關鍵詞高頻詞雲

3.主成分分析實戰

3.1

巧妙的數據轉換

從上文環境中,可知我們有535篇文章,每個文章都有贊同數(用於加權),每個文章的關鍵詞反映出對單身原因的看法,1篇文章對應多個關鍵詞,是不是說明1篇文章反饋出多種單身的原因呢?基於詞雲我們可以將單身的原因進行聚類分析。量化每一篇文在聚類原因中的權重值,這也我們是不是將數據轉化為 535 行,n類(聚類個數)的單身原因權重表呢?

關鍵詞歸為7大類:

社會環境:社會,世界,中國,鄉鎮,農村,交通,教育.... 
家庭因素:家,家庭,父母,子女,爸爸,媽媽,兄弟,姐妹....
生活態度:旅行,電影,美食,自己,生活,讀書....
時間觀念:青春,年輕,大齡,時間,自由,日子,理想....

愛情婚姻觀:愛情,婚姻,幸福,顏值,三觀,心動,喜歡....
工作壓力:加班,雙休,單位,公司,考勤,工作,績效....
經濟基礎:事業,房子,車子,花錢,話費,房價,工資,月薪....

[對應詞頻*贊同率多詞求和 = 因素重要程度值]生產數據表:選取贊同數>=100 的114篇文章,生產114行7列的二位數據表

主成分分析:你為什麼還是單身?

 1mysql> select count(1) from why_single where vote_num>=100 \G; 

2*************************** 1. row ***************************
3count(1): 114
41 row in set (0.00 sec)
5> read.table(pipe("pbpaste"),sep='\t',header=T)->data
6> data
7 x1 x2 x3 x4 x5 x6 x7
81 793 517 211 728 900 1434 381
92 526 225 428 728 728 1219 581
103 499 473 272 926 926 573 1354
114 172 414 940 175 175 62 234
125 709 387 1003 295 295 1229 755
136 928 409 160 877 877 1025 1496
147 970 671 677 407 407 490 1146
158 574 265 893 584 584 1187 79
16.......

3.2

什麼是主成分分析?

主成分的概念由Karl Pearson在1901年提出

考察多個變量間相關性一種多元統計方法

研究如何通過少數幾個主成分(principal component)來解釋多個變量間的內部結構。即從原始變量中導出少數幾個主分量,使它們儘可能多地保留原始變量的信息,且彼此間互不相關

主成分分析的目的:數據的壓縮;數據的解釋

常被用來尋找判斷事物或現象的綜合指標,並對綜合指標所包含的信息進行適當的解釋

3.3

主成分分析步驟

對原來的p個指標進行標準化,以消除變量在水平和量綱上的影響

根據標準化後的數據矩陣求出相關係數矩陣

求出協方差矩陣的特徵根和特徵向量

確定主成分,並對各主成分所包含的信息給予適當的解釋

3.4

R具體操作

1:載入數據到R控制檯

 1> read.table(pipe("pbpaste"),sep='\t',header=T)->data
2> data
3 x1 x2 x3 x4 x5 x6 x7
41 793 517 211 728 900 1434 381
52 526 225 428 728 728 1219 581
63 499 473 272 926 926 573 1354
74 172 414 940 175 175 62 234
85 709 387 1003 295 295 1229 755
96 928 409 160 877 877 1025 1496
107 970 671 677 407 407 490 1146
11.......

2:求出樣本相關係數矩陣

 1> R 2> R
3 x1 x2 x3 x4 x5 x6 x7
4x1 1.000 -0.023 -0.047 0.050 0.055 0.007 0.056
5x2 -0.023 1.000 -0.014 -0.113 -0.113 0.039 -0.005
6x3 -0.047 -0.014 1.000 -0.007 -0.013 0.055 -0.029
7x4 0.050 -0.113 -0.007 1.000 0.999 0.021 -0.055
8x5 0.055 -0.113 -0.013 0.999 1.000 0.029 -0.058
9x6 0.007 0.039 0.055 0.021 0.029 1.000 0.042
10x7 0.056 -0.005 -0.029 -0.055 -0.058 0.042 1.000
11
12> PCA=princomp(data,cor=T)
13> PCA
14Call:
15princomp(x = data, cor = T)
16
17Standard deviations:
18 Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
191.42659724 1.04377423 1.03044704 0.99731643 0.96457786 0.94186945 0.03695955
20
21 7 variables and 114 observations.
22
23> summary(PCA,loadings=T)
24Importance of components:
25 Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
26Standard deviation 1.426597 1.0437742 1.0304470 0.9973164 0.9645779 0.9418695 0.0369595547
27Proportion of Variance 0.290740 0.1556378 0.1516887 0.1420914 0.1329158 0.1267312 0.0001951441
28Cumulative Proportion 0.290740 0.4463778 0.5980665 0.7401579 0.8730737 0.9998049 1.0000000000
29
30Loadings:
31 Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
32x1 0.625 0.115 0.764
33x2 -0.152 0.239 -0.830 0.113 0.457
34x3 -0.537 0.380 0.484 0.308 0.488
35x4 0.695 0.707
36x5 0.695 -0.707
37x6 0.793 -0.595
38x7 0.553 0.393 0.222 -0.550 0.428

從輸出的結果可以看出,主成分的標準差,即相關矩陣的七個特徵值的開方:

主成分分析:你為什麼還是單身?

前五項:0.290+0.155+0.151+0.142+0.126=0.864大於80%,構成主成分(需要校驗);

說明7大因素中:社會環境,家庭因素,生活態度,時間觀念,愛情婚姻觀 構成了單身原因的主要成分;而,工作壓力,經濟基礎這兩張成分卻居於次要位置。

人是社會的動物,社會環境左右著我們的主觀意識,在潛移默化中影響我們人生的重大決策。

如下:通過主成分碎石圖,可以直觀的看著7個因素的影響成分大小:

 1#預估成分影響
2> round(predict(PCA),3)
3 Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
4 [1,] 1.401 0.705 0.607 -0.946 0.590 -1.650 -0.382
5 [2,] 1.049 0.188 0.264 0.403 -0.209 -1.391 0.015
6 [3,] 1.672 1.372 -0.207 -0.162 -1.332 0.554 0.004
7 [4,] -1.746 -1.633 -1.689 0.901 0.136 0.655 -0.015
8 [5,] -1.062 -0.196 1.254 1.143 0.812 -0.298 0.003
9 [6,] 1.588 2.572 0.735 -0.038 -0.559 -0.195 0.015
10 [7,] -0.731 1.407 0.188 0.155 0.776 1.199 -0.001
11 [8,] 0.428 -1.119 0.339 0.833 1.056 -1.123 0.010
12 [9,] 1.058 -0.624 -1.645 0.909 -0.389 -0.897 0.003
13
14#畫碎石圖
15> screeplot(PCA, type='lines')
主成分分析:你為什麼還是單身?

主成分碎石圖

 1> PCA$scores #可計算主成分得分
2 Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
3 [1,] 1.40056690 0.70517326 0.606696840 -0.94638853 0.589941685 -1.65041421 -3.821126e-01
4 [2,] 1.04900803 0.18822092 0.264318975 0.40340326 -0.208947445 -1.39094323 1.453613e-02
5 [3,] 1.67243670 1.37248483 -0.206803150 -0.16197874 -1.331755444 0.55412967 4.289578e-03
6 [4,] -1.74644756 -1.63308359 -1.688867556 0.90089657 0.136496255 0.65475617 -1.505974e-02
7 [5,] -1.06222511 -0.19584553 1.253599410 1.14341654 0.811554283 -0.29819077 3.002552e-03
8 [6,] 1.58829651 2.57186495 0.735027870 -0.03833332 -0.558572926 -0.19522828 1.509744e-02
9 [7,] -0.73148282 1.40740690 0.188022616 0.15503755 0.775989636 1.19936396 -1.329158e-03
10 [8,] 0.42828896 -1.11856447 0.338679544 0.83288277 1.056283875 -1.12349627 9.765501e-03
11 [9,] 1.05783957 -0.62446493 -1.645173343 0.90942155 -0.388630187 -0.89748195 3.366658e-03
12 [10,] -0.59822192 -0.21181364 2.307340901 1.48071324 -0.487337546 0.24474231 -1.442962e-03
13 [11,] -0.82908479 1.25097668 0.535623214 -1.56504778 0.317734183 -0.34005001 1.382917e-02
14
15> load16> plot(load[,1:2],xlim=c(-0.6,0.6),ylim=c(-0.6,0.6))
17> text(load[,1],load[,2],adj=c(0.5,-0.5))
18> abline(h=0);abline(v=0);
主成分分析:你為什麼還是單身?

兩個主成分的載荷圖

4.寄託未來

單身不是窮困無奈的必然選擇,是社會發展潮流帶來的一種新的生活方式,單身的渴望自由瀟灑的生活,更多的幸福感來自於自己。

要自律。當你時刻不要讓生活約束自己的時候,你還要時刻自己約束著自己,豐富自己閱歷、知識,能夠承受著起歲月的磨鍊。

人生有一種成功就是按照自己喜歡的方式活著。

主成分分析:你為什麼還是單身?


今日話題:

你是如何看待單身主義者的?可以在評論區和我們分享你的觀點。


主成分分析:你為什麼還是單身?

往期精彩:

  • 去面試字節跳動,你最好有點心理準備!
  • R語言自然語言處理:中文分詞
  • R語言中文社區2018年終文章整理(作者篇)
  • R語言中文社區2018年終文章整理(類型篇)
主成分分析:你為什麼還是單身?

回覆 爬蟲 爬蟲三大案例實戰

回覆 Python 1小時破冰入門

回覆 數據挖掘 R語言入門及數據挖掘

回覆 人工智能 三個月入門人工智能

回覆 數據分析師 數據分析師成長之路

回覆 機器學習 機器學習的商業應用

回覆 數據科學 數據科學實戰

回覆 常用算法 常用數據挖掘算法


分享到:


相關文章: