kaggle之EDA,特徵工程

2021-09-24 21:29:07 字數 1824 閱讀 2322

對於機器學習的從業者或者興趣愛好者而言,kaggle提供了乙個機器學習相關的競技和交流平台.通過比賽和討論分享,可以知道自己的水平並找到提高的方向.

通常我們會用 pandas 來載入資料,並做一些簡單的視覺化來理解資料。

visualization,通常來說 matplotlib 和 seaborn 提供的繪圖功能就可以滿足需求了。

比較常用的圖表有:

檢視目標變數的分布。當分布不平衡時,根據評分標準和具體模型的使用不同,可能會嚴重影響效能。

對 numerical variable,可以用 box plot 來直觀地檢視它的分布。

對於座標類資料,可以用 scatter plot 來檢視它們的分布趨勢和是否有離群點的存在。

對於分類問題,將資料根據 label 的不同著不同的顏色繪製出來,這對 feature 的構造很有幫助。

繪製變數之間兩兩的分布和相關度圖表。

feature engineering techniques,這篇文章是kaggle上面的一位grandmaster分享的特徵工程常用操作,摘錄如下.

df = pd.concat([train[col],test[col]],axis=0)

# perform feature engineering here

train[col] = df[:len(train)]

test[col] = df[len(train):]

df[col].fillna(-999, inplace=true)
df[col],_ = df[col].factorize()

if df[col].max()<128: df[col] = df[col].astype('int8')

elif df[col].max()<32768: df[col] = df[col].astype('int16')

else: df[col].astype('int32')

for col in df.columns:

if df[col].dtype=='float64': df[col] = df[col].astype('float32')

if df[col].dtype=='int64': df[col] = df[col].astype('int32')

df[col] = df[col].astype('category')
df['uid'] = df[『card1』].astype(str)+』_』+df[『card2』].astype(str)
df['x1_x2'] = df['x1'] * df['x2']
temp = df['card1'].value_counts().to_dict()

df['card1_counts'] = df['card1'].map(temp)

temp = df.groupby('card1')['transactionamt'].agg(['mean'])   

.rename(,axis=1)

df = pd.merge(df,temp,on='card1',how='left')

df[col] = ( df[col]-df[col].mean() ) / df[col].std()
df['d3_remove_time'] = df['d3'] - df['d3_week_mean']

task3特徵工程 task2EDA分析補充

由於task2打卡失誤,僅包含賽題理解,所以在task3中做乙個補充 eda中使用到的基本方法 data.shape 檢視資料行列總數 data.describe 檢視均值,標準差,資料分布等 data.info 資料資訊 data.isnull sum 檢視資料為空總數 missingno繪製缺失...

資料探勘之特徵工程

標籤編碼與獨熱編碼 onehotencoder獨熱編碼和 labelencoder標籤編碼 資料探勘的基本流程 多項式特徵 特徵構建 生成多項式特徵 對於特徵離散化,特徵交叉,連續特徵離散化非常經典的解釋 資料預處理與特徵選擇 特徵工程到底是什麼?機器學習中的資料清洗與特徵處理綜述 sklearn ...

機器學習之特徵工程

在工業界一直流行著一句話,資料的質量決定了模型的上線了,而特徵工程與模型的選擇只是盡可能的去逼近這個上線,當我們在資料無法改變的情況,特徵工程的優化便顯得尤為重要。我們輸入模型中,模型只認識資料,並不知道某一列所代表的含義,例如樹模型,它只會按照一定的規則去不停的分支,並不知道分支所代表的含義,而特...