《長城》教你逆天改命
因為只有這個跟自己的生活密切相關嗎。
但是當我拿到數據的時候,特別是我還學會了數據分析的時候。
我的關注點就完全變了(拜得到眾大神所賜),變成從投資的角度來審視電影。
我突然發現這個世界真的蠻精彩的!
數據來源是kaggle的那個被經常下載的那個電影數據。
library("RColorBrewer")library("stringr")library(car)#這裡要說明一下,書上說的是用read.table,但是我用的時候各種報錯,超級麻煩#然後我就百度了一下,在導入有大量數據的csv文件的時候一般用read.csvaData<-read.csv("C:/Users/wlh/Desktop/下載的數據/movie_metadata.csv", header=T)
沒想到,這個第一部分就一巴掌把我從自我感覺良好狀態給扇醒了。你不按套路出牌啊!
沒辦法通過大量的谷歌,百度。研究別人的例子,外加各種試錯終於找到了能用的方法。不過還真是鍛煉能力啊!
#移除所有有缺失的函數aData<-na.omit(aData)#觀察數據發現有不合時宜的字元出現在movie_title列里,直接幹掉split1<-str_split_fixed(aData$movie_title,"聽",2)aData$movie_title<-split1[,1]#查看數據類型,以方便後面的計算attach(aData)class(title_year)class(duration)class(movie_facebook_likes)....#凡是有著數字的都是int型detach(aData)
attach() ............ detach()
上面省代碼的這兩行,說實話真的很好用。這不單單能夠減少你的麻煩程度,還能夠提高你代碼的運算速度!
#合併同樣的電影aData<-aData[!duplicated(aData[,c("movie_title")]),]#找出最賣座的電影,導演,和演員#先分組把電影名和票房moName<-c("movie_title","gross")movName<-aData[moName]#排序movName<-movName[order(-movName$gross),]#排序,保留前二十名的觀測attach(movName)movName<-movName[order(-gross),]movName<-movName[20:1,]detach(movName)#用barplot畫出圖形par(mar=c(5,8,4,2))par(las=2)barplot(movName$gross,names.arg = movName$movie_title, horiz=TRUE, cex.names=0.9, col=brewer.pal(20, "Set1"))
上圖:
可以直觀的看到這些個最賺錢的前二十部電影。然後下面是重頭戲,名字叫做找相關!
#然後開始找各種相關#選入變數aData1<-aData[,c("num_critic_for_reviews","duration","director_facebook_likes", "actor_3_facebook_likes","actor_1_facebook_likes", "gross","num_voted_users","cast_total_facebook_likes", "facenumber_in_poster","num_user_for_reviews", "budget","actor_2_facebook_likes","imdb_score", "aspect_ratio","movie_facebook_likes")]related<-cor(aData1)#畫出相關矩陣圖library(car)scatterplotMatrix(aData1, spread=FALSE, smoother.args=list(lty=2), main="film Plot Matrix")
這個圖是這個樣子的:
我感覺上面這個圖你看著也費勁,那我就把數據拆解開給你解釋一下吧。我們先來看看gross(票房)這一列對應的最左邊這一列就是gross關於其他項的相關係數,這裡要特別說明一下觀測和變數是一樣的。
(大於0.4說明有相關性,大於0.7就說明是強相關)
那麼影響票房最主要的因素有什麼呢?有num_voted_users(買票的總人數)0.625,num_user_for_reviews(重複觀影的人數)0.545,num_critic_for_reviews(影評人重複觀看的次數)0.458。
這不廢話嗎,票房當然跟這些買票看你電影的人數正相關啊!@張藝謀 @景甜
別急啊,這不是還有這麼多數據的嗎,不愁找出一些小秘密。
咱們繼續分析,這三個對票房影響最大的因素,他們本身又跟什麼密切相關呢?
先看num_voted_users(買票的總人數)0.625,這個因素跟什麼正相關?
num_user_for_reviews(重複觀影人數)0.784,num_critic_for_reviews(影評人重複觀看的次數)0.593,movie_facebook_likes(非死不可的點贊數)0.519,imdb_score(imd評分)0.479那跟總票房相關的第二大因素num_user_for_reviews(重複觀影的人數)0.545呢?
我們去除重複的相關項,經過了重重的抽絲剝繭,你會發現有一個數據冒出來的次數特別多!只要是關於票房的不管什麼因素都跟它有關!
對,你沒有看錯,那就是num_critic_for_reviews(影評人重複觀看的次數)
可以說num_critic_for_reviews(影評人重複觀看的次數)就是電影票房的關鍵因素!
那影響這個關鍵因素的數據又是什麼呢?
答案是,強相關數據movie_facebook_likes(非死不可點贊數)0.703!啊!不知為何,突然明白了張藝謀在宣傳《長城》期間冒天下之大不韙,就算打官司也要跟影評人死磕到底的原因了。
目的就是:丫都給我閉嘴!
那剩下的那些影評人呢?玩命夸特效,場面,製作,天朝多少個第一,「你知道張導有多努力嗎」!!!
為啥非要跟這幫人過不去呢?從今天的的分析看來,這幫人能量確實大!
但好在,對於電影到底好看不好看這種核心問題,這群人精一般都是模稜兩可,三緘其口.....
儘管人的因素搞定的差不多了,但是豆瓣(相當於天朝的movie_facebook_likes)那邊不好搞。
我印象很深的就是《長城》剛上映前兩天豆瓣評分被刷到5.6,第三天刷到5.8。然後就死活刷不上去了!我為什麼用「刷」這個字呢?
這是今天的截圖問:豆瓣評分太低咋辦?
答:用水軍啊......
問:那豆瓣評分還不高咋辦?
答:屏蔽豆瓣!
那一段時間只要你的搜索關鍵詞里有,長城和豆瓣這倆詞的話,你是找不到豆瓣網站的!而且豆瓣也非常聰明的保持了沉默。。。
當然我寫以上文字並不是在黑誰(心虛),而是想說名數據分析真的很厲害!如果按照分析後的結論強行逆天改命的話,起碼就票房來說確實不會太難看!
更何況人家可是直接就能把num_voted_users(買票的總人數)這個第一要素掌握手中的啊。想想那段時間的排片率,是不是電影院里只有《長城》!
總結一下,其實num_critic_for_reviews(影評人重複觀看的次數)和movie_facebook_likes(非死不可點贊數)這倆關鍵要素反映的是什麼?
其實就是口碑營銷嗎。本質上講,想賺錢那就拍出觀眾喜歡的電影。注意這裡用的是喜歡而不是傳統意義上的好電影。如果只是討好觀眾的話賺錢難度就大大降低了
想想現在的各種超級英雄電影,什麼《變形金剛5》,《星球大戰7》,《速度與激情8》等等。找到一個觀眾喜歡的題材,然後電視劇化。。。。。媽媽再也不用擔心我的票房!
下面繼續
#下一部是否賺錢的預測#讓我們先選出最賺錢的前10名導演total1<- as.data.frame.table(tapply(aData$gross,list(aData$director_name),sum))#重命名names(total1)<- c("dirName","totGross")#排序,保留前二十名的觀測attach(total1)total1<-total1[order(-totGross),]total1<-total1[20:1,]detach(total1)#用barplot畫出圖形par(mar=c(5,8,4,2))par(las=2)barplot(total1$totGross,names.arg = total1$dirName, horiz=TRUE, cex.names=0.9, col=brewer.pal(20, "Set1"))
下面來用一下回歸預測一下卡梅隆大導演下一部電影是賠是賺:
#用回歸做預測#先把詹姆斯卡梅隆的都挑出來reg<-aData[aData$director_name=="James Cameron",]scatterplot(gross ~ title_year, data=reg, spread=FALSE, smoother.args=list(lty=2), pch=19, main="James Camerons regression", xlab="year", ylab="gross")
基本不用擔心他老人家,他下一部賺的應該還不少呢!
下面有請我的偶像諾蘭:
#預測一下我的偶像諾蘭的regN<-aData[aData$director_name=="Christopher Nolan",]scatterplot(gross ~ title_year, data=regN, spread=FALSE, smoother.args=list(lty=2), pch=19, main="Christopher Nolans regression", xlab="year", ylab="gross")
所以諾蘭的下一部我依然看好!
也不能全是好的吧,最後再預測一個不知名導演的吧:
#然後再做一個比較差的導演的回歸reg1<-aData[aData$director_name=="Roland Emmerich",]scatterplot(gross ~ title_year, data=reg1, spread=FALSE, smoother.args=list(lty=2), pch=19, main="Roland Emmerichs regression", xlab="year", ylab="gross")
所以我建議就是:盡量不要去電影院看這位導演的片子,被坑的風險太高。如果實在想看,在網上下吧!
END
推薦閱讀: