資料探勘學習記錄一

2021-10-04 07:27:50 字數 4403 閱讀 6717

本次學習基於關於二手車**資料的分析,根據他人的文章進行研究學習。通過細分步驟和深究每一步的意義,對於資料探勘有乙個更好的認識。

參考鏈結為:datawhale 零基礎入門資料探勘-task2 資料分析

1.python本身的安裝和配置

2.ide使用pycharm

3.進行numpy、pandas等的安裝

#通過以下的**進行資料的匯入

path =

'./datalab/231784/'

#path為資料所在檔案

train_data = pd.read_csv(path+

'used_car_train_20200313.csv'

, sep=

' ')

test_data = pd.read_csv(path+

'used_car_testa_20200313.csv'

, sep=

' ')

#注意這裡的sep引號中是空格,意思是根據空格對資料進行劃分(參考資料本身就是以空格劃分的。所以在具體實施時,需要根據資料進行判斷如何劃分。)

在匯入資料後,我們需要對資料進行觀察。實際操作中對於資料的處理往往占用資料分析師大部分的時間,而對於資料的初期觀察尤為重要。每個觀察的方面都涉及到幾個問題:

觀察的目的是什麼?

觀察從如何進行?

觀察結果怎麼分析?

具體操作有幾個方面,包括 .shape,.head(),.tail(),.info(),.describe()等

shape

train_data.shape
返回資料集的大小,即行數×列數。

觀察shape的目的僅為對資料有個初步的了解,知道其大概的大小,以方便後續研究。

head()和tail()

test_data.head())

)

方式:函式返回

分析:通過觀察資料的列名以及其他資訊,對資料報含的元素進行分析。

info()

train_data.info(

)

目的:通過info的返回值可以直觀的了解資料每一列的情況,包括名稱、型別、有多少空值。

方式:函式返回

分析:熟悉名稱、型別、空值

describe()

train_data.describe(

)

方式:函式返回

分析:describe()會返回相關統計量,包含個數count、平均值mean、方差std、最小值min、中位數25% 50% 75% 、以及最大值 看這個資訊主要是瞬間掌握資料的大概的範圍以及每個值的異常值的判斷,比如有的時候會發現999 9999 -1 等值這些其實都是nan的另外一種表達方式

train_data.isnull().

sum(

)

目的:檢視資料每一列存在的nan情況

方式:函式返回

分析:了解哪些列存在 nan, 並把nan的個數列印出來,如果 nan個數很小一般選擇填充,如果使用lgb等樹模型可以直接空缺,讓樹自己去優化,但如果nan過多,可以考慮刪掉

在觀察資料預設值的過程中,也可以通過呼叫視覺化函式,對資料進行分析,比如:

msno.matrix(train_data.sample(

250)

)

msno.bar(train_data.sample(

1000

))

對於預設列中含有「-」等可看作nan的值用nan進行替換,將資料化成只有「有資料」和nan兩部分的的形式

對於嚴重傾斜的資料可以採取忽略處理。因為資料嚴重傾斜相當於幾乎所有行的該列資料都是一樣的,可看作沒有影響的因子。對於嚴重傾斜的資料可以採取刪除處理。

通過對目標元素的統計,對資料有乙個大概的了解

.value_counts(

)

通過displot()可以影象展示值的分布。

displot()中引數的具體意義為:

hist:是否顯示直方圖

kde:核密度估計

bins:int或者list,控制直方圖的劃分

rag:控制是否生成觀測數值的小細條

fit:控制擬合的引數分布圖形,能夠直觀地評估它與觀察資料的對應關係

hist_kws, kde_kws, rug_kws, fit_kws引數接收字典型別,可以自行定義更多高階的樣式

norm_hist:若為true, 則直方圖高度顯示密度而非計數

其中引數fit是傳入預定的分布型別,進行比對,再根據最相似的進行分析

train_data.skew(

)train_data.kurt(

)

通過skew()、kurt()兩個函式進行研究

對於偏度和峰度的介紹:

plt.hist(np.log(train_data[

'price'])

, orientation =

'vertical'

,histtype =

'bar'

, color =

'red'

)

目的:將資料轉換成正態分佈

方式:使用np.log()進行資料轉換

分析:為何要轉化成正態分佈

分離特徵值

沒有label codingy_train = train_data['price']有label coding,根據實際含義進行劃分。

使用nunique()檢視該序列(axis=0/1對應著列或行)的不同值的數量,可以對資料有乙個大致的了解。

1、相關性分析

price_numeric = train_data[numeric_features]

correlation = price_numeric.corr(

)print

(correlation[

'price'

].sort_values(ascending =

false),

'\n'

)

使用corr()得到相關係數矩陣,比如我們關心**(price),那麼就求關於price的關係矩陣。可以得到乙個二維矩陣,取price一列,可以得到其他各項因素和price值的關係。可以使用plt.subplots()構造影象進行更直觀表示。

2、偏度和峰值

3、視覺化處理

f = pd.melt(train_data, value_vars=numeric_features)

g = sns.facetgrid(f, col=

"variable"

, col_wrap=

2, sharex=

false

, sharey=

false

)g = g.

map(sns.distplot,

"value"

)

其中pd.melt引數

frame:要處理的資料集

id_vars:不需要被轉換的列名

value_vars:需要轉換的列名,如果剩下的列全部都要轉換,就不用寫了

var_name和value_name是自定義設定對應的列名

col_level :如果列是multiindex,則使用此級別

使用函式構造出特徵箱型圖、小提琴圖、特徵柱形圖、頻數視覺化,並進行分析。

箱型圖:最大的優點就是不受異常值的影響(異常值也稱為離群值),可以以一種相對穩定的方式描述資料的離散分布情況。箱型圖

小提琴圖:小提琴圖 (violin plot)是用來展示多組資料的分布狀態以及概率密度。這種圖表結合了箱形圖和密度圖的特徵,主要用來顯示資料的分布形狀。跟箱形圖類似,但是在密度層面展示更好。在資料量非常大不方便乙個乙個展示的時候小提琴圖特別適用。

對於總結,使用這篇文章的一段話:

資料探勘學習(一)

資料探勘 從大量資料中抽取出 隱含的 有潛在用途的 未知的 人們可以理解的 有價值的資訊和模式的過程。2.建立目標資料集 資料選擇 3.資料清理和預處理 4.資料簡化和變形 5.選擇資料探勘功能 6.選擇資料探勘演算法 7.資料探勘 尋找有趣的模式 8.模式評估和知識展示 9.知識發現的使用 方法 ...

資料探勘學習筆記(一)

資料分析與資料探勘 1.資料分析 採用適當的統計分析方法對收集到的資料進行分析 概括和總結,對資料進行恰當的描述,提取有用的資訊的過程。2.資料探勘 data mining,dm 從海量的資料中通過相關的演算法來發現隱藏在資料中的規律和知識的過程。為什麼要進行資料探勘呢?通常將資料探勘視為資料中 知...

資料探勘學習筆記一 緒論

資料收集以及資料儲存技術的提高,方便了人們收集到大量的資料,而傳統的資料分析方法不能對海量的資料提取處有用的資訊。再次背景下,新的資料探勘技術誕生。資料探勘作為一種技術,是將傳統的資料分析方法與處理大量資料的複雜演算法相結合。資料探勘在商業以及醫學 科學及工程中有很重要的運用。一 什麼是資料探勘 資...