對於機器學習的從業者或者興趣愛好者而言,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 ...
機器學習之特徵工程
在工業界一直流行著一句話,資料的質量決定了模型的上線了,而特徵工程與模型的選擇只是盡可能的去逼近這個上線,當我們在資料無法改變的情況,特徵工程的優化便顯得尤為重要。我們輸入模型中,模型只認識資料,並不知道某一列所代表的含義,例如樹模型,它只會按照一定的規則去不停的分支,並不知道分支所代表的含義,而特...