自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對于非結(jié)構(gòu)化數(shù)據(jù),EDA探索性數(shù)據(jù)分析該怎么做?

大數(shù)據(jù) 數(shù)據(jù)分析
本文的討論到此結(jié)束。當(dāng)然,在EDA中還有很多技術(shù)比本文在這里介紹的要多得多,這取決于用戶在問題陳述中要使用的數(shù)據(jù)集。

探索性數(shù)據(jù)分析是機器學(xué)習(xí)開發(fā)生命周期的關(guān)鍵階段之一,在任何現(xiàn)實生活中的數(shù)據(jù)分析項目中,它幾乎占用了整個項目50-60%的時間,因為我們必須用來尋找洞察力的數(shù)據(jù)是原始數(shù)據(jù),在應(yīng)用機器學(xué)習(xí)算法之前必須進(jìn)行處理,以獲得最佳性能。這個步驟必須包括以下內(nèi)容:

  1. 涉及更好地分析和總結(jié)數(shù)據(jù)集,以了解其潛在的模式、關(guān)系和趨勢。
  2. 識別基本的數(shù)據(jù)特征,檢測異?;虍惓V?,并確定最合適的建模技術(shù)來預(yù)測未來的結(jié)果。

讓我們通過一個故事來理解EDA在數(shù)據(jù)分析中的意義。

從一個故事理解EDA的重要性

一家小公司剛剛在市場上開展業(yè)務(wù)。這家公司有一群對自己的角色充滿熱情的專業(yè)人士,他們以一種方式工作使整個公司都能獲利。隨著公司開始在員工或用戶方面增加對其推廣產(chǎn)品的了解,管理團(tuán)隊意識到,他們需要幫助了解用戶或客戶對公司提供的產(chǎn)品或服務(wù)的需求和行為。

為了克服這個問題,他們開始聘請一些技術(shù)專業(yè)人員。最終,他們在數(shù)據(jù)分析師的職位下找到了一個技術(shù)人員,以便他們能夠更好地了解客戶數(shù)據(jù)。該分析師將能夠從中找到重要的信息或見解。他們聘請的分析師在他們主要從事探索性數(shù)據(jù)分析的同一類型技術(shù)或項目中具有良好的實踐經(jīng)驗。

因此,對于這個問題,他們開始通過網(wǎng)絡(luò)抓取從多個API收集數(shù)據(jù),其中包括公司網(wǎng)站、社交媒體、論壇等。收集完數(shù)據(jù)后,他們開始清理和處理數(shù)據(jù),以便他們能夠從這些數(shù)據(jù)中找到一些見解。他們使用統(tǒng)計技術(shù)如假設(shè)測試和商業(yè)智能工具來探索數(shù)據(jù),并使用模式識別技術(shù)發(fā)現(xiàn)隱藏的模式。

在建立管道后,他們觀察到公司的客戶對購買環(huán)保和可持續(xù)的產(chǎn)品最感興趣。公司管理層基于這些見解推出了環(huán)保和可持續(xù)的產(chǎn)品。于是,基于這些更新,新產(chǎn)品得到了客戶的喜歡,最終,公司的收入開始成倍增長。管理層已經(jīng)開始意識到探索性數(shù)據(jù)分析的重要性,并聘請了更多的數(shù)據(jù)分析師。

因此,在本文中,受上述故事的啟發(fā),我們將了解管道的探索性數(shù)據(jù)分析階段里面的不同技術(shù),并在這個過程中使用流行的工具。本文為初學(xué)者和有經(jīng)驗的數(shù)據(jù)分析師提供了EDA的全面概述及其在數(shù)據(jù)科學(xué)中的重要性。

實施的不同技術(shù)

為了理解EDA內(nèi)部使用的每一種技術(shù),本文將研究一個數(shù)據(jù)集,并使用用于數(shù)據(jù)科學(xué)的Python庫(例如NumPy、Pandas、Matplotlib等)來實現(xiàn)分析。

本文將在分析中使用的數(shù)據(jù)集是Titanic數(shù)據(jù)集,它可以從這里(https://www.kaggle.com/c/titanic/data)下載。本文將使用train.csv進(jìn)行模型訓(xùn)練。

1.導(dǎo)入必要的庫和依賴項

在實施之前,首先導(dǎo)入必要的庫,本文將利用這些庫來實現(xiàn)不同的EDA技術(shù),包括:

  1. 用于矩陣操作的NumPy
  2. 用于數(shù)據(jù)分析的Pandas
  3. 用于數(shù)據(jù)可視化的Matplotlib和Seaborn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

2.加載和分析數(shù)據(jù)集

在導(dǎo)入所有需要的庫之后,我們將使用Pandas dataframe加載Titanic數(shù)據(jù)集。然后我們可以開始執(zhí)行不同的數(shù)據(jù)預(yù)處理技術(shù),為進(jìn)一步建模和歸納準(zhǔn)備數(shù)據(jù)。

passenger_data = pd.read_csv('titanic.csv')
passenger_data.head(5)

輸出:

圖片

圖 1

3.獲取統(tǒng)計摘要

下面的分析為我們提供了數(shù)據(jù)中所有數(shù)值列的統(tǒng)計數(shù)據(jù)。我們可以從這個函數(shù)中得到的統(tǒng)計數(shù)據(jù)是:

  1. 計數(shù)
  2. 平均數(shù)和中位數(shù)
  3. 標(biāo)準(zhǔn)偏差
  4. 最小值和最大值
  5. 不同的四分位數(shù)值
passenger_data.describe()

輸出:

圖片

圖 2

通過解釋上述輸出,我們可以看到有891名乘客,平均存活率為38%。年齡欄的最小值和最大值在0.42至80之間,平均年齡約為30歲。另外,至少有50%的乘客沒有兄弟姐妹/配偶,至少有75%的乘客沒有父母/子女,票價一欄的數(shù)值也有很大變化。

讓我們試著通過從頭開始編寫代碼來計算生存率。

4.計算乘客的總體存活率

為了計算總體存活率,首先選擇Survived列,檢查數(shù)值為1的行,然后計算所有這些行。最后,為了找到百分比,我們將用它除以總行數(shù)并輸出結(jié)果。

survived_data = passenger_data[passenger_data['Survived'] == 1]
survived = survived_data.count().values[1]
survival_percent = (survived/891) * 100
print('The percentage of survived people in training data are {}'.format(survival_percent))

輸出:

The percentage of survived people in training data are 38.38383838383838

5.按gender和Pclass列計算存活率

現(xiàn)在,我們必須用聚合運算找到不同列的存活率,我們將使用gender和 Pclass列,然后應(yīng)用均值函數(shù)來找到它,然后輸出結(jié)果。

survival_rate = passenger_data[['Pclass', 'Sex','Survived']].groupby(['Pclass', 'Sex'], as_index = False).mean().sort_values('Survived', ascending = False)
print(survival_rate)

輸出:

Pclass     Sex  Survived
0       1  female  0.968085
2       2  female  0.921053
4       3  female  0.500000
1       1    male  0.368852
3       2    male  0.157407
5       3    male  0.135447

6.將Passenger Id、Survived、Pclass的數(shù)據(jù)類型改為String。

由于某些列具有不同的數(shù)據(jù)類型,我們將所有這些列轉(zhuǎn)換為一個固定數(shù)據(jù)類型。即String(字符串)。

Cols = [ 'PassengerId', 'Survived', 'Pclass' ]
for index in Cols:
     passenger_data[index] = passenger_data[index].astype(str)
passenger_data.dtypes

7.數(shù)據(jù)集中重復(fù)的行

在進(jìn)行數(shù)據(jù)建模時,如果存在重復(fù)的行,我們的性能可能會下降。因此,始終建議刪除重復(fù)的行。

passenger_data.loc[passenger_data.duplicated(), :]

8.創(chuàng)建直方圖以檢查數(shù)據(jù)分布情況

為了根據(jù)該列的可能值找到幸存列的分布,以便我們可以檢查類偏差,如果有任何問題,我們可以應(yīng)用諸如過量取樣、欠量取樣、SMOTE等技術(shù)來克服該問題。

sb.set_style("white")
g = sb.FacetGrid(data = train[train['Age'].notna()], col = 'Survived')
g.map(plt.hist, "Age");

輸出:

圖片

圖 3

現(xiàn)在,如果我們比較上述兩個分布,那么建議使用相對頻率,而不是使用累積密度函數(shù)等的絕對頻率。由于我們以年齡一欄為例,具有絕對頻率的直方圖表明,在20-30歲的年齡組中受害者比幸存者多得多。

9.按生存值繪制年齡中缺失值百分比圖

在這里,我們創(chuàng)建了餅狀圖來尋找按生存值計算的缺失值的百分比,然后查看分區(qū)。

dt0 = train['Age'][train['Survived']=='0']
dt1 = train['Age'][train['Survived']=='1']
plt.figure(figsize = [15, 5])

plt.subplot(1, 2, 1)
age_na_pie(dt0)
plt.title('Survived: No');

plt.subplot(1, 2, 2)
age_na_pie(dt1)
plt.title('Survived: Yes');

輸出:

圖片

圖 4

餅狀圖顯示,年齡缺失的乘客更有可能成為受害者。

10.尋找每一列中的缺失值數(shù)量

passenger_data.isnull().sum()

從輸出結(jié)果中,可以觀察到Cabin列具有最大的缺失值,所以我們將從分析中刪除該列。

11.每列空值的百分比

passenger_data.isna().sum()/passenger_data.shape[0]

在Age一欄中,大約有20%的數(shù)據(jù)缺失,Cabin一欄中大約有77%的數(shù)據(jù)缺失,Embarked一欄中有0.2%的數(shù)據(jù)缺失。我們的目的是在建模之前處理缺失的數(shù)據(jù)。

12.從數(shù)據(jù)集中刪除Cabin一列

刪除Cabin這一列,因為它有很多缺失的值。

drop_column = passenger_data.drop(labels = ['Cabin'], axis = 1)
print(drop_column)

為了處理Age列,首先,我們將檢查Age列的數(shù)據(jù)類型并將其轉(zhuǎn)換為整數(shù)數(shù)據(jù)類型,然后用Age列的中位數(shù)來填補Age列中所有的缺失值。

datatype = passenger_data.info('Age')
fill_values = passenger_data['Age'].fillna(int(passenger_data['Age'].median()),inplace=True)
print(fill_values)

在這之后,數(shù)據(jù)集在缺失值、離群值等方面看起來不錯?,F(xiàn)在,如果我們應(yīng)用機器學(xué)習(xí)算法來查找數(shù)據(jù)集中的模式,然后在測試數(shù)據(jù)上進(jìn)行測試,與沒有預(yù)處理和探索性數(shù)據(jù)分析或數(shù)據(jù)處理的數(shù)據(jù)相比,模型的性能會更強。

來自EDA的收獲

以下是幸存者與受害者相比的特征:

  • 幸存者很可能有父母或子女陪伴;與其他人相比,他們的機票更貴。
  • 與所有年齡段的受害者相比,兒童更有可能存活下來。
  • 年齡缺失的乘客成為幸存者的可能性較小。
  • pclass(SES)較高的乘客更有可能存活下來。
  • 女性比男性更有可能存活下來。
  • Cherbourg的乘客比Queenstown和Southampto的乘客有更高的生存機會。

總結(jié)

本文的討論到此結(jié)束。當(dāng)然,在EDA中還有很多技術(shù)比本文在這里介紹的要多得多,這取決于用戶在問題陳述中要使用的數(shù)據(jù)集??偠灾?,EDA在使用數(shù)據(jù)來訓(xùn)練模型之前,了解數(shù)據(jù)是有益的。這種技術(shù)在任何數(shù)據(jù)科學(xué)項目中都起著至關(guān)重要的作用,使簡單模型在項目中使用時能有更好的表現(xiàn)。因此,每個有抱負(fù)的數(shù)據(jù)科學(xué)家、數(shù)據(jù)分析師、機器學(xué)習(xí)工程師和分析經(jīng)理都需要正確了解這些技術(shù)。

責(zé)任編輯:武曉燕 來源: Python學(xué)研大本營
相關(guān)推薦

2020-05-13 11:32:28

數(shù)據(jù)分析數(shù)值分析

2023-11-30 07:23:53

數(shù)據(jù)分析EDA

2023-12-22 09:14:48

EDA數(shù)據(jù)分析探索性數(shù)據(jù)分析

2020-10-28 18:28:12

Pandas數(shù)據(jù)分析GUI

2022-11-11 11:35:14

2017-04-25 18:35:47

硅谷數(shù)據(jù)科學(xué)家數(shù)據(jù)分析

2024-06-12 11:57:51

2024-07-30 12:10:22

2023-07-29 22:27:44

2018-04-03 14:00:03

結(jié)構(gòu)化數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)數(shù)據(jù)庫

2016-10-11 15:32:26

探索性大數(shù)據(jù)

2024-05-21 13:33:49

2021-12-12 08:37:18

結(jié)構(gòu)化數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)數(shù)據(jù)

2012-09-04 09:20:26

測試軟件測試探索測試

2024-05-27 00:32:45

2017-05-20 10:36:37

非結(jié)構(gòu)化數(shù)據(jù)分析技術(shù)

2015-09-21 09:33:47

大數(shù)據(jù)數(shù)據(jù)分析

2020-08-18 13:30:01

Python命令數(shù)據(jù)分析

2017-11-16 05:22:34

非結(jié)構(gòu)化數(shù)據(jù)分析數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號