在上一篇博客【機(jī)器學(xué)習(xí)】數(shù)據(jù)探索(Data Exploration)—數(shù)據(jù)質(zhì)量和數(shù)據(jù)特征分析中,我們深入探討了數(shù)據(jù)預(yù)處理的重要性,并介紹了諸如插值、數(shù)據(jù)歸一化和主成分分析等關(guān)鍵技術(shù)。這些方法有助于我們清理數(shù)據(jù)中的噪聲、消除異常值,以及降低數(shù)據(jù)的維度,從而為后續(xù)的機(jī)器學(xué)習(xí)模型訓(xùn)練提供更有價(jià)值的信息。
然而,數(shù)據(jù)預(yù)處理只是數(shù)據(jù)探索的一部分。在本篇博客中,我們將進(jìn)一步探討Python中一些主要的探索函數(shù),這些函數(shù)將幫助我們更深入地理解數(shù)據(jù)的分布、特征之間的關(guān)系,以及數(shù)據(jù)中可能存在的模式。而在Python的數(shù)據(jù)探索領(lǐng)域,Pandas和Matplotlib是兩個(gè)不可或缺的庫。Pandas以其強(qiáng)大的數(shù)據(jù)處理和分析能力著稱,而Matplotlib則以其出色的數(shù)據(jù)可視化功能聞名。Pandas中的函數(shù)可以大致分為兩類:統(tǒng)計(jì)特征函數(shù)和統(tǒng)計(jì)作圖函數(shù)。這些作圖函數(shù)常常與Matplotlib緊密結(jié)合,共同呈現(xiàn)數(shù)據(jù)的內(nèi)在規(guī)律和特點(diǎn)。下面,我們將詳細(xì)介紹Pandas中的一些主要統(tǒng)計(jì)特征函數(shù)與統(tǒng)計(jì)作圖函數(shù),并通過實(shí)例來加深理解。這些函數(shù)不僅能夠幫助我們深入了解數(shù)據(jù)的分布情況,還能揭示數(shù)據(jù)之間的潛在關(guān)系,為數(shù)據(jù)分析和機(jī)器學(xué)習(xí)模型的構(gòu)建提供有力的支持。
一、 基本統(tǒng)計(jì)特征函數(shù)
統(tǒng)計(jì)特征函數(shù)用于計(jì)算數(shù)據(jù)的均值、方差、標(biāo)準(zhǔn)差、分位數(shù)、相關(guān)系數(shù)和協(xié)方差等,這些統(tǒng)計(jì)特征能反映出數(shù)據(jù)的整體分布。本小節(jié)所介紹的統(tǒng)計(jì)特征函數(shù)如表3-8所示,它們主要作為Pandas的對(duì)象DataFrame或 Series的方法出現(xiàn)。
P a n d a s 主要統(tǒng)計(jì)特征函數(shù) \bold{Pandas主要統(tǒng)計(jì)特征函數(shù)} Pandas主要統(tǒng)計(jì)特征函數(shù)
方法名 | 函數(shù)功能 | 所屬庫 |
---|---|---|
sum() | 計(jì)算數(shù)據(jù)樣本的總和(按列計(jì)算) | Pandas |
mean() | 計(jì)算數(shù)據(jù)樣本的算術(shù)平均數(shù) | Pandas |
var() | 計(jì)算數(shù)據(jù)樣本的方差 | Pandas |
std() | 計(jì)算數(shù)據(jù)樣本的標(biāo)準(zhǔn)差 | Pandas |
corr() | 計(jì)算數(shù)據(jù)樣本的Spearman (Pearson)相關(guān)系數(shù)矩陣 | Pandas |
cov() | 計(jì)算數(shù)據(jù)樣本的協(xié)方差矩陣 | Pandas |
skew() | 樣本值的偏度(三階矩) | Pandas |
kurt() | 樣本值的峰度(四階矩) | Pandas |
describe() | 給出樣本的基本描述(基本統(tǒng)計(jì)量如均值、標(biāo)準(zhǔn)差等) | Pandas |
以下是Pandas庫中一些主要統(tǒng)計(jì)特征函數(shù)的詳細(xì)介紹,包括它們的功能、使用格式以及示例。
1.1 sum()
功能:計(jì)算Series或DataFrame中所有元素的和。
使用格式:
Series.sum()
DataFrame.sum(axis=0, skipna=None, level=None, numeric_only=None, **kwargs)
- axis: 默認(rèn)為0,表示按列求和;如果為1,則按行求和。
- skipna: 排除缺失值(NaN)進(jìn)行計(jì)算,默認(rèn)為True。
- numeric_only: 僅對(duì)數(shù)值列進(jìn)行操作,默認(rèn)為False。
示例:
import pandas as pd
# 創(chuàng)建一個(gè)簡單的DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 計(jì)算所有元素的和
sum_all = df.sum()
print(sum_all) # 輸出:A 6, B 15, dtype: int64
# 按行求和
sum_rows = df.sum(axis=1)
print(sum_rows) # 輸出:0 5, 1 7, 2 9, dtype: int64
1.2 mean()
**功能:**計(jì)算Series或DataFrame中所有元素的平均值。
使用格式:
Series.mean(skipna=None, level=None, numeric_only=None, **kwargs)
DataFrame.mean(axis=0, skipna=None, level=None, numeric_only=None, **kwargs)
- axis: 默認(rèn)為0,表示按列求平均值;如果為1,則按行求平均值。
- skipna: 排除缺失值(NaN)進(jìn)行計(jì)算,默認(rèn)為True。
- numeric_only: 僅對(duì)數(shù)值列進(jìn)行操作,默認(rèn)為False。
示例:
# 使用前面的DataFrame
mean_col = df.mean()
print(mean_col) # 輸出:A 2.0, B 5.0, dtype: float64
mean_row = df.mean(axis=1)
print(mean_row) # 輸出:0 2.5, 1 3.5, 2 4.5, dtype: float64
1.3 var()
**功能:**計(jì)算Series或DataFrame中所有元素的方差。
使用格式:
Series.var(skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
DataFrame.var(axis=0, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
- axis: 默認(rèn)為0,表示按列求方差;如果為1,則按行求方差。
- skipna: 排除缺失值(NaN)進(jìn)行計(jì)算,默認(rèn)為True。
- ddof: 自由度調(diào)整值,默認(rèn)為1。
- numeric_only: 僅對(duì)數(shù)值列進(jìn)行操作,默認(rèn)為False。
示例:
var_col = df.var()
print(var_col) # 輸出方差計(jì)算結(jié)果
1.4 std()
**功能:**計(jì)算Series或DataFrame中所有元素的標(biāo)準(zhǔn)差。
使用格式:
Series.std(skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
DataFrame.std(axis=0, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
參數(shù)與var()函數(shù)相似。
示例:
std_col = df.std()
print(std_col) # 輸出標(biāo)準(zhǔn)差計(jì)算結(jié)果
1.5 corr()
**功能:**計(jì)算DataFrame中不同列之間的相關(guān)系數(shù)矩陣。
使用格式:
DataFrame.corr(method='pearson', min_periods=1)
- method: 計(jì)算相關(guān)系數(shù)的方法,默認(rèn)為’pearson’皮爾遜相關(guān)系數(shù),還可是’kendall’或’spearman’。
- min_periods: 一對(duì)列至少需要多少個(gè)非NA觀測(cè)值才能計(jì)算相關(guān)系數(shù)。
示例:
corr_matrix = df.corr()
print(corr_matrix) # 輸出相關(guān)系數(shù)矩陣
1.6 cov()
**功能:**計(jì)算DataFrame中不同列之間的協(xié)方差矩陣。
使用格式:
DataFrame.cov(min_periods=None)
- min_periods: 一對(duì)列至少需要多少個(gè)非NA觀測(cè)值才能計(jì)算協(xié)方差。
示例:
cov_matrix = df.cov()
print(cov_matrix) # 輸出協(xié)方差矩陣
1.7 skew()
**功能:**計(jì)算Series或DataFrame中所有數(shù)值列的偏度。偏度衡量數(shù)據(jù)分布的不對(duì)稱性。
使用格式:
Series.skew(skipna=True, level=None, numeric_only=None, **kwargs)
DataFrame.skew(axis=0, skipna=None, level=None, numeric_only=None, **kwargs)
- axis: 默認(rèn)為0,表示按列計(jì)算偏度;如果為1,則按行計(jì)算偏度。
- skipna: 排除缺失值(NaN)進(jìn)行計(jì)算,默認(rèn)為True。
- numeric_only: 僅對(duì)數(shù)值列進(jìn)行操作,默認(rèn)為False。
示例:
skewness = df.skew()
print(skewness) # 輸出偏度計(jì)算結(jié)果
1.8 kurt()
**功能:**計(jì)算Series或DataFrame中所有數(shù)值列的峰度。峰度衡量數(shù)據(jù)分布形態(tài)的陡峭程度。
使用格式:
Series.kurt(skipna=True, level=None, numeric_only=None, **kwargs)
DataFrame.kurt(axis=0, skipna=None, level=None, numeric_only=None, **kwargs)
參數(shù)與skew()函數(shù)相似。
示例:
kurtosis = df.kurt()
print(kurtosis) # 輸出峰度計(jì)算結(jié)果
1.9 describe()
**功能:**生成描述性統(tǒng)計(jì)信息,包括計(jì)數(shù)、均值、標(biāo)準(zhǔn)差、最小值、四分位數(shù)(25%、50%、75%)以及最大值。
使用格式:
DataFrame.describe(percentiles=[], include=[], exclude=None)
- percentiles: 要包含在輸出中的百分位數(shù)。
- include: 要包含的列的數(shù)據(jù)類型。
- exclude: 要排除的列的數(shù)據(jù)類型。
示例:
desc_stats = df.describe()
print(desc_stats) # 輸出描述性統(tǒng)計(jì)信息
以上就是對(duì)Pandas庫中一些主要統(tǒng)計(jì)特征函數(shù)的詳細(xì)介紹和示例。這些函數(shù)在處理數(shù)據(jù)時(shí)非常有用,能夠幫助我們快速了解數(shù)據(jù)的分布情況,為后續(xù)的數(shù)據(jù)分析和建模提供有力的支持。在使用這些函數(shù)時(shí),可以根據(jù)具體的數(shù)據(jù)和需求選擇合適的參數(shù)和選項(xiàng)。
二、拓展統(tǒng)計(jì)特征函數(shù)
除了上述基本的統(tǒng)計(jì)特征外,Pandas還提供了一些非常方便實(shí)用的計(jì)算統(tǒng)計(jì)特征的函數(shù),主要有累積計(jì)算(cum)和滾動(dòng)計(jì)算(pd.rolling_)。
P
a
n
d
a
s
累積統(tǒng)計(jì)特征函數(shù)
\bold{Pandas累積統(tǒng)計(jì)特征函數(shù)}
Pandas累積統(tǒng)計(jì)特征函數(shù)
方法名 | 函數(shù)功能 | 所屬庫 |
---|---|---|
cumsum() | 依次給出前1、2、…、n個(gè)數(shù)的和) | Pandas |
cumprod() | 依次給出前1、2、…、n個(gè)數(shù)的積 | Pandas |
cummax() | 依次給出前1、2、…、n個(gè)數(shù)的max | Pandas |
cummin() | 依次給出前1、2、…、n個(gè)數(shù)的min | Pandas |
rolling_sum() | 計(jì)算數(shù)據(jù)樣本的總和(按列計(jì)算) | Pandas |
rolling_mean() | 計(jì)算數(shù)據(jù)樣本的算術(shù)平均數(shù) | Pandas |
rolling_var() | 計(jì)算數(shù)據(jù)樣本的方差 | Pandas |
rolling_std() | 計(jì)算數(shù)據(jù)樣本的標(biāo)準(zhǔn)差 | Pandas |
rolling_corr() | 計(jì)算數(shù)據(jù)樣本的Spearman (Pearson)相關(guān)系數(shù)矩陣 | Pandas |
rolling_cov() | 計(jì)算數(shù)據(jù)樣本的協(xié)方差矩陣 | Pandas |
rolling_skew() | 樣本值的偏度(三階矩) | Pandas |
rolling_kurt() | 樣本值的峰度(四階矩) | Pandas |
其中,cum系列函數(shù)是作為DataFrame或’Series對(duì)象的方法而出現(xiàn)的,因此命令格D.cumsum(),而rolling_系列是pandas 的函數(shù),不是DataFrame或Series對(duì)象的方法,因此,其中,cum系列函數(shù)是作為DataFrame或’Series對(duì)象的方法而出現(xiàn)的,因此命令格式為D.cumsum(),而rolling_系列是pandas 的函數(shù),不是DataFrame或Series對(duì)象的方法
三、統(tǒng)計(jì)作圖函數(shù)
通過統(tǒng)計(jì)作圖函數(shù)繪制的圖表可以直觀地反映出數(shù)據(jù)及統(tǒng)計(jì)量的性質(zhì)及其內(nèi)在規(guī)律,如盒圖可以表示多個(gè)樣本的均值,誤差條形圖能同時(shí)顯示下限誤差和上限誤差,最小二乘擬合曲線圖能分析兩變量間的關(guān)系。
Python的主要作圖庫是Matplotlib,在第2章中已經(jīng)進(jìn)行了初步的介紹,而 Pandas基于Matplotlib并對(duì)某些命令進(jìn)行了簡化,因此作圖通常是Matplotlib和 Pandas相互結(jié)合著使用。本小節(jié)僅對(duì)一些基本的作圖函數(shù)做一下簡介,而真正靈活地使用應(yīng)當(dāng)參考書中所給出的各個(gè)作圖代碼清單。我們要介紹的統(tǒng)計(jì)作圖函數(shù)如表所示。
P y t h o n 主要統(tǒng)計(jì)作圖函數(shù) \bold{Python主要統(tǒng)計(jì)作圖函數(shù)} Python主要統(tǒng)計(jì)作圖函數(shù)
方法名 | 函數(shù)功能 | 所屬庫 |
---|---|---|
plot() | 繪制線性二維圖,折線圖 | Pandas/Matplotlib |
pie() | 繪制餅狀圖 | Pandas/Matplotlib |
hist() | 繪制二維條形直方圖,可顯示數(shù)據(jù)的分配情形 | Pandas/Matplotlib |
boxplot() | 繪制樣本數(shù)據(jù)的箱形圖 | Pandas |
plot(logy=True) | 繪制y軸的對(duì)數(shù)圖形 | Pandas |
plot(yerr=True) | 繪制誤差條形圖 | Pandas |
在作圖之前,通常要加載以下代碼。
import matplotlib.pyplot as plt#導(dǎo)入作圖庫
plt.rcParams [ 'font.sans-serif'] =[ 'SimHei']#用來正常顯示中文標(biāo)簽
plt.rcParams [ 'axes.unicode_minus' ] = False #用來正常顯示負(fù)號(hào)
plt.figure(figsize = (7,5))#創(chuàng)建圖像區(qū)域,指定比例
作圖完成后,一般通過plt.show()來顯示作圖結(jié)果。
3.1 plot()
**功能:**繪制線性二維圖、折線圖。
使用格式:
p
l
t
.
p
l
o
t
(
x
,
y
,
S
)
plt.plot(x,y, S)
plt.plot(x,y,S)
這是Matplotlib通用的繪圖方式,繪制y對(duì)于x (即以x為橫軸的二維圖形),字符串參量S指定繪制時(shí)圖形的類型、樣式和顏色,常用的選項(xiàng)有: 'b’為藍(lán)色、'r’為紅色、'g’為綠色、‘o’為圓圈、’+‘為加號(hào)標(biāo)記、’-‘為實(shí)線、’–'為虛線。當(dāng)x、y均為實(shí)數(shù)同維向量時(shí),則描出點(diǎn)(x(i),y(i)),然后用直線依次相連。
D
.
p
l
o
t
(
k
i
n
d
=
′
b
o
x
′
)
D.plot(kind = 'box')
D.plot(kind=′box′)
這里使用的是 DataFrame x J會(huì)數(shù)指定作圖類型,支持line(線).bar(余形)、barto tL由接數(shù)據(jù)為縱坐標(biāo)自動(dòng)作圖,通過kind參數(shù)指定作圖類型,支持line(線), bar(條形),barh , hist(直方圖)、box(箱線圖)、kde(密度圖)和 area、pie(餅圖)等,同時(shí)也能夠接受plt.plot() 受的參數(shù)。因此,如果數(shù)據(jù)已經(jīng)被加載為Pandas中的對(duì)象,那么以這種方式作圖是比較簡潔的。
**實(shí)例:**在區(qū)間(0≤x≤2T)繪制一條藍(lán)色的正弦虛線,并在每個(gè)坐標(biāo)點(diǎn)標(biāo)上五角星。繪制圖形如圖所示。
import numpy as np
x = np.linspace (0 , 2*np.pi,50)#x坐標(biāo)輸入
y = np.sin (x)#計(jì)算對(duì)應(yīng)x的正弦值
plt.plot(x,y, 'bp--')#控制圖形格式為藍(lán)色帶星虛線,顯示正弦曲線
plt.show ( )
3.2 pie()
**功能:**繪制餅型圖。
使用格式:
p
l
t
.
p
i
e
(
s
i
z
e
)
plt.pie(size)
plt.pie(size)
使用Matplotlib繪制餅圖,其中size是一個(gè)列表,記錄各個(gè)扇形的比例。pie有豐富的參數(shù),詳情請(qǐng)參考下面的實(shí)例。
import matplotlib.pyplot as plt
# The slices will be ordered and plotted counter-clockwise.
labels = 'Frogs ', 'Hogs ', 'Dogs ', 'Logs’#定義標(biāo)簽
sizes =[ 15,30,45,10]#每一塊的比例
colors = [ ' yellowgreen', 'gold', 'lightskyblue ', 'lightcoral']#每一塊的顏色
explode = (0,0.1,0,0) #突出顯示,這里僅僅突出顯示第二塊(即'Hogs ' )
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True, startangle=90)
plt.axis ( 'equal')#顯示為圓(避免比例壓縮為橢圓)
plt.show ( )
3.3 hist()
**功能:**繪制二維條形直方圖,可顯示數(shù)據(jù)的分布情形。
使用格式:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist(x,10)
plt.show()
3.4 boxplot()
**功能:**繪制樣本數(shù)據(jù)的箱形圖。
使用格式:
D = pd.DataFrame([x,x+1]).T
D.plot(kind='box')
plt.show()
3.5 plot(logx=True)
plot(logx=True)和plot(yerr=error)在數(shù)據(jù)探索的過程中使用的并不多,這里不做過多的介紹,后續(xù)有時(shí)間將進(jìn)行修訂。
四、案例研究
在這個(gè)案例研究中,我們將使用著名的“泰坦尼克號(hào)”數(shù)據(jù)集,該數(shù)據(jù)集記錄了泰坦尼克號(hào)沉船事故中乘客的詳細(xì)信息,包括他們的生存狀況、年齡、性別、艙位等級(jí)等。我們的目標(biāo)是通過數(shù)據(jù)探索,分析數(shù)據(jù)質(zhì)量并提取關(guān)鍵特征,為后續(xù)的機(jī)器學(xué)習(xí)模型構(gòu)建提供有力支持。
數(shù)據(jù)集介紹:
數(shù)據(jù)集包含以下字段:PassengerId(乘客ID)、Survived(是否生存)、Pclass(艙位等級(jí))、Name(姓名)、Sex(性別)、Age(年齡)、SibSp(兄弟姐妹/配偶數(shù))、Parch(父母/子女?dāng)?shù))、Ticket(船票號(hào))、Fare(票價(jià))、Cabin(船艙號(hào))、Embarked(登船港口)。
數(shù)據(jù)加載與初步查看:
首先,我們使用Pandas庫加載數(shù)據(jù)并查看前幾行以了解數(shù)據(jù)的大致結(jié)構(gòu)。
import pandas as pd
# 加載數(shù)據(jù)
titanic_data = pd.read_csv('titanic.csv')
# 查看數(shù)據(jù)前5行
print(titanic_data.head())
數(shù)據(jù)質(zhì)量分析:
接下來,我們進(jìn)行數(shù)據(jù)質(zhì)量分析,重點(diǎn)關(guān)注缺失值。
# 檢查缺失值
missing_values = titanic_data.isnull().sum()
print(missing_values)
# 可視化缺失值
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
missing_values.plot(kind='bar')
plt.title('Missing Values in Titanic Dataset')
plt.xlabel('Features')
plt.ylabel('Number of Missing Values')
plt.show()
通過查看缺失值的數(shù)量和分布情況,我們發(fā)現(xiàn)Age、Cabin和Embarked字段存在缺失值。對(duì)于Age,我們可以考慮使用均值、中位數(shù)或基于其他特征(如性別和艙位等級(jí))的插值來填充。對(duì)于Cabin,由于缺失值太多且可能不包含對(duì)預(yù)測(cè)Survived有用的信息,我們可以考慮刪除這個(gè)特征。對(duì)于Embarked,由于缺失值較少,我們可以考慮使用眾數(shù)填充。
數(shù)據(jù)特征分析:
在進(jìn)行特征分析時(shí),我們關(guān)注特征的統(tǒng)計(jì)描述、分布以及它們與目標(biāo)變量Survived的關(guān)系。
# 描述性統(tǒng)計(jì)
titanic_data.describe()
# 查看分類特征的分布
print(titanic_data['Sex'].value_counts())
print(titanic_data['Pclass'].value_counts())
print(titanic_data['Embarked'].value_counts(dropna=False))
# 可視化特征與生存的關(guān)系
titanic_data['Survived'].value_counts().plot(kind='bar', label='Survival')
plt.title('Survival Counts')
plt.xlabel('Survived')
plt.ylabel('Count')
plt.legend()
plt.show()
# 以性別為例,查看生存率的差異
gender_survival = titanic_data.groupby('Sex')['Survived'].mean()
gender_survival.plot(kind='bar')
plt.title('Survival Rate by Gender')
plt.xlabel('Gender')
plt.ylabel('Survival Rate')
plt.show()
通過這些分析,我們可以發(fā)現(xiàn)性別和艙位等級(jí)與生存率有顯著的關(guān)系。例如,女性乘客的生存率高于男性,高等級(jí)艙位的乘客生存率也較高。這些信息對(duì)于后續(xù)的模型構(gòu)建和特征選擇非常有價(jià)值。
數(shù)據(jù)清洗與特征工程:
基于上述分析,我們進(jìn)行數(shù)據(jù)清洗和特征工程。
# 填充Age缺失值,使用中位數(shù)填充
titanic_data['Age'].fillna(titanic_data['Age'].median(), inplace=True)
# 填充Embarked缺失值,使用眾數(shù)填充
titanic_data['Embarked'].fillna(titanic_data['Embarked'].mode()[0], inplace=True)
# 刪除Cabin特征,因?yàn)槿笔е堤嗲铱赡懿幌嚓P(guān)
titanic_data.drop('Cabin', axis=1, inplace=True)
# 將分類特征進(jìn)行編碼,例如將Sex編碼為數(shù)值
titanic_data['Sex'] = titanic_data['Sex'].map({'female': 0, 'male': 1})
titanic_data['Embarked'] = titanic_data['Embarked'].map({'S': 0, 'C': 1, 'Q': 2})
特征選擇:
在進(jìn)行了初步的數(shù)據(jù)清洗和特征工程后,我們可以進(jìn)一步進(jìn)行特征選擇,以確定哪些特征對(duì)預(yù)測(cè)Survived最為關(guān)鍵。在這個(gè)案例中,我們可以通過計(jì)算特征與目標(biāo)變量之間的相關(guān)性來進(jìn)行特征選擇。
# 計(jì)算特征與生存之間的相關(guān)性
correlations = titanic_data.corrwith(titanic_data['Survived'])
# 顯示相關(guān)性
print(correlations)
# 基于相關(guān)性選擇特征
selected_features = correlations[abs(correlations) > 0.1].index
titanic_data_selected = titanic_data[selected_features]
print(titanic_data_selected.head())
在這個(gè)例子中,我們選擇了與Survived相關(guān)性絕對(duì)值大于0.1的特征。這樣,我們可以去除那些與目標(biāo)變量關(guān)系不大的特征,減少模型的復(fù)雜度,并提高模型的性能。
數(shù)據(jù)準(zhǔn)備與模型訓(xùn)練:
最后,我們將經(jīng)過清洗、編碼和選擇后的數(shù)據(jù)分為訓(xùn)練集和測(cè)試集,準(zhǔn)備用于機(jī)器學(xué)習(xí)模型的訓(xùn)練。
from sklearn.model_selection import train_test_split
# 分離特征和標(biāo)簽
X = titanic_data_selected.drop('Survived', axis=1)
y = titanic_data_selected['Survived']
# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 后續(xù)可以使用X_train和y_train來訓(xùn)練機(jī)器學(xué)習(xí)模型,并使用X_test和y_test來評(píng)估模型的性能。
通過本案例研究,我們展示了如何進(jìn)行數(shù)據(jù)質(zhì)量和數(shù)據(jù)特征分析。首先,我們加載了數(shù)據(jù)集并檢查了缺失值的情況,對(duì)缺失值進(jìn)行了合理的填充或刪除。接著,我們對(duì)特征進(jìn)行了描述性統(tǒng)計(jì)和可視化分析,了解了特征的分布以及與目標(biāo)變量的關(guān)系。然后,我們進(jìn)行了特征選擇,去除了與目標(biāo)變量相關(guān)性不強(qiáng)的特征。最后,我們準(zhǔn)備了數(shù)據(jù)用于機(jī)器學(xué)習(xí)模型的訓(xùn)練。這個(gè)過程是機(jī)器學(xué)習(xí)項(xiàng)目中的重要一環(huán),能夠幫助我們更好地理解數(shù)據(jù),并為后續(xù)的模型構(gòu)建提供堅(jiān)實(shí)的基礎(chǔ)。
小結(jié)
本章從應(yīng)用的角度出發(fā),從數(shù)據(jù)質(zhì)量分析和數(shù)據(jù)特征分析兩個(gè)方面對(duì)數(shù)據(jù)進(jìn)行探索分析,最后介紹了Python常用的數(shù)據(jù)探索函數(shù)及用例。數(shù)據(jù)質(zhì)量分析要求我們拿到數(shù)據(jù)后先檢測(cè)是否存在缺失值和異常值;數(shù)據(jù)特征分析要求我們?cè)跀?shù)據(jù)挖掘建模前,通過頻率分布分析、對(duì)比分析、帕累托分析、周期性分析、相關(guān)性分析等方法,對(duì)采集的樣本數(shù)據(jù)的特征規(guī)律進(jìn)行分析,以了解數(shù)據(jù)的規(guī)律和趨勢(shì),為數(shù)據(jù)挖掘的后續(xù)環(huán)節(jié)提供支持。文章來源:http://www.zghlxwxcb.cn/news/detail-848780.html
要特別說明的是,在數(shù)據(jù)可視化中,由于主要使用Pandas作為數(shù)據(jù)探索和分析的工具,因此我們介紹的作圖工具都是Matplotlib和Pandas結(jié)合使用。一方面,Matplotlib是作圖工具的基礎(chǔ),Pandas作圖依賴于它;另一方面,Pandas 作圖有著簡單直接的優(yōu)勢(shì),因此.相互結(jié)合,往往能夠以最高的效率作出符合我們需要的圖。文章來源地址http://www.zghlxwxcb.cn/news/detail-848780.html
到了這里,關(guān)于【機(jī)器學(xué)習(xí)-12】數(shù)據(jù)探索---python主要的探索函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!