在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

新機(jī)器視覺 ? 來源:DA隨想隨筆 ? 2024-01-25 11:26 ? 次閱讀

來源:DA隨想隨筆

一、 概述

機(jī)器學(xué)習(xí)最基礎(chǔ)的5個(gè)流程,分別是數(shù)據(jù)獲取,數(shù)據(jù)預(yù)處理,特征工程,建模、測試和預(yù)測,上線與部署。

如果用做菜來對比,數(shù)據(jù)獲取就好比買菜,數(shù)據(jù)預(yù)處理就好比洗菜,特征工程就好比主菜輔料加工準(zhǔn)備,建模就好比炒菜,上線部署就好比擺盤上菜。

由此可見,數(shù)據(jù)預(yù)處理和特征工程在整個(gè)機(jī)器學(xué)習(xí)應(yīng)用工作中,占據(jù)了極其重要的地位。要是菜沒洗干凈,食材沒加工好,大廚手藝再高也做不出好吃的菜。

數(shù)據(jù)預(yù)處理

數(shù)據(jù)預(yù)處理主要是從數(shù)據(jù)角度和業(yè)務(wù)角度兩方面入手,從獲取的數(shù)據(jù)中查缺補(bǔ)漏,修正不準(zhǔn)確的數(shù)據(jù),剔除不適用的數(shù)據(jù)。

數(shù)據(jù)預(yù)處理的主要目的就是讓數(shù)據(jù)符合模型需求,能正確表達(dá)業(yè)務(wù)意義。

常見的需要處理的問題有:

數(shù)據(jù)類型問題:數(shù)據(jù)中有的是文本格式,有的是數(shù)值格式,有的同樣是時(shí)間序列但是格式不同。

數(shù)據(jù)質(zhì)量問題:數(shù)據(jù)存在重復(fù)值,異常值,缺失值,數(shù)據(jù)量綱不統(tǒng)一有的數(shù)據(jù)取值在(0,1)之間有的取值是百萬級的,樣本分布存在偏態(tài)有某幾類樣本量極大。

業(yè)務(wù)表達(dá)問題:有些數(shù)據(jù)從值上看符合一般邏輯,但是落在具體業(yè)務(wù)場景中,就會(huì)存在問題,因此要結(jié)合業(yè)務(wù)意義,剔除不符合要求的樣本數(shù)據(jù)。

特征工程

特征工程主要是對原始數(shù)據(jù)進(jìn)行加工、組合、轉(zhuǎn)換、產(chǎn)生新的變量,使其更能代表預(yù)測模型的潛在問題。同時(shí)還可以通過特征工程,挑選和提取一些更有價(jià)值的特征,剔除一些對模型性能影響不大的特征,從而降低模型計(jì)算的復(fù)雜度。

特征工程的主要目的是降低模型計(jì)算成本,提高模型精度。

常見的需要處理的問題有:

相關(guān)性分析:特征與特征之間相關(guān)性強(qiáng),說明具有多重共線性,可以將幾個(gè)特征組合成一個(gè)新特征,實(shí)現(xiàn)降維;特征與目標(biāo)之間的相關(guān)性強(qiáng),說明特征對目標(biāo)的解釋性好,是可用的特征,反之,說明特征對目標(biāo)沒什么影響,則可以剔除該特征。

特征構(gòu)造:基于原始特征,進(jìn)行組合,轉(zhuǎn)換,加工,生成新的特征,使得其更具有對目標(biāo)的解釋性。

特征降維:講一些解釋性弱的特征,業(yè)務(wù)意義不強(qiáng)的特征剔除,降低模型運(yùn)算復(fù)雜度,提高性能。

二、 常用功能

接下來以python為例,介紹在數(shù)據(jù)預(yù)處理和特征工程過程中常用的一些方法。

# 導(dǎo)入數(shù)據(jù),這里以python自帶的鳶尾花數(shù)據(jù)為例
from sklearn import datasets
import pandas as pd  
import numpy as np
# 加載數(shù)據(jù)集
data = datasets.load_iris()
X = data.data   # 特征值
y = data.target   # 目標(biāo)值
data_iris=pd.DataFrame(X)
data_iris['target']=pd.DataFrame(y)
data_iris=data_iris.rename(columns={0:'F1',1:'F2',2:'F3',3:'F4','target':'target'})
data_iris.head()

數(shù)據(jù)預(yù)處理

重復(fù)值處理

# 重復(fù)值刪除
data_iris = data_iris.drop_duplicates()

缺失值處理

# 缺失值處理
## 查看缺失值
data_iris.isnull().sum()
## 缺失值刪除
### 刪除含有缺失值的行  
data_iris = data_iris.dropna()  


### 刪除含有缺失值的列  
data_iris = data_iris.dropna(axis=1)


##缺失值填補(bǔ)
### 用指定數(shù)值填充缺失值 ,如0
data_iris = data_iris.fillna(0)
### 用均值、中位數(shù)、眾數(shù)填補(bǔ)
data_iris = data_iris.fillna(data_iris.mean())

異常值處理

# 異常值識(shí)別
## 分位數(shù)識(shí)別異常值,將上下四分位數(shù)之外的都定義為異常值


from scipy import stats  


### 計(jì)算IQR  
Q1 = data_iris.quantile(0.25)  
Q3 = data_iris.quantile(0.75)  
IQR = Q3 - Q1  


### 找出異常值  
lower_bound = Q1 - 1.5 * IQR  
upper_bound = Q3 + 1.5 * IQR  
outliers = data_iris[(data_iris < lower_bound) | (data_iris > upper_bound)]


## 標(biāo)準(zhǔn)差識(shí)別異常值,在幾個(gè)標(biāo)準(zhǔn)差之外的數(shù)據(jù)定義為異常值 
z_scores = (data_iris - data_iris.mean()) / data_iris.std()  
outliers_z = z_scores[abs(z_scores) > 3]


# 異常值處理
# 異常值處理方式很多,如直接刪除或用均值替代等,其與缺失值處理方式基本一致,就不再額外贅述。

分類變量編碼

讓不可計(jì)算的分類變量轉(zhuǎn)化為可計(jì)算的數(shù)值或者矩陣

# label編碼,將分類變量轉(zhuǎn)化成數(shù)值形式
from sklearn.preprocessing import LabelEncoder
data_iris.iloc[:,-1] = LabelEncoder().fit_transform(data_iris.iloc[:,-1])
# onehot編碼,創(chuàng)建虛擬變量,將分類變量轉(zhuǎn)化成01矩陣
from sklearn.preprocessing import OneHotEncoder
X = data_iris.iloc[:,1:-1]
enc = OneHotEncoder(categories='auto').fit(X)
result = enc.transform(X).toarray()

連續(xù)變量編碼

將連續(xù)變量離散化,使得其可以根據(jù)有區(qū)分效果。

# 二值化,大于閾值記為1,小于閾值記為0
from sklearn.preprocessing import Binarizer
X = data_iris.iloc[:,0].values.reshape(-1,1)               #類為特征專用,所以不能使用一維數(shù)組
transformer = Binarizer(threshold=30).fit_transform(X)
#transformer
# 分箱
from sklearn.preprocessing import KBinsDiscretizer
X = data_iris.iloc[:,0].values.reshape(-1,1) 
# n_bins設(shè)置要分幾箱,默認(rèn)為5;encode設(shè)置編碼方式,默認(rèn)onehot;
# strategy設(shè)置分箱方法,默認(rèn)為quantile等位分箱(每箱樣本數(shù)量相同),uniform等寬分箱,每個(gè)箱的上下限差值相同,kmeans聚類分箱
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
est.fit_transform(X)
#查看轉(zhuǎn)換后分的箱:變成了一列中的三箱
set(est.fit_transform(X).ravel())
est = KBinsDiscretizer(n_bins=3, encode='onehot', strategy='uniform')#查看轉(zhuǎn)換后分的箱:變成了啞變量
est.fit_transform(X).toarray()

標(biāo)準(zhǔn)化

消除變量的量綱,使得特征變量的值都收斂于同一個(gè)范圍。

# maxmin標(biāo)準(zhǔn)化
from sklearn.preprocessing import MinMaxScaler
#實(shí)現(xiàn)歸一化
scaler = MinMaxScaler()                             
scaler = scaler.fit(data_iris)                           
result = scaler.transform(data_iris)                     


# z標(biāo)準(zhǔn)化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()                           
scaler = scaler.fit(data_iris) 
result = scaler.transform(data_iris)

特征工程

業(yè)務(wù)理解

通過數(shù)據(jù)預(yù)處理,數(shù)據(jù)邏輯上的錯(cuò)誤基本已經(jīng)消除。但這是否就代表著可以建模了呢?當(dāng)然不是,這里還需要對特征進(jìn)行處理。

如果說數(shù)據(jù)預(yù)處理是對行數(shù)據(jù)進(jìn)行操作,那么特征工程主要是對列進(jìn)行操作。

而這其中,最重要的一步,是對特征的業(yè)務(wù)理解。如,某一個(gè)數(shù)據(jù)集有幾列分別為地區(qū),天氣,降水量,空氣濕度,用戶年齡。

如果現(xiàn)在是要對天氣情況進(jìn)行分析,那么很明顯,用戶年齡這個(gè)特征字段對這個(gè)目標(biāo)是沒有用處的。因此從業(yè)務(wù)理解的角度考慮,首先就可以剔除一些沒有錯(cuò),但沒有用的特征變量。

特征選擇-過濾法

# 方差過濾
## 如果一個(gè)特征的方差很小,說明數(shù)據(jù)都集中于一個(gè)范圍中,沒有什么差異性,甚至都是相同的值,該特征用處就不大
from sklearn.feature_selection import VarianceThreshold
#獲取刪除不合格特征之后的新特征矩陣
X = VairanceThreshold().fit_transform(data_iris) 
# 相關(guān)性過濾
## 如果特征與標(biāo)簽之間沒有相關(guān)性,則可以剔除該特征,如果特征與特征之間相關(guān)性很強(qiáng),則可以將特征組合,實(shí)現(xiàn)降維
## 這里以卡方過濾為例,常見的還有F檢驗(yàn),互信息等
from sklearn.ensemble import RandomForestClassifier as RFC
from sklearn.model_selection import cross_val_score
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
# k表示需要保留的特征個(gè)數(shù)
X_kafang = SelectKBest(chi2, k=3).fit_transform(data_iris.iloc[:,:-1], data_iris['target'])
## 至于k怎么取值,一方面是可以根據(jù)業(yè)務(wù)實(shí)際需要取,也可以通過學(xué)習(xí)曲線取學(xué)習(xí)曲線中最高點(diǎn)對應(yīng)的k值
%matplotlib inline
import matplotlib.pyplot as plt
score = []
for i in range(3,0,-1):
    X_fschi = SelectKBest(chi2, k=i).fit_transform(data_iris.iloc[:,:-1], data_iris['target'])
    once = cross_val_score(RFC(n_estimators=10,random_state=0),X_fschi,data_iris['target'],cv=5).mean()
    score.append(once)
plt.plot(range(3,0,-1),score)
plt.show()

特征選擇-嵌入法

將特征嵌入模型,讓算法同時(shí)進(jìn)行特征選擇和模型訓(xùn)練,然后輸出特征的權(quán)重參數(shù)值,通過排序選擇有用的特征,這里沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)去判斷權(quán)重參數(shù)達(dá)到什么標(biāo)準(zhǔn)可以剔除。且不同算法對參數(shù)讀取的函數(shù)也略有不同,因此對本方法就不具體舉例了。

特征選擇-包裝法

通過引入一個(gè)函數(shù),來幫助算法在模型訓(xùn)練時(shí)自主選擇特征,不需要人工判斷參數(shù)值。該方法相對復(fù)雜,本文也不做舉例。

三、 總結(jié)

本文簡單介紹了數(shù)據(jù)分析過程中,數(shù)據(jù)預(yù)處理和特征工程的相關(guān)基礎(chǔ)內(nèi)容,并進(jìn)行了一些舉例。但其實(shí)這兩部分內(nèi)容遠(yuǎn)不是這么簡單,在實(shí)際操作中,所遇到的問題更加復(fù)雜,且可應(yīng)用的方法也非常多,本文所介紹的都是最基礎(chǔ)的方法,便于理解其用途。

可以說數(shù)據(jù)分析結(jié)果好不好,很大程度取決于數(shù)據(jù)預(yù)處理和特征工程做的好不好。本文相對粗淺,感興趣的朋友,可以再深入研究。

審核編輯:湯梓紅

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

原文標(biāo)題:算法基礎(chǔ)-數(shù)據(jù)預(yù)處理和特征工程

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    轉(zhuǎn):Keil的使用方法 - 常用功能(二)

    的鏈接(微信點(diǎn)擊閱讀原文),Keil使用方法(匯總):http://blog.csdn.net/ybhuangfugui/article/details/51647893 今天總結(jié)關(guān)于工程目標(biāo)(配置)選項(xiàng)的常用功能,不會(huì)總結(jié)每一個(gè)功能
    發(fā)表于 06-13 10:42

    請問預(yù)處理有哪些常用功能分別如何使用?

    預(yù)處理有哪些常用功能,分別如何使用? 溫馨提示: 請從以下鏈接中的帖子學(xué)習(xí)相關(guān)內(nèi)容并進(jìn)行回答,其他地方得到的答案不能作為標(biāo)準(zhǔn)答案,僅能做為補(bǔ)充說明,七天之內(nèi)答案不可見,答題的童鞋有七天時(shí)間修改
    發(fā)表于 05-21 09:17

    Python數(shù)據(jù)預(yù)處理方法

    機(jī)器學(xué)習(xí)-Python實(shí)踐Day3(特征工程--數(shù)據(jù)預(yù)處理2)
    發(fā)表于 06-03 15:55

    數(shù)據(jù)探索與數(shù)據(jù)預(yù)處理

    目錄1數(shù)據(jù)探索與數(shù)據(jù)預(yù)處理21.1 賽題回顧21.2 數(shù)據(jù)探索性分析與異常值處理21.3 相關(guān)性分析52
    發(fā)表于 07-12 08:37

    c語言預(yù)處理命令以什么開頭

    全面了吧。#define和#include是最常用預(yù)處理,單片機(jī)程序不用其他預(yù)處理也完全可行。所以初學(xué)者并不深究預(yù)處理的應(yīng)用。我也只是初學(xué)者而已,但是發(fā)現(xiàn)
    發(fā)表于 07-20 07:00

    數(shù)據(jù)預(yù)處理故障信息獲取

    數(shù)據(jù)預(yù)處理故障信息獲取1.目前,常用的故障診斷參數(shù)有電流、電壓、功率、轉(zhuǎn)矩、磁通、溫度、振動(dòng)等物理量。其中定子電流信號相對于其它參數(shù)受環(huán)境等外界影響最小,也因?yàn)殡娏鱾鞲衅靼惭b方便而最容易獲取,因此
    發(fā)表于 09-06 08:43

    工業(yè)蒸汽量預(yù)測的數(shù)據(jù)預(yù)處理知識(shí)有哪些

    工業(yè)蒸汽量預(yù)測的數(shù)據(jù)預(yù)處理知識(shí)有哪些?工業(yè)蒸汽量預(yù)測的特征工程有哪些?
    發(fā)表于 10-22 06:32

    變頻器的常用功能

    變頻器的常用功能
    發(fā)表于 08-23 10:48 ?86次下載

    AltiumDesigner設(shè)計(jì)常用功能鍵大全

    Altium Designer 設(shè)計(jì)常用功能鍵大全
    發(fā)表于 07-03 15:19 ?0次下載

    Keil的使用方法 - 常用功能(二)

    Keil的使用方法 - 常用功能(二)
    的頭像 發(fā)表于 04-07 14:55 ?3322次閱讀
    Keil的使用方法 -  <b class='flag-5'>常用功能</b>(二)

    Keil的使用方法 - 常用功能(一)

    Keil的使用方法 - 常用功能(一)
    的頭像 發(fā)表于 04-07 14:51 ?8829次閱讀
    Keil的使用方法 -  <b class='flag-5'>常用功能</b>(一)

    機(jī)器學(xué)習(xí)的特征預(yù)處理問題討論

    本文我們來討論特征預(yù)處理的相關(guān)問題。主要包括特征的歸一化和標(biāo)準(zhǔn)化,異常特征樣本清洗與樣本數(shù)據(jù)不平衡問題的
    的頭像 發(fā)表于 03-15 17:14 ?908次閱讀

    allegro常用功能介紹

    allegro常用功能介紹
    發(fā)表于 01-10 11:53 ?0次下載

    特征工程數(shù)據(jù)預(yù)處理全解析:基礎(chǔ)技術(shù)和代碼示例

    在機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的世界里,數(shù)據(jù)的質(zhì)量是建模成功與否的關(guān)鍵所在。這就是特征工程數(shù)據(jù)預(yù)處理發(fā)揮
    的頭像 發(fā)表于 06-26 08:28 ?487次閱讀
    <b class='flag-5'>特征</b><b class='flag-5'>工程</b>與<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>全解析:基礎(chǔ)技術(shù)和代碼示例

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

    在機(jī)器學(xué)習(xí)的整個(gè)流程中,數(shù)據(jù)預(yù)處理特征工程是兩個(gè)至關(guān)重要的步驟。它們直接決定了模型的輸入質(zhì)量,進(jìn)而影響模型的訓(xùn)練效果和泛化能力。本文將從數(shù)據(jù)
    的頭像 發(fā)表于 07-09 15:57 ?420次閱讀
    主站蜘蛛池模板: 久操成人| 91精品日本久久久久久牛牛| 精品卡1卡2卡三卡免费网站视频| 四虎影院观看视频在线观看| 久操视频免费| 最刺激黄a大片免费网站| 一级美女视频| 国产看色免费| 久久婷婷综合中文字幕| 免费日韩三级| 欧美啪啪精品| 农村女人的一级毛片| 久久男人网| 天天射日日干| 特黄特色大片免费视频大全| 天天操人人射| 美女被曹| 很黄很黄的网站免费的| 欧美爆操| 亚洲先锋资源| 日韩毛片视频| 免费看三级黄色片| 天天狠狠干| 日本一区二区在线不卡| 四虎国产精品影库永久免费| 国模私拍一区二区三区| 国产成人亚洲综合a∨婷婷| 99色吧| 2018天堂视频免费观看| 免费看黄色录像| 欧美3p精品三区| 婷婷丁香六月天| china3p单男精品自拍| 8050午夜一级二级全黄| 男人在线视频| 黄色网页在线播放| 色偷偷偷| 天天爽夜夜爽免费看| 亚洲 [12p]| 高h上错人1v1| 亚洲国产成人精品青青草原100|