0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過實戰(zhàn)針對機(jī)器學(xué)習(xí)之特征工程進(jìn)行處理

lviY_AI_shequ ? 來源:lp ? 2019-03-14 15:19 ? 次閱讀

前言

上次對租金預(yù)測比賽進(jìn)行的是數(shù)據(jù)分析部分的處理機(jī)器學(xué)習(xí)實戰(zhàn)--住房月租金預(yù)測(1),今天繼續(xù)分享這次比賽的收獲。本文會講解對特征工程的處理。話不多說,我們開始吧!

特征工程

“數(shù)據(jù)決定了機(jī)器學(xué)習(xí)的上限,而算法只是盡可能逼近這個上限”,這里的數(shù)據(jù)指的就是經(jīng)過特征工程得到的數(shù)據(jù)。特征工程指的是把原始數(shù)據(jù)轉(zhuǎn)變?yōu)槟P偷挠?xùn)練數(shù)據(jù)的過程,它的目的就是獲取更好的訓(xùn)練數(shù)據(jù)特征,使得機(jī)器學(xué)習(xí)模型逼近這個上限。特征工程能使得模型的性能得到提升,有時甚至在簡單的模型上也能取得不錯的效果。特征工程在機(jī)器學(xué)習(xí)中占有非常重要的作用,上面的思維導(dǎo)圖包含了針對特征工程處理的所有方法。

缺失值處理

1print(all_data.isnull().sum())

使用上面的語句可以查看數(shù)據(jù)集中的缺失值

從上面的圖中可以清楚的看到各數(shù)據(jù)的缺失值。

對于缺失值是任何一個數(shù)據(jù)集都不可避免的,在數(shù)據(jù)統(tǒng)計過程中可能是無意的信息被遺漏,比如由于工作人員的疏忽,忘記而缺失;或者由于數(shù)據(jù)采集器等故障等原因造成的缺失,或者是有意的有些數(shù)據(jù)集在特征描述中會規(guī)定將缺失值也作為一種特征值,再或者是不存在的,有些特征屬性根本就是不存在的。

缺失值的處理,我們常用的方法有:刪除記錄:對于樣本數(shù)據(jù)量較大且缺失值不多同時正相關(guān)性不大的情況下是有效。可以使用pandas的dropna來直接刪除有缺失值的特征。數(shù)據(jù)填充:數(shù)據(jù)填充一般采用均值,中位數(shù)和中數(shù),當(dāng)然還有其他的方法比如熱卡填補(bǔ)(Hot deck imputation),K最近距離鄰法(K-means clustering)等。不作處理:因為一些模型本身就可以應(yīng)對具有缺失值的數(shù)據(jù),此時無需對數(shù)據(jù)進(jìn)行處理,比如Xgboost,rfr等高級模型,所以我們可以暫時不作處理。

對于這次比賽缺失值的處理主要是數(shù)據(jù)的填充。

1cols=["renovated","living_status","subway_distance","subway_station","subway_line"] 2forcolincols: 3kc_train[col].fillna(0,inplace=True) 4kc_test[col].fillna(0,inplace=True) 5 6kc_train["way_rent"].fillna(2,inplace=True) 7kc_test["way_rent"].fillna(2,inplace=True) 8kc_train["area"].fillna(8,inplace=True) 9kc_train=kc_train.fillna(kc_train.mean())10kc_test["area"].fillna(8,inplace=True)11kc_test=kc_test.fillna(kc_test.mean())

對于裝修狀態(tài),居住狀態(tài),距離,地鐵站點(diǎn)和線路均用0填充,區(qū)均用中位數(shù)8來填充,出租方式用2填充,同時做了一個判斷

1kc_train['is_living_status']=kc_train['living_status'].apply(lambdax:1ifx>0else0)2kc_train['is_subway']=kc_train['subway_distance'].apply(lambdax:1ifx>0else0)3kc_train['is_renovated']=kc_train['renovated'].apply(lambdax:1ifx>0else0)4kc_train['is_rent']=kc_train['way_rent'].apply(lambdax:1ifx0else0)7kc_test['is_subway']=kc_test['subway_distance'].apply(lambdax:1ifx>0else0)8kc_test['is_renovated']=kc_test['renovated'].apply(lambdax:1ifx>0else0)9kc_test['is_rent']=kc_test['way_rent'].apply(lambdax:1ifx

異常值處理

異常值是分析師和數(shù)據(jù)科學(xué)家常用的術(shù)語,因為它需要密切注意,否則可能導(dǎo)致錯誤的估計。 簡單來說,異常值是一個觀察值,遠(yuǎn)遠(yuǎn)超出了樣本中的整體模式。

什么會引起異常值呢?

主要有兩個原因:人為錯誤和自然錯誤

如何判別異常值?

正態(tài)分布圖,箱裝圖或者離散圖。以正態(tài)分布圖為例:符合正態(tài)分布時,根據(jù)正態(tài)分布的定義可知,距離平均值3δ之外的概率為 P(|x-μ|>3δ) <= 0.003 ,這屬于極小概率事件,在默認(rèn)情況下我們可以認(rèn)定,距離超過平均值3δ的樣本是不存在的。 因此,當(dāng)樣本距離平均值大于3δ,則認(rèn)定該樣本為異常值。當(dāng)數(shù)據(jù)不服從正態(tài)分布:當(dāng)數(shù)據(jù)不服從正態(tài)分布,可以通過遠(yuǎn)離平均距離多少倍的標(biāo)準(zhǔn)差來判定,多少倍的取值需要根據(jù)經(jīng)驗和實際情況來決定。

異常值的處理方法常用有四種:1.刪除含有異常值的記錄2.將異常值視為缺失值,交給缺失值處理方法來處理3.用平均值來修正4.不處理

1all_data=pd.concat([train,test],axis=0,ignore_index=True) 2all_data.drop(labels=["price"],axis=1,inplace=True) 3fig=plt.figure(figsize=(12,5)) 4ax1=fig.add_subplot(121) 5ax2=fig.add_subplot(122) 6g1=sns.distplot(train['price'],hist=True,label='skewness:{:.2f}'.format(train['price'].skew()),ax=ax1) 7g1.legend() 8g1.set(xlabel='Price') 9g2=sns.distplot(np.log1p(train['price']),hist=True,label='skewness:{:.2f}'.format(np.log1p(train['price']).skew()),ax=ax2)10g2.legend()11g2.set(xlabel='log(Price+1)')12plt.show()

查看訓(xùn)練集的房價分布,左圖是原始房價分布,右圖是將房價對數(shù)化之后的。

由于房價是有偏度的,將房價對數(shù)化并且將有偏的數(shù)值特征對數(shù)化

1train['price']=np.log1p(train['price'])23#將有偏的數(shù)值特征對數(shù)化4num_features_list=list(all_data.dtypes[all_data.dtypes!="object"].index)56foriinnum_features_list:7ifall_data[i].dropna().skew()>0.75:8all_data[i]=np.log1p(all_data[i])

根據(jù)上一篇我們篩選出的十個最相關(guān)的特征值,畫出離散圖,并且對離散點(diǎn)做處理,這里只取房屋面積舉個栗子。

1var='sqft_living'2data=pd.concat([train['price'],train[var]],axis=1)3data.plot.scatter(x=var,y='price',ylim=(0,150));

1train.drop(train[(train["sqft_living"]>0.125)&(train["price"]<20)].index,inplace=True)

這里將面積大于0.125且價格小于20的點(diǎn)全部刪除。

對于特征工程的處理這是在自己代碼中最重要的兩步--缺失值和異常值的處理,將類別數(shù)值轉(zhuǎn)化為虛擬變量和歸一化的處理效果不是特別好所以沒有貼上,數(shù)據(jù)集中的房屋朝向可以采用獨(dú)熱編碼,感興趣的可以試一下,我一直沒搞懂看了同學(xué)的處理他的代碼量太大,效果也不是特別明顯,自己索性沒去研究。下一次更新將針對這個問題進(jìn)行模型選擇。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標(biāo)題:機(jī)器學(xué)習(xí)實戰(zhàn)--住房月租金預(yù)測(2)

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    機(jī)器學(xué)習(xí)算法的特征工程與意義詳解

    1、特征工程與意義 特征就是從數(shù)據(jù)中抽取出來的對結(jié)果預(yù)測有用的信息。 特征工程是使用專業(yè)知識背景知識和技巧
    發(fā)表于 10-08 15:24 ?2842次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>算法的<b class='flag-5'>特征</b><b class='flag-5'>工程</b>與意義詳解

    機(jī)器學(xué)習(xí)實戰(zhàn)logistic回歸

    輸入數(shù)據(jù)的判斷結(jié)果。過程非常關(guān)鍵,需要預(yù)測函數(shù)的大概形式, 比如是線性還是非線性的。 本文參考機(jī)器學(xué)習(xí)實戰(zhàn)的相應(yīng)部分,看一下數(shù)據(jù)集。 // 兩個特征 -0.017612 14.0530
    的頭像 發(fā)表于 09-29 15:17 ?2306次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>之</b>logistic回歸

    【下載】《機(jī)器學(xué)習(xí)》+《機(jī)器學(xué)習(xí)實戰(zhàn)

    、Apriori算法、FP-Growth算法。第四部分介紹了機(jī)器學(xué)習(xí)算法的一些附屬工具。全書通過精心編排的實例,切入日常工作任務(wù),摒棄學(xué)術(shù)化語言,利用高效的可復(fù)用Python代碼來闡釋如何處理
    發(fā)表于 06-01 15:49

    機(jī)器學(xué)習(xí)實戰(zhàn):GNN加速器的FPGA解決方案

    推出的 Speedster7t系列高性能FPGA,專門針對數(shù)據(jù)中心和機(jī)器學(xué)習(xí)工作負(fù)載進(jìn)行了優(yōu)化,消除了CPU、GPU以及傳統(tǒng) FPGA 存在的若干性能瓶頸。Speedster7t FP
    發(fā)表于 10-20 09:48

    想掌握機(jī)器學(xué)習(xí)技術(shù)?從了解特征工程開始

    問題。解決這些問題的方法與數(shù)據(jù)預(yù)處理的方法在機(jī)器學(xué)習(xí)中被統(tǒng)稱為特征工程,今天我們就來了解一下吧。?◆??◆??◆
    的頭像 發(fā)表于 12-05 09:36 ?2108次閱讀

    機(jī)器學(xué)習(xí)特征工程的五個方面優(yōu)點(diǎn)

    特征工程是用數(shù)學(xué)轉(zhuǎn)換的方法將原始輸入數(shù)據(jù)轉(zhuǎn)換為用于機(jī)器學(xué)習(xí)模型的新特征特征
    的頭像 發(fā)表于 03-15 16:57 ?3898次閱讀

    機(jī)器學(xué)習(xí)特征提取 VS 特征選擇

    機(jī)器學(xué)習(xí)特征選擇和特征提取區(qū)別 demi 在 周四, 06/11/2020 - 16:08 提交 1. 特征提取 V.S
    的頭像 發(fā)表于 09-14 16:23 ?4063次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>之</b><b class='flag-5'>特征</b>提取 VS <b class='flag-5'>特征</b>選擇

    機(jī)器學(xué)習(xí)實戰(zhàn)的源代碼資料合集

    本文檔機(jī)器學(xué)習(xí)實戰(zhàn)的源代碼資料合集
    發(fā)表于 03-01 09:28 ?51次下載
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>實戰(zhàn)</b>的源代碼資料合集

    特征選擇和機(jī)器學(xué)習(xí)的軟件缺陷跟蹤系統(tǒng)對比

    針對Bugzilla缺陷跟蹤系統(tǒng)的ε clipse項目軟件缺陷報告數(shù)據(jù)集,使用特征選擇和機(jī)器學(xué)習(xí)算法對向量化的原始數(shù)據(jù)進(jìn)行
    發(fā)表于 06-10 10:50 ?12次下載

    機(jī)器學(xué)習(xí)算法學(xué)習(xí)特征工程1

    特征工程機(jī)器學(xué)習(xí)過程中的關(guān)鍵步驟,涉及將原始數(shù)據(jù)轉(zhuǎn)換為機(jī)器學(xué)習(xí)算法可以有效使用的格式。在本篇博
    的頭像 發(fā)表于 04-19 11:38 ?753次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>算法<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>之</b><b class='flag-5'>特征</b><b class='flag-5'>工程</b>1

    機(jī)器學(xué)習(xí)算法學(xué)習(xí)特征工程2

    特征工程機(jī)器學(xué)習(xí)過程中的關(guān)鍵步驟,涉及將原始數(shù)據(jù)轉(zhuǎn)換為機(jī)器學(xué)習(xí)算法可以有效使用的格式。在本篇博
    的頭像 發(fā)表于 04-19 11:38 ?793次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>算法<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>之</b><b class='flag-5'>特征</b><b class='flag-5'>工程</b>2

    機(jī)器學(xué)習(xí)算法學(xué)習(xí)特征工程3

    特征工程機(jī)器學(xué)習(xí)過程中的關(guān)鍵步驟,涉及將原始數(shù)據(jù)轉(zhuǎn)換為機(jī)器學(xué)習(xí)算法可以有效使用的格式。在本篇博
    的頭像 發(fā)表于 04-19 11:38 ?964次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>算法<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>之</b><b class='flag-5'>特征</b><b class='flag-5'>工程</b>3

    數(shù)據(jù)預(yù)處理特征工程的常用功能

    機(jī)器學(xué)習(xí)最基礎(chǔ)的5個流程,分別是數(shù)據(jù)獲取,數(shù)據(jù)預(yù)處理,特征工程,建模、測試和預(yù)測,上線與部署。
    的頭像 發(fā)表于 01-25 11:26 ?673次閱讀

    通過強(qiáng)化學(xué)習(xí)策略進(jìn)行特征選擇

    來源:DeepHubIMBA特征選擇是構(gòu)建機(jī)器學(xué)習(xí)模型過程中的決定性步驟。為模型和我們想要完成的任務(wù)選擇好的特征,可以提高性能。如果我們處理
    的頭像 發(fā)表于 06-05 08:27 ?310次閱讀
    <b class='flag-5'>通過強(qiáng)化學(xué)習(xí)</b>策略<b class='flag-5'>進(jìn)行</b><b class='flag-5'>特征</b>選擇

    機(jī)器學(xué)習(xí)中的數(shù)據(jù)預(yù)處理特征工程

    機(jī)器學(xué)習(xí)的整個流程中,數(shù)據(jù)預(yù)處理特征工程是兩個至關(guān)重要的步驟。它們直接決定了模型的輸入質(zhì)量,進(jìn)而影響模型的訓(xùn)練效果和泛化能力。本文將從數(shù)
    的頭像 發(fā)表于 07-09 15:57 ?273次閱讀