日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你真的懂数据分析吗?一文读懂数据分析的流程、基本方法和实践

發(fā)布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你真的懂数据分析吗?一文读懂数据分析的流程、基本方法和实践 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


導讀:無論你的工作內容是什么,掌握一定的數(shù)據(jù)分析能力,都可以幫你更好的認識世界,更好的提升工作效率。數(shù)據(jù)分析除了包含傳統(tǒng)意義上的統(tǒng)計分析之外,也包含尋找有效特征、進行機器學習建模的過程,以及探索數(shù)據(jù)價值、找尋數(shù)據(jù)本根的過程。


作者:馬海平 于俊 呂昕 向海

本文摘編自《Spark機器學習進階實戰(zhàn)》,如需轉載請聯(lián)系我們



01 數(shù)據(jù)分析流程


數(shù)據(jù)分析可以幫助我們從數(shù)據(jù)中發(fā)現(xiàn)有用信息,找出有建設性的結論,并基于分析結論輔助決策。如圖1所示,數(shù)據(jù)分析流程主要包括業(yè)務調研、明確目標、數(shù)據(jù)準備、特征處理、模型訓練與評估、輸出結論等六個關鍵環(huán)節(jié)。


▲圖1 數(shù)據(jù)分析流程


數(shù)據(jù)分析能力并非一朝一夕養(yǎng)成的,需要長期扎根業(yè)務進行積累,需要長期根據(jù)數(shù)據(jù)分析流程一步一個腳印分析問題,培養(yǎng)自己對數(shù)據(jù)的敏感度,從而養(yǎng)成用數(shù)據(jù)分析、用數(shù)據(jù)說話的習慣。當你可以基于一些數(shù)據(jù),根據(jù)自己的經(jīng)驗做出初步的判斷和預測,你就基本擁有數(shù)據(jù)思維了。



02 數(shù)據(jù)分析基本方法


數(shù)據(jù)分析是以目標為導向的,通過目標實現(xiàn)選擇數(shù)據(jù)分析的方法,常用的分析方法是統(tǒng)計分析,數(shù)據(jù)挖掘則需要使用機器學習構建模型。接下來介紹一些簡單的數(shù)據(jù)分析方法。


1. 匯總統(tǒng)計


統(tǒng)計是指用單個數(shù)或者數(shù)的小集合捕獲很大值集的特征,通過少量數(shù)值來了解大量數(shù)據(jù)中的主要信息,常見統(tǒng)計指標包括:


  • 分布度量:概率分布表、頻率表、直方圖

  • 頻率度量:眾數(shù)

  • 位置度量:均值、中位數(shù)

  • 散度度量:極差、方差、標準差

  • 多元比較:相關系數(shù)

  • 模型評估:準確率、召回率


匯總統(tǒng)計對一個彈性分布式數(shù)據(jù)集RDD進行概括統(tǒng)計,它通過調用Statistics的colStats方法實現(xiàn)。colStats方法可以返回RDD的最大值、最小值、均值、方差等,代碼實現(xiàn)如下:


import?org.apache.spark.MLlib.linalg.Vector?import?org.apache.spark.MLlib.stat.{MultivariateStatisticalSummary,?Statistics}?//?向量[Vector]數(shù)據(jù)集?val?data:?RDD[Vector]?=?...??//?匯總統(tǒng)計信息?val?summary:?statisticalSummary?=?Statistics.colStats(data)?//?平均值和方差?println(summary.mean)?println(summary.variance)?


2. 相關性分析


相關性分析是指通過分析尋找不用商品或不同行為之間的關系,發(fā)現(xiàn)用戶的習慣,計算兩個數(shù)據(jù)集的相關性是統(tǒng)計中的常用操作。


在MLlib中提供了計算多個數(shù)據(jù)集兩兩相關的方法。目前支持的相關性方法有皮爾遜(Pearson)相關和斯皮爾曼(Spearman)相關。一般對于符合正態(tài)分布的數(shù)據(jù)使用皮爾遜相關系數(shù),對于不符合正態(tài)分布的數(shù)據(jù)使用斯皮爾曼相關系數(shù)。


皮爾遜相關系數(shù)是用來反映兩個變量相似程度的統(tǒng)計量,它常用于計算兩個向量的相似度,皮爾遜相關系數(shù)計算公式如下:



其中表示兩組變量,表示兩個變量的平均值,皮爾遜相關系數(shù)可以理解為對兩個向量進行歸一化以后,計算其余弦距離(即使用余弦函數(shù)cos計算相似度,用向量空間中兩個向量的夾角的余弦值來衡量兩個文本間的相似度),皮爾遜相關大于0表示兩個變量正相關,小于0表示兩個變量負相關,皮爾遜相關系數(shù)為0時,表示兩個變量沒有相關性。


調用MLlib計算兩個RDD皮爾遜相關性的代碼如下,輸入的數(shù)據(jù)可以是RDD[Double]也可以是RDD[Vector],輸出是一個Double值或者相關性矩陣。


import?org.apache.spark.SparkContext?import?org.apache.spark.MLlib.linalg._?import?org.apache.spark.MLlib.stat.Statistics?//?創(chuàng)建應用入口?val?sc:?SparkContext?=?...?//?X變量?val?seriesX:?RDD[Double]?=?...?//?Y變量,分區(qū)和基數(shù)同seriesX?val?seriesY:?RDD[Double]?=?...??//?使用Pearson方法計算相關性,斯皮爾曼的方法輸入“spearman”?val?correlation:?Double?=?Statistics.corr(seriesX,?seriesY,?"pearson")?//?向量數(shù)據(jù)集?val?data:?RDD[Vector]?=?...??val?correlMatrix:?Matrix?=?Statistics.corr(data,?"pearson")


皮爾遜相關系數(shù)在機器學習的效果評估中經(jīng)常使用,如使用皮爾遜相關系數(shù)衡量推薦系統(tǒng)推薦結果的效果。


3. 分層抽樣


分層抽樣先將數(shù)據(jù)分為若干層,然后再從每一層內進行隨機抽樣組成一個樣本。MLlib提供了對數(shù)據(jù)的抽樣操作,分層抽樣常用的函數(shù)是sampleByKey和sampleByKeyExact,這兩個函數(shù)是在key-value對的RDD上操作,用key來進行分層。


其中,sampleByKey方法通過擲硬幣的方式進行抽樣,它需要指定需要的數(shù)據(jù)大小;sampleByKeyExact抽取個樣本,表示期望獲取鍵為key的樣本比例,表示鍵為key的鍵值對的數(shù)量。sampleByKeyExact能夠獲取更準確的抽樣結果,可以選擇重復抽樣和不重復抽樣,當withReplacement為true時是重復抽樣,false時為不重復抽樣。重復抽樣使用泊松抽樣器,不重復抽樣使用伯努利抽樣器。


分層抽樣的代碼如下:


import?org.apache.spark.SparkContext?import?org.apache.spark.SparkContext._?import?org.apache.spark.rdd.PairRDDFunctions?val?sc:?SparkContext?=?...?//?RDD[(K,?V)]形式的鍵值對?val?data?=?...?//指定每個鍵所需的份數(shù)?val?fractions:?Map[K,?Double]?=?...?//從每個層次獲取確切的樣本?val?approxSample?=?data.sampleByKey(withReplacement?=?false,?fractions)?val?exactSample?=?data.sampleByKeyExact(withReplacement?=?false,?fractions)


通過用戶特征、用戶行為對用戶進行分類分層,形成精細化運營、精準化業(yè)務推薦,進一步提升運營效率和轉化率。


4. 假設檢驗


假設檢驗是統(tǒng)計中常用的工具,它用于判斷一個結果是否在統(tǒng)計上是顯著的、這個結果是否有機會發(fā)生。通過數(shù)據(jù)分析發(fā)現(xiàn)異常情況,找到解決異常問題的方法。


MLlib目前支持皮爾森卡方檢驗,對應的函數(shù)是Statistics類的chiSqTest,chiSqTest支持多種輸入數(shù)據(jù)類型,對不同的輸入數(shù)據(jù)類型進行不同的處理,對于Vector進行擬合優(yōu)度檢驗,對于Matrix進行獨立性檢驗,對于RDD用于特征選擇,使用chiSqTest方法進行假設檢驗的代碼如下:


import?org.apache.spark.SparkContext?import?org.apache.spark.MLlib.linalg._?import?org.apache.spark.MLlib.regression.LabeledPoint?import?org.apache.spark.MLlib.stat.Statistics._?val?sc:?SparkContext?=?...?//?定義一個由事件頻率組成的向量?val?vec:?Vector?=?...??//?作皮爾森擬合優(yōu)度檢驗?val?goodnessOfFitTestResult?=?Statistics.chiSqTest(vec)?println(goodnessOfFitTestResult)?//?定義一個檢驗矩陣?val?mat:?Matrix?=?...?//?作皮爾森獨立性檢測?val?independenceTestResult?=?Statistics.chiSqTest(mat)?//?檢驗總結:包括假定值(p-value)、自由度(degrees?of?freedom)?println(independenceTestResult)?//?pairs(feature,?label).?val?obs:?RDD[LabeledPoint]?=?...??//?獨立性檢測用于特征選擇?val?featureTestResults:?Array[ChiSqTestResult]?=?Statistics.chiSqTest(obs)?var?i?=?1?featureTestResults.foreach?{?result?=>?????println(s"Column?$i:\n$result")?????i?+=?1?}



03 簡單的數(shù)據(jù)分析實踐


為了更清楚的說明簡單的數(shù)據(jù)分析實現(xiàn),搭建Spark開發(fā)環(huán)境,并使用gowalla數(shù)據(jù)集進行簡單的數(shù)據(jù)分析,該數(shù)據(jù)集較小,可在Spark本地模式下,快速運行實踐。


實踐步驟如下:


1)環(huán)境準備:準備開發(fā)環(huán)境并加載項目代碼;

2)數(shù)據(jù)準備:數(shù)據(jù)預處理及one-hot編碼;

3)數(shù)據(jù)分析:使用均值、方差、皮爾遜相關性計算等進行數(shù)據(jù)分析。


簡單數(shù)據(jù)分析實踐的詳細代碼參考:ch02\GowallaDatasetExploration.scala,本地測試參數(shù)和值如表1所示。


本地測試參數(shù)

參數(shù)值

mode

local[2]

input

2rd_data/ch02/Gowalla_totalCheckins.txt

▲表1 本地測試參數(shù)和值


1. 環(huán)境準備


Spark程常用IntelliJ IDEA工具進行開發(fā),下載地址:www.jetbrains.com/idea/,一般選擇Community版,當前版本:ideaIC-2017.3.4,支持Windows、Mac OS X、Linux,可以根據(jù)自己的情況選擇適合的操作系統(tǒng)進行安裝。


(1)安裝scala-intellij插件


啟動IDEA程序,進入“Configure”界面,選擇“Plugins”,點擊安裝界面左下角的“Install JetBrains plugin”選項,進入JetBrains插件選擇頁面,輸入“Scala”來查找Scala插件,點擊“Install plugin”按鈕進行安裝。(如果網(wǎng)絡不穩(wěn)定,可以根據(jù)頁面提示的地址下載,然后選擇“Install plugin from disk”本地加載插件),插件安裝完畢,重啟IDEA。


(2)創(chuàng)建項目開發(fā)環(huán)境


啟動IDEA程序,選擇“Create New Project”,進入創(chuàng)建程序界面,選擇Scala對應的sbt選項,設置Scala工程名稱和本地目錄(以book2-master為例),選擇SDK、SBT、Scala版本(作者的開發(fā)環(huán)境:Jdk->1.8.0_162、sbt->1.1.2、scala->2.11.12),點擊“Finish”按鈕完成工程的創(chuàng)建。


導入Spark開發(fā)包,具體步驟為:File->Project Structure->Libraries->+New Project Library(Java),選擇spark jars(如:spark-2.3.0-bin-hadoop2.6/jars)和本地libs(如:\book2-master\libs,包括:nak_2.11-1.3、scala-logging-api_2.11-2.1.2、scala-logging-slf4j_2.11-2.1.2)。


(3)拷貝項目代碼


拷貝源代碼中的2rd_data、libs、output、src覆蓋本地開發(fā)項目目錄,即可完成開發(fā)環(huán)境搭建。


除此之外,也可以通過Maven方式Import Project。


2. 準備數(shù)據(jù)


我們提供的數(shù)據(jù)格式:


用戶[user] 簽到時間[check-in time] 維度[latitude] 精度[longitude] 位置標識[location id]


數(shù)據(jù)樣例如下:



準備數(shù)據(jù)的步驟如下。


(1)數(shù)據(jù)清洗


在數(shù)據(jù)清洗階段過濾掉不符合規(guī)范的數(shù)據(jù),并將數(shù)據(jù)進行格式轉換,保證數(shù)據(jù)的完整性、唯一性、合法性、一致性,并按照CheckIn類填充數(shù)據(jù),具體實現(xiàn)方法如下:


//?定義數(shù)據(jù)類CheckIn?case?class?CheckIn(user:?String,?time:?String,?latitude:?Double,?longitude:?Double,?location:?String)?//?實例化應用程序入口?val?conf?=?new?SparkConf().setAppName(this.getClass.getSimpleName).setMaster(mode)?val?sc?=?new?SparkContext(conf)??val?gowalla?=?sc.textFile(input).map(_.split("\t")).mapPartitions{?case?iter?=>?val?format?=?DateTimeFormat.forPattern("yyyy-MM-dd\'T\'HH:mm:ss\'Z\'")?iter.map?{?//?填充數(shù)據(jù)類?case?terms?=>?CheckIn(terms(0),?terms(1).substring(0,?10),?terms(2).toDouble,?terms(3).toDouble,terms(4))?}?}


(2)數(shù)據(jù)轉換


在數(shù)據(jù)轉化階段,將數(shù)據(jù)轉換成Vectors的形式,供后面數(shù)據(jù)分析使用。


//?字段:user,?checkins,?checkin?days,?locations?val?data?=?gowalla.map{???case?check:?CheckIn?=>?(check.user,?(1L,?Set(check.time),?Set(check.location)))?}.reduceByKey?{?//?并集?union?case?(left,?right)?=>(left._1?+?right._1,left._2.union(right._2),left._3.union(right._3))?}.map?{???case?(user,?(checkins,?days:Set[String],?locations:Set[String]))?=>?Vectors.dense(checkins.toDouble,days.size.toDouble,?locations.size.toDouble)?}


3. 數(shù)據(jù)分析


通過簡單的數(shù)據(jù)分析流程,實現(xiàn)均值、方差、非零元素的目錄的統(tǒng)計,以及皮爾遜相關性計算,來實現(xiàn)對數(shù)據(jù)分析的流程和方法的理解。


簡單的數(shù)據(jù)分析代碼示例如下:


//?統(tǒng)計分析?val?summary:?MultivariateStatisticalSummary?=?Statistics.colStats(data)?//?均值、方差、非零元素的目錄?println("Mean"+summary.mean)?println("Variance"+summary.variance)?println("NumNonzeros"+summary.numNonzeros)?//?皮爾遜?val?correlMatrix:?Matrix?=?Statistics.corr(data,?"pearson")?println("correlMatrix"+correlMatrix.toString)


簡單數(shù)據(jù)分析應用運行結果如下:


均值:[60.16221566503564,25.30645613117692,37.17676390393301]?方差:[18547.42981193066,1198.630729157736,7350.7365871949905]?非零元素:[107092.0,107092.0,107092.0]?皮爾遜相關性矩陣:?1.0?0.7329442022276709?0.9324997691135504??0.7329442022276709?1.0?0.5920355112372706??0.9324997691135504?0.5920355112372706?1.0?


本文摘編自《Spark機器學習進階實戰(zhàn)》,經(jīng)出版方授權發(fā)布。


延伸閱讀《Spark機器學習進階實戰(zhàn)

點擊上圖了解及購買

轉載請聯(lián)系微信:togo-maruko


推薦語:科大訊飛大數(shù)據(jù)專家撰寫,從基礎到應用,面面俱到。



更多精彩


在公眾號后臺對話框輸入以下關鍵詞

查看更多優(yōu)質內容!


PPT?|?報告?|?讀書?|?書單

Python?|?機器學習?|?深度學習?|?神經(jīng)網(wǎng)絡

區(qū)塊鏈?|?揭秘?|?干貨?|?數(shù)學


猜你想看


  • 干掉圍棋九段后,可定制計算能讓AI打敗程序員和芯片工程師嗎?

  • 揭秘“21世紀最性感的職業(yè)”:數(shù)學、編程、溝通和商業(yè)技能一個都不能少!

  • 一文讀懂量子計算機的前世今生,它的未來人類連想都不敢想

  • 如何科學地評價妹子身材?三圍符合黃金比例是審美標準?你錯了!



Q:?數(shù)據(jù)分析的方法你掌握了多少

歡迎留言與大家分享

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯(lián)系:baiyu@hzbook.com

更多精彩,請在后臺點擊“歷史文章”查看

點擊閱讀原文,了解更多

總結

以上是生活随笔為你收集整理的你真的懂数据分析吗?一文读懂数据分析的流程、基本方法和实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。