日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据预处理和特征工程

發(fā)布時(shí)間:2023/11/29 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据预处理和特征工程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

1.數(shù)據(jù)采集

2.數(shù)據(jù)格式化(存儲(chǔ)格式等)

3.數(shù)據(jù)清洗:去掉臟數(shù)據(jù)

簡(jiǎn)單直觀可以看出的不可能數(shù)據(jù)

組合或統(tǒng)計(jì)屬性判定

缺失值處理

1.刪除元祖:刪除這一條記錄或者一列特征,適合記錄或者特征占總樣本比例很小,或者缺失值非常多。但是會(huì)造成數(shù)據(jù)少很多,有可能造成性能下降

2.數(shù)據(jù)補(bǔ)齊:這類(lèi)方法是用一定的值去填充空值,通常基于統(tǒng)計(jì)學(xué)原理,根據(jù)初始數(shù)據(jù)集中其余對(duì)象取值的分布情況來(lái)對(duì)一個(gè)缺失值進(jìn)行填充

3.不處理:不處理缺失值,直接在包含空值的數(shù)據(jù)上進(jìn)行數(shù)據(jù)挖掘的方法包括貝葉斯網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)等。

具體請(qǐng)看:https://blog.csdn.net/lujiandong1/article/details/52654703

?

4.數(shù)據(jù)采樣

很多情況下,正負(fù)樣本不均衡

1.當(dāng)正負(fù)樣本量很大時(shí),進(jìn)行下采樣,隨機(jī)采樣和分層抽樣

2.當(dāng)樣本量不大時(shí)

采集更多樣本

過(guò)采樣

修改損失函數(shù)

二、特征工程

1.數(shù)值類(lèi)型

歸一化、標(biāo)準(zhǔn)化、正則化:https://www.cnblogs.com/chaosimple/p/4153167.html

統(tǒng)計(jì)特征:pandas的mean方法和describe()方法

離散化:將連續(xù)數(shù)值切割成幾塊,pandas庫(kù)里有cut()方法,可以指定對(duì)數(shù)組arr切成n塊,返回的是每個(gè)樣本屬于的那一個(gè)區(qū)間。cut(arr,n)或者直接指定區(qū)間cut(arr,[-5,-1,2,5,10]),返回的result,統(tǒng)計(jì)result,pd.value_counts(result).reindex(result.levels)

2.類(lèi)別類(lèi)型

2.1.one-hot編碼

pandas庫(kù)的get_dummies(series,prefix='列名前綴')

2.2 Hash處理

?

3.時(shí)間類(lèi)型

既可以看做連續(xù)值,也可以看做離散值

1.連續(xù)值,持續(xù)時(shí)間(單頁(yè)瀏覽時(shí)長(zhǎng)),間隔時(shí)間(兩次活動(dòng)的間隔時(shí)間)

2.離散值,時(shí)間段,星期幾,月,季度

python中datetime的strptime函數(shù):datetime.datetime.strptime(x,時(shí)間格式,如:"%Y-%m-%d %H:%M:%S"),將字符串轉(zhuǎn)為時(shí)間格式類(lèi)型

時(shí)間類(lèi)型函數(shù)可以返回年月日星期:.year,.month,.day,.weekday()

4.文本型

自然語(yǔ)言處理相關(guān)

?

5.組合特征

5.1簡(jiǎn)單組合特征:拼湊

?5.2模型特征組合

GBDT+LR

6.特征選擇

原因有:冗余:特征相關(guān)性太高,浪費(fèi)計(jì)算性能

噪聲:特征對(duì)預(yù)測(cè)結(jié)果有負(fù)影響

6.1.過(guò)濾型(單個(gè))

評(píng)估單個(gè)特征和結(jié)果值之間的相關(guān)程度,排序留下top相關(guān)的部分特征

評(píng)估的準(zhǔn)則:pearson相關(guān)系數(shù),互信息,距離相關(guān)度

缺點(diǎn)是:沒(méi)有考慮到特征之間的關(guān)聯(lián)作用,可能把有用的關(guān)聯(lián)特征誤刪掉

相關(guān)系數(shù):用scipy.stats.pearsonr(x,y)來(lái)計(jì)算相關(guān)系數(shù),函數(shù)返回相關(guān)系數(shù)和風(fēng)險(xiǎn)值(越小越可信),缺點(diǎn)是只對(duì)線性有用,如果是非線性就不適用

互信息:minepy.MINE庫(kù)

距離相關(guān)系數(shù):gist庫(kù)

sklearn.feature_selection.SelectBest 可以很方便的實(shí)現(xiàn)取前k個(gè)特征,參數(shù)有兩個(gè),第一個(gè)是評(píng)估函數(shù),第二個(gè)K=n,評(píng)估函數(shù)的選擇:

回歸:

f_regression:相關(guān)系數(shù),計(jì)算每個(gè)變量與目標(biāo)變量的相關(guān)系數(shù),然后計(jì)算出F值和P值;

mutual_info_regression:互信息,互信息度量 X 和 Y 共享的信息:它度量知道這兩個(gè)變量其中一個(gè),對(duì)另一個(gè)不確定度減少的程度。

分類(lèi):

chi2:卡方檢驗(yàn);
f_classif:方差分析,計(jì)算方差分析(ANOVA)的F值 (組間均方 / 組內(nèi)均方);
mutual_info_classif:互信息,互信息方法可以捕捉任何一種統(tǒng)計(jì)依賴(lài),但是作為非參數(shù)方法,需要更多的樣本進(jìn)行準(zhǔn)確的估計(jì)。

6.2包裹型(子集合)

把特征選擇看做一個(gè)特征子集搜索問(wèn)題,篩選各種特征子集,然后用模型評(píng)估效果

遞歸特征刪除算法:給特征賦予一個(gè)外部模型產(chǎn)生的權(quán)重(例如:線性模型系數(shù)),RFE遞歸地使用越來(lái)越少的特征來(lái)進(jìn)行特征選擇。首先,在原始數(shù)據(jù)上建立模型并且給每個(gè)特征一個(gè)權(quán)重;然后,淘汰絕對(duì)權(quán)重最小的特征,遞歸地執(zhí)行這個(gè)過(guò)程直到達(dá)到希望的特征數(shù)。
RFECV使用交叉驗(yàn)證方法發(fā)現(xiàn)最優(yōu)特征數(shù)量。

from sklearn.feature_selection import RFE from sklearn.linear_model import LogisticRegression#遞歸特征消除法,返回特征選擇后的數(shù)據(jù) #參數(shù)estimator為基模型 #參數(shù)n_features_to_select為選擇的特征個(gè)數(shù) RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)

6.3嵌入型

根據(jù)模型來(lái)判斷特征的重要性

最常用的方式是用正則化的方法來(lái)做特征選擇

使用SelectFromModel方法特征選擇

SelectFromModel是一種元轉(zhuǎn)換器,可以與那些有coef_ 或者feature_importances_屬性的模型一起使用。如果coef_ 或者feature_importances_小于閾值,我們就認(rèn)為特征是不重要的。除了指定閾值以外,也可以使用啟發(fā)式的方式。有效的啟發(fā)式方法包括均值、中位數(shù)或者乘以系數(shù),比如 0.1*均值。

基于L1范數(shù)的特征選擇

使用L1范數(shù)的線性模型有一個(gè)稀疏解:許多估計(jì)系數(shù)都為0。當(dāng)降維的目的是為了使用其他分類(lèi)器,他們能和feature_selection.SelectFromModel一起使用選擇非零系數(shù)。特別地,稀疏估計(jì)量對(duì)于回歸中的 linear_model.Lasso、分類(lèi)中的linear_model.LogisticRegression和svm.LinearSVC都很有用。

from sklearn.svm import LinearSVC from sklearn.datasets import load_iris from sklearn.feature_selection import SelectFromModel iris = load_iris() X, y = iris.data, iris.target X.shape (150,4) lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y) model = SelectFromModel(lsvc, prefit=True) X_new = model.transform(X) X_new.shape (150,3

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/stAr-1/p/8920783.html

總結(jié)

以上是生活随笔為你收集整理的数据预处理和特征工程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。