1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          機器學習實戰 | 自動化特征工程工具Featuretools應用

          來源:互聯網轉載 時間:2024-01-29 08:22:03

          作者:韓信子@ShowMeAI

          教程地址:http://www.showmeai.tech/tutorials/41

          本文地址:http://www.showmeai.tech/article-detail/209

          聲明:版權所有,轉載請聯系平臺與作者并注明出處

          收藏ShowMeAI查看更多精彩內容

          引言

          在ShowMeAI的文章 機器學習特征工程最全解讀 里,我們給大家詳細介紹了特征工程的操作,但我們實際上有很多工具可以輔助我們更快捷地完成特征工程,在本篇內容中,ShowMeAI給大家介紹Featuretools這個Python自動化特征工程的工具庫。我們會借助于BigMart Sales數據集來演示自動化特征工程的相關應用。

          1.機器學習與特征

          在機器學習的背景下,特征是用來解釋現象發生的單個特性或一組特性。當這些特性轉換為某種可度量的形式時,它們被稱為特征。

          2.特征工程介紹

          特征工程(feature engineering):利用領域知識和現有數據,創造出新的特征,用于機器學習算法;可以手動(manual)或自動(automated)。

          數據與特征工程決定了模型的上限,改進算法只不過是逼近這個上限而已。

          3.特征工程意義

          4.自動化特征工程

          <img src="http://www.tacdiversifiedservices.com/uploads/allimg/20240129/-24012ZR2031L.jpg" referrerpolicy="no-referrer"/>

          上左圖顯示了20世紀初一群人正在組裝汽車,上右圖顯示了當今一群機器人在做同樣的工作。自動化任何流程都可以使其變得更加高效和經濟。同樣,特征工程也是如此。而且,在機器學習中,常用特征的特征工程已經實現自動化。

          我們有一個很好的工具可以用來幫忙完成自動化特征工程的過程,這個Python工具庫的名稱叫Featuretools。

          5.Featuretools簡介

          Featuretools是一個Python自動化特征工程的工具庫。它可以幫助大家快速構建豐富的數據特征,而把更多的時間聚焦于構建機器學習模型的其他方面。

          要學會使用Featuretools,我們要先了解它的三個主要組件:

          外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-omwkGCGq-1647882602558)(http://image.showmeai.tech/machine_learning_in_action/209.png)

          • 實體(Entities)
            • 一個Entity可以視作是一個Pandas的數據框的表示,多個實體的集合稱為Entityset。
          • 關系(relationship)
            • 關系就是表之間的關聯鍵的定義。
          • 特征算子(Feature primitives)
            • DFS通過將特征算子應用于Entityset的實體關系來構造新特征。算子就是一些特征工程的函數,例如groupby mean max min等等。

          Featuretools實際上就是提供了一個框架讓我們可以方便快速的通過簡約的代碼來實現單表的轉換操作和多表的跨表連接操作,下面我們借助于BigMart Sales數據集實踐問題中來具體講解Featuretools工具。

          6.Featuretools實踐

          這里的案例場景BigMart Sales要解決的是電商領域的銷量預估問題,我們希望構建模型來估算特定門店中每種商品的銷售額,這將有助于BigMart的決策者找出每一個產品或門店的重要屬性,這對提高整體銷售起著關鍵性作用。請注意,在給定的數據集中,有跨10個門店的1559種商品。

          數據集如下:鏈接:https://pan.baidu.com/s/1qjJZjY56MnHBvmUQEMjq9g提取碼:show

          下表給出了數據字段說明:

          變量

          描述

          Item_Identifier

          商品編號

          Item_Weight

          商品重量

          Item_Fat_Content

          是否是低脂商品

          Item_Visibility

          該商品展示區域占門店中所有商品展示區域的比例

          Item_Type

          商品所屬分類

          Item_MRP

          商品最高售價

          Outlet_Identifier

          門店編號

          Outlet_Establishment_Year

          門店建立年份

          Outlet_Size

          門店占地面積

          Outlet_Location_Type

          門店所在城市類型

          Outlet_Type

          門店類型(雜貨店或超市)

          Item_Outlet_Sales

          門店商品銷售額 (即需要預測的輸出變量)

          6.1 Featuretools安裝

          大家可以在命令行使用pip輕松安裝Featuretools。

          pip install featuretools

          6.2 導入依賴工具庫及數據

          import featuretools as ftimport numpy as npimport pandas as pdtrain = pd.read_csv("Train.csv")test = pd.read_csv("test.csv")

          6.3 數據準備

          我們先從數據中提取出目標字段和特征字段,如下:

          # saving identifierstest_Item_Identifier = test['Item_Identifier']test_Outlet_Identifier = test['Outlet_Identifier']sales = train['Item_Outlet_Sales']train.drop(['Item_Outlet_Sales'], axis=1, inplace=True)

          接著,我們合并訓練集和測試集,以完成統一而一致的數據處理變換。

          combi = train.append(test, ignore_index=True)

          我們查看一下數據集的缺失值情況。

          combi.isnull().sum()

          我們發現字段Item_WeightOutlet_size中有非常多的缺失值,先做一個快速處理:

          # 缺失值處理combi['Item_Weight'].fillna(combi['Item_Weight'].mean(), inplace = True)combi['Outlet_Size'].fillna("missing", inplace = True)

          6.4 數據預處理

          我們只做一點簡單的數據預處理,這樣后續可以更充分直觀地展示Featuretools的功能。

          combi['Item_Fat_Content'].value_counts()

          我們發現Item_Fat_Content只包含兩個類別:「低脂肪」和「常規」(雖然在字段取值上有多種,但其只是格式差異),這里我們對其進行二值化變換。

          # 二值編碼fat_content_dict = {'Low Fat':0, 'Regular':1, 'LF':0, 'reg':1, 'low fat':0}combi['Item_Fat_Content'] = combi['Item_Fat_Content'].replace(fat_content_dict, regex=True)

          6.5 Featuretools特征工程

          下面我們使用Featuretools來實現自動化特征工程。首先我們將「商品」和「門店」信息組合,構建一個數據唯一ID。

          combi['id'] = combi['Item_Identifier'] + combi['Outlet_Identifier']combi.drop(['Item_Identifier'], axis=1, inplace=True)

          因為不再需要特征Item_Identifier,我們把它刪除了。我們保留了特征Outlet_Identifier,稍后會使用到它。

          接下來我們創建一個特征EntitySet,它是一種包含多個數據框及其之間關系的結構。

          # 構建實體集合eses = ft.EntitySet(id = 'sales')# 添加dataframe數據 es.add_dataframe(dataframe_name = 'bigmart', dataframe = combi, index = 'id')

          下面我們將使用深度特征綜合(Deep Feature Synthesis)自動創建新特征。

          trans_primitives=['add_numeric', 'subtract_numeric', 'multiply_numeric', 'pide_numeric'] # 2列相加減乘除來生成新特征agg_primitives=['sum', 'median','mean']feature_matrix, feature_names = ft.dfs(entityset=es,                                        target_dataframe_name = 'bigmart',                                        max_depth = 1,                                        verbose = 1,                                       agg_primitives=agg_primitives,                                       trans_primitives=trans_primitives,                                       n_jobs = 8)

          上述代碼中:

          • max_depth控制由疊加特征基元方式生成的特征的復雜性。
          • agg_primitives是定義了一些統計聚合方式。
          • trans_primitives定義了變換計算算子。
          • n_jobs設定了多核并行特征計算的核數。

          通過上述操作,Featuretools就自行構造了許多新特征。

          讓我們來看看這些新構造的特征:

          feature_matrix.columns

          你會發現DFS快速構建出了非常多新特征。比我們手動操作構建特征要高效得多!

          我們查看一下feature_matrix的前幾行。

          feature_matrix.head()

          我們對這個Dataframe做一點小調整,我們根據combi數據框中的id變量對其進行排序。

          feature_matrix = feature_matrix.reindex(index=combi['id'])feature_matrix = feature_matrix.reset_index()

          6.6 特征解釋

          我們還可以通過以下代碼來對其構建出來的特征做解釋,比如我們要解釋第20個特征是如何得到的。

          ft.graph_feature(feature_names[20])

          6.7 構建模型

          下面我們就可以用構建出來的特征來建模啦,預測Item_Outlet_Sales。由于最終的數據(feature_matrix)里具有許多類別特征,我們這里使用LightGBM模型。它可以直接使用類別特征,并且本質上是可擴展的。

          你可以閱讀ShowMeAI的文章 圖解機器學習 | LightGBM模型詳解LightGBM建模應用詳解 了解LightGBM模型的原理和應用方法。

          import lightgbm as lgbimport pandas as pd

          CatBoost要求所有類別變量都采用字符串格式。因此,我們首先將數據中的類別變量轉換為字符串:

          categorical_features = np.where(feature_matrix.dtypes == 'object')[0]for i in categorical_features:    feature_matrix.iloc[:,i] = feature_matrix.iloc[:,i].astype('str')

          然后重新把feature_matrix拆回訓練集和測試集。

          feature_matrix.drop(['id'], axis=1, inplace=True)train = feature_matrix[:8523]test = feature_matrix[8523:]
          # removing uneccesary variablestrain.drop(['Outlet_Identifier'], axis=1, inplace=True)test.drop(['Outlet_Identifier'], axis=1, inplace=True)

          將訓練集拆成訓練和驗證兩部分,以便在本地測試算法的性能。

          from sklearn.model_selection import train_test_split# splitting train data into training and validation setxtrain, xvalid, ytrain, yvalid = train_test_split(train, sales, test_size=0.25, random_state=11)

          最后,訓練模型。采用RMSE(Root Mean Squared Error,均方根誤差)作為衡量指標。

          # 初始化LGBMRegressor回歸器model_lgb = lgb.LGBMRegressor(iterations=5000, learning_rate=0.05, depth=6, eval_metric='RMSE', random_seed=7)# 訓練模型model_lgb.fit(xtrain, ytrain, eval_set=[(xvalid, yvalid)], early_stopping_rounds=1000)
          from sklearn.metrics import mean_squared_erronp.sqrt(mean_squared_error(model_lgb.predict(xvalid), yvalid))

          驗證數據集的RMSE得分是1094.7984。

          在沒有任何特征工程的情況下,驗證集的得分為1163。 因此,Featuretools構造的特征不僅僅是隨機特征,而且還非常有價值的。最重要的是,它使特征工程節省了大量時間。

          參考資料

          • 圖解機器學習算法 | 從入門到精通系列
          • 圖解機器學習 | LightGBM模型詳解
          • LightGBM建模應用詳解
          • 機器學習特征工程最全解讀

          ShowMeAI系列教程推薦

          • 機器學習實戰:手把手教你玩轉機器學習系列
          標簽:FEATURETOOL-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          成都到重慶的火車經過哪些地方?;1.如果從成都坐高鐵到重慶,高鐵經過璧山、永川、大足、榮昌、隆昌、內江、資陽,到達成都。2.景點大概是重慶的區縣,永川,大足,榮昌,永川茶山竹海,樂和樂都,大足石雕,龍水湖,榮昌路孔古鎮。資陽沒什么特別的。隆昌的石牌坊也被稱為牌坊之鄉。3.如果是高鐵,從成都到重慶,要走大成鐵路,金堂,遂寧然后向南轉到重慶。4.如果是普通列車,走成渝鐵路,簡陽,資陽,內江,隆昌,最后...

          “CK香水”是什么意思?CK香水指的是Calvin Klein品牌的香水。 相關介紹: CK是美國第一大設計師品牌,曾經連續四度獲得知名的服裝獎項。Calvin Klein有“Calvin Klein Collection”(高級時裝)、“CK Calvin Klein”(高級成衣)、“Calvin Klein Jeans”(牛仔)三大品牌。 另外還經營休閑裝、襪子、內衣、睡衣、泳衣、香水、眼鏡、...

          eyeBeam怎樣注冊?眼球束(www.lxvoip.net/voip-soft/eybeam.html)是一款即時通訊(IM)軟電話,可以進行實時多媒體通信,無論您是個人客戶還是中小企業客戶,您都可以輕松地與他人保持聯系和管理您的通話。Eyebeam易于使用,集成了語音、視頻、即時消息、在線狀態等多種功能。它在世界各地擁有數以萬計的用戶。無論您是簡單的電話溝通還是舉行多方電話會議,eyebeam...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>