構造更多***的特徵
檢視資料列名:檢視資料每列資訊(數目,空置和型別):(data_train.columns)
檢視每列統計資訊(數目、均值、方差、最小值、25%分位值、50%分位值、75%分位值和最大值):(data_train.info(
))
(data_train.describe(
))
空置:nan
利用pandas庫判斷資料中是否有空值:返回值為等尺寸的datafram檔案,資料型別為:bool型別(true/flase)(pd.isnull(df)
)
分布(特徵選擇)
通過散點圖檢視單一特徵分布:plt.scatter(x,y)
#x為特徵,y為標籤
異常點
方差較小的情況下,max/min 離均值很遠,則max/min可能為異常點通過繪圖觀察,極具偏離大部分樣本點的點稱為異常點(需要判讀該點是資料性質造成的,還是真是存在的異常點)
異常點的存在,對模型的魯棒性存在影響
量綱
任意兩列資料的單位懸殊過大
標籤狀況:
空值處理
ml**
將已知資料設為資料集,將nan值設為測試集,進行ml從而得到完整的資料示例如下(使用了隨機森林進行訓練)
def
set_missing_ages
(df)
:# 把已有的數值型特徵取出來丟進random forest regressor中
age_df = df[
['age'
,'fare'
,'parch'
,'sibsp'
,'pclass']]
# 乘客分成已知年齡和未知年齡兩部分
known_age = age_df[age_df.age.notnull()]
.as_matrix(
) unknown_age = age_df[age_df.age.isnull()]
.as_matrix(
)# y即目標年齡
y = known_age[:,
0]# x即特徵屬性值
x = known_age[:,
1:]# fit到randomforestregressor之中
rfr = randomforestregressor(random_state=
0, n_estimators=
2000
, n_jobs=-1
) rfr.fit(x, y)
# 用得到的模型進行未知年齡結果**
predictedages = rfr.predict(unknown_age[:,
1::]
)# 用得到的**結果填補原缺失資料
df.loc[
(df.age.isnull())
,'age'
]= predictedages
return df, rfr
是否需要歸一化
分桶離散
標籤均衡
標籤比例不平衡(比如1:9),處理方式如下:
from sklearn.linear_model import logisticregression
from sklearn.datasets import load_iris
iris = load_iris(
)#引數estimator為基模型
#引數n_features_to_select為選擇的特徵個數7
(iris.data[0:
5])selector = rfe(estimator=logisticregression(
), n_features_to_select=2)
.fit(iris.data, iris.target)
data = selector.transform(iris.data)
(data[0:
5])print
(selector.ranking_)
embed
統計特徵
複雜特徵
參考比賽老手打比賽的特徵聚合經驗
自然特徵
影象、語音、文字、網路
組合已有的特徵(組合,聚和)
機器學習中的特徵工程總結一
俗話說 磨刀不誤砍材工 在機器學習領域,進行特徵工程相關的工作就相當於磨刀了。那麼,什麼是特徵工程呢?通俗來講,特徵工程就是為了使模型在未知資料集上獲得更好 精度而對原始資料集進行轉換的一系列過程。特徵工程的具體過程則由以下四點決定 1 評估模型優劣的方法 指標是什麼?rmse還是auc等 2 要解...
機器學習中的特徵工程總結一
俗話說 磨刀不誤砍材工 在機器學習領域,進行特徵工程相關的工作就相當於磨刀了。那麼,什麼是特徵工程呢?通俗來講,特徵工程就是為了使模型在未知資料集上獲得更好 精度而對原始資料集進行轉換的一系列過程。特徵工程的具體過程則由以下四點決定 1 評估模型優劣的方法 指標是什麼?rmse還是auc等 2 要解...
機器學習 特徵工程
老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。資料採集 資料採集前需要明確採集哪些資料,一般的思路為 哪些資料對最後的結果 有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?舉例1 我現在要 使用者對商品的下單情況,或者我要給使用者做商品推薦,那...