www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > AI科技大本營(yíng)
[導(dǎo)讀]作者|俊欣來(lái)源|關(guān)于數(shù)據(jù)分析與可視化今天小編來(lái)說(shuō)說(shuō)如何通過(guò)pandas以及sklearn這兩個(gè)模塊來(lái)對(duì)數(shù)據(jù)集進(jìn)行特征篩選,畢竟有時(shí)候我們拿到手的數(shù)據(jù)集是非常龐大的,有著非常多的特征,減少這些特征的數(shù)量會(huì)帶來(lái)許多的好處,例如提高預(yù)測(cè)的精準(zhǔn)度降低過(guò)擬合的風(fēng)險(xiǎn)加快模型的訓(xùn)練速度增加模型...


作者 | 俊欣來(lái)源 | 關(guān)于數(shù)據(jù)分析與可視化今天小編來(lái)說(shuō)說(shuō)如何通過(guò)pandas以及sklearn這兩個(gè)模塊來(lái)對(duì)數(shù)據(jù)集進(jìn)行特征篩選,畢竟有時(shí)候我們拿到手的數(shù)據(jù)集是非常龐大的,有著非常多的特征,減少這些特征的數(shù)量會(huì)帶來(lái)許多的好處,例如

  • 提高預(yù)測(cè)的精準(zhǔn)度
  • 降低過(guò)擬合的風(fēng)險(xiǎn)
  • 加快模型的訓(xùn)練速度
  • 增加模型的可解釋性
事實(shí)上,很多時(shí)候也并非是特征數(shù)量越多訓(xùn)練出來(lái)的模型越好,當(dāng)添加的特征多到一定程度的時(shí)候,模型的性能就會(huì)下降,從下圖中我們可以看出,

因此我們需要找到哪些特征是最佳的使用特征,當(dāng)然我們這里分連續(xù)型的變量以及離散型的變量來(lái)討論,畢竟不同數(shù)據(jù)類(lèi)型的變量處理的方式不同,我們先來(lái)看一下對(duì)于連續(xù)型的變量而言,特征選擇到底是怎么來(lái)進(jìn)行的。

計(jì)算一下各個(gè)變量之間的相關(guān)性

我們先導(dǎo)入所需要用到的模塊以及導(dǎo)入數(shù)據(jù)集,并且用pandas模塊來(lái)讀取from?sklearn.datasets?import?load_boston
import?pandas?as?pd
import?numpy?as?np
import?matplotlib
import?matplotlib.pyplot?as?plt
import?seaborn?as?sns
import?statsmodels.api?as?sm
%matplotlib?inline
from?sklearn.model_selection?import?train_test_split
from?sklearn.linear_model?import?LinearRegression
from?sklearn.feature_selection?import?RFE
from?sklearn.linear_model?import?RidgeCV,?LassoCV,?Ridge,?Lasso
這次用到的數(shù)據(jù)集是機(jī)器學(xué)習(xí)中尤其是初學(xué)者經(jīng)常碰到的,波士頓房?jī)r(jià)的數(shù)據(jù)集,其中我們要預(yù)測(cè)的這個(gè)對(duì)象是MEDV這一列x?=?load_boston()
df?=?pd.DataFrame(x.data,?columns?=?x.feature_names)
df["MEDV"]?=?x.target
X?=?df.drop("MEDV",1)???#將模型當(dāng)中要用到的特征變量保留下來(lái)
y?=?df["MEDV"]??????????#最后要預(yù)測(cè)的對(duì)象
df.head()
output??????CRIM????ZN??INDUS??CHAS????NOX??...????TAX??PTRATIO???????B??LSTAT??MEDV
0??0.00632??18.0???2.31???0.0??0.538??...??296.0?????15.3??396.90???4.98??24.0
1??0.02731???0.0???7.07???0.0??0.469??...??242.0?????17.8??396.90???9.14??21.6
2??0.02729???0.0???7.07???0.0??0.469??...??242.0?????17.8??392.83???4.03??34.7
3??0.03237???0.0???2.18???0.0??0.458??...??222.0?????18.7??394.63???2.94??33.4
4??0.06905???0.0???2.18???0.0??0.458??...??222.0?????18.7??396.90???5.33??36.2
我們可以來(lái)看一下特征變量的數(shù)據(jù)類(lèi)型df.dtypes
outputCRIM???????float64
ZN?????????float64
INDUS??????float64
CHAS???????float64
NOX????????float64
RM?????????float64
AGE????????float64
DIS????????float64
RAD????????float64
TAX????????float64
PTRATIO????float64
B??????????float64
LSTAT??????float64
MEDV???????float64
dtype:?object
我們看到都是清一色的連續(xù)型的變量,我們來(lái)計(jì)算一下自變量和因變量之間的相關(guān)性,通過(guò)seaborn模塊當(dāng)中的熱力圖來(lái)展示,代碼如下plt.figure(figsize=(10,8))
cor?=?df.corr()
sns.heatmap(cor,?annot=True,?cmap=plt.cm.Reds)
plt.show()

相關(guān)系數(shù)的值一般是在-1到1這個(gè)區(qū)間內(nèi)波動(dòng)的
  • 相關(guān)系數(shù)要是接近于0意味著變量之間的相關(guān)性并不強(qiáng)
  • 接近于-1意味著變量之間呈負(fù)相關(guān)的關(guān)系
  • 接近于1意味著變量之間呈正相關(guān)的關(guān)系
我們來(lái)看一下對(duì)于因變量而言,相關(guān)性比較高的自變量有哪些#?篩選出于因變量之間的相關(guān)性
cor_target?=?abs(cor["MEDV"])
#?挑選于大于0.5的相關(guān)性系數(shù)
relevant_features?=?cor_target[cor_target>0.5]
relevant_features
outputRM?????????0.695360
PTRATIO????0.507787
LSTAT??????0.737663
MEDV???????1.000000
Name:?MEDV,?dtype:?float64
篩選出3個(gè)相關(guān)性比較大的自變量來(lái),然后我們來(lái)看一下自變量之間的相關(guān)性如何,要是自變量之間的相關(guān)性非常強(qiáng)的話(huà),我們也只需要保留其中的一個(gè)就行,print(df[["LSTAT","PTRATIO"]].corr())
print("="?*?50)
print(df[["RM","LSTAT"]].corr())
print("="?*?50)
print(df[["PTRATIO","RM"]].corr())
output????????????LSTAT???PTRATIO
LSTAT????1.000000??0.374044
PTRATIO??0.374044??1.000000
==================================================
?????????????RM?????LSTAT
RM?????1.000000?-0.613808
LSTAT?-0.613808??1.000000
==================================================
??????????PTRATIO????????RM
PTRATIO??1.000000?-0.355501
RM??????-0.355501??1.000000
從上面的結(jié)果中我們可以看到,RM變量和LSTAT這個(gè)變量是相關(guān)性是比較高的,我們只需要保留其中一個(gè)就可以了,我們選擇保留LSTAT這個(gè)變量,因?yàn)樗c因變量之間的相關(guān)性更加高一些

遞歸消除法

我們可以嘗試這么一種策略,我們選擇一個(gè)基準(zhǔn)模型,起初將所有的特征變量傳進(jìn)去,我們?cè)俅_認(rèn)模型性能的同時(shí)通過(guò)對(duì)特征變量的重要性進(jìn)行排序,去掉不重要的特征變量,然后不斷地重復(fù)上面的過(guò)程直到達(dá)到所需數(shù)量的要選擇的特征變量。LR=?LinearRegression()
#?挑選出7個(gè)相關(guān)的變量
rfe_model?=?RFE(model,?7)
#?交給模型去進(jìn)行擬合
X_rfe?=?rfe_model.fit_transform(X,y)??
LR.fit(X_rfe,y)
#?輸出各個(gè)變量是否是相關(guān)的,并且對(duì)其進(jìn)行排序
print(rfe_model.support_)
print(rfe_model.ranking_)
output[False?False?False??True??True??True?False??True??True?False??True?False
??True]
[2?4?3?1?1?1?7?1?1?5?1?6?1]
第一行的輸出包含TrueFalse,其中True代表的是相關(guān)的變量對(duì)應(yīng)下一行的輸出中的1,而False包含的是不相關(guān)的變量,然后我們需要所需要多少個(gè)特征變量,才能夠使得模型的性能達(dá)到最優(yōu)#將13個(gè)特征變量都依次遍歷一遍
feature_num_list=np.arange(1,13)
#?定義一個(gè)準(zhǔn)確率
high_score=0
#?最優(yōu)需要多少個(gè)特征變量
num_of_features=0???????????
score_list?=[]
for?n?in?range(len(feature_num_list)):
????X_train,?X_test,?y_train,?y_test?=?train_test_split(X,y,?test_size?=?0.3,?random_state?=?0)
????model?=?LinearRegression()
????rfe_model?=?RFE(model,feature_num_list[n])
????X_train_rfe_model?=?rfe_model.fit_transform(X_train,y_train)
????X_test_rfe_model?=?rfe_model.transform(X_test)
????model.fit(X_train_rfe_model,y_train)
????score?=?model.score(X_test_rfe_model,y_test)
????score_list.append(score)
????if(score>high_score):
????????high_score?=?score
????????num_of_features?=?feature_num_list[n]
print("最優(yōu)的變量是:?%d個(gè)"?%num_of_features)
print("%d個(gè)變量的準(zhǔn)確率為:?%f"?%?(num_of_features,?high_score))
output最優(yōu)的變量是:?10個(gè)
10個(gè)變量的準(zhǔn)確率為:?0.663581
從上面的結(jié)果可以看出10個(gè)變量對(duì)于整個(gè)模型來(lái)說(shuō)是最優(yōu)的,然后我們來(lái)看一下到底是哪10個(gè)特征變量cols?=?list(X.columns)
model?=?LinearRegression()
#?初始化RFE模型,篩選出10個(gè)變量
rfe_model?=?RFE(model,?10)?????????????
X_rfe?=?rfe.fit_transform(X,y)??
#?擬合訓(xùn)練模型
model.fit(X_rfe,y)??????????????
df?=?pd.Series(rfe.support_,index?=?cols)
selected_features?=?df[df==True].index
print(selected_features)
outputIndex(['CRIM',?'ZN',?'INDUS',?'CHAS',?'NOX',?'RM',?'DIS',?'RAD',?'PTRATIO',
???????'LSTAT'],
??????dtype='object')

正則化

例如對(duì)于Lasso的正則化而言,對(duì)于不相關(guān)的特征而言,該算法會(huì)讓其相關(guān)系數(shù)變?yōu)?,因此不相關(guān)的特征變量很快就會(huì)被排除掉了,只剩下相關(guān)的特征變量lasso?=?LassoCV()
lasso.fit(X,?y)
coef?=?pd.Series(lasso.coef_,?index?=?X.columns)
然后我們看一下哪些變量的相關(guān)系數(shù)是0print("Lasso算法挑選了?"? ?str(sum(coef?!=?0))? ?"?個(gè)變量,然后去除掉了"? ??str(sum(coef?==?0))? ?"個(gè)變量")
outputLasso算法挑選了10個(gè)變量,然后去除掉了3個(gè)變量
我們來(lái)對(duì)計(jì)算出來(lái)的相關(guān)性系數(shù)排個(gè)序并且做一個(gè)可視化imp_coef?=?coef.sort_values()
matplotlib.rcParams['figure.figsize']?=?(8,?6)
imp_coef.plot(kind?=?"barh")
plt.title("Lasso?Model?Feature?Importance")
output可以看到當(dāng)中有3個(gè)特征,‘NOX’、'CHAS'、'INDUS'的相關(guān)性為0

根據(jù)缺失值來(lái)進(jìn)行判斷

下面我們來(lái)看一下如何針對(duì)離散型的特征變量來(lái)做處理,首先我們可以根據(jù)缺失值的比重來(lái)進(jìn)行判斷,要是對(duì)于一個(gè)離散型的特征變量而言,絕大部分的值都是缺失的,那這個(gè)特征變量也就沒(méi)有存在的必要了,我們可以針對(duì)這個(gè)思路在進(jìn)行判斷。首先導(dǎo)入所需要用到的數(shù)據(jù)集train?=?pd.read_csv("credit_example.csv")
train_labels?=?train['TARGET']
train?=?train.drop(columns?=?['TARGET'])
我們可以先來(lái)計(jì)算一下數(shù)據(jù)集當(dāng)中每個(gè)特征變量缺失值的比重missing_series?=?train.isnull().sum()?/?train.shape[0]
df?=?pd.DataFrame(missing_series).rename(columns?=?{'index':?'特征變量',?0:?'缺失值比重'})
df.sort_values("缺失值比重",?ascending?=?False).head()
output???????????????????????????缺失值比重
COMMONAREA_AVG????????????0.6953
COMMONAREA_MODE???????????0.6953
COMMONAREA_MEDI???????????0.6953
NONLIVINGAPARTMENTS_AVG???0.6945
NONLIVINGAPARTMENTS_MODE??0.6945
我們可以看到缺失值最高的比重將近有70%,我們也可以用可視化的根據(jù)來(lái)繪制一下缺失值比重的分布圖plt.rcParams['font.sans-serif']=['SimHei']?#用來(lái)正常顯示中文標(biāo)簽
plt.figure(figsize?=?(7,?5))
plt.hist(df['缺失值比重'],?bins?=?np.linspace(0,?1,?11),?edgecolor?=?'k',?color?=?'blue',?linewidth?=?2)
plt.xticks(np.linspace(0,?1,?11));
plt.xlabel('缺失值的比重',?size?=?14);?
plt.ylabel('特征變量的數(shù)量',?size?=?14);?
plt.title("缺失值分布圖",?size?=?14);
output我們可以看到有一部分特征變量,它們?nèi)笔е档谋戎卦?0%以上,有一些還在60%以上,我們可以去除掉當(dāng)中的部分特征變量

計(jì)算特征的重要性

在基于樹(shù)的眾多模型當(dāng)中,會(huì)去計(jì)算每個(gè)特征變量的重要性,也就是feature_importances_屬性,得出各個(gè)特征變量的重要性程度之后再進(jìn)行特征的篩選from?sklearn.ensemble?import?RandomForestClassifier
clf?=?RandomForestClassifier()
#?模型擬合數(shù)據(jù)
clf.fit(X,Y)
feat_importances?=?pd.Series(clf.feature_importances_,?index=X.columns)
#?篩選出特征的重要性程度最大的10個(gè)特征
feat_importances.nlargest(10)
我們同時(shí)也可以對(duì)特征的重要性程度進(jìn)行可視化,feat_importances.nlargest(10).plot(kind='barh',?figsize?=?(8,?6))
output除了隨機(jī)森林之外,基于樹(shù)的算法模型還有很多,如LightGBM、XGBoost等等,大家也都可以通過(guò)對(duì)特征重要性的計(jì)算來(lái)進(jìn)行特征的篩選

Select_K_Best算法

Sklearn模塊當(dāng)中還提供了SelectKBest的API,針對(duì)回歸問(wèn)題或者是分類(lèi)問(wèn)題,我們挑選合適的模型評(píng)估指標(biāo),然后設(shè)定K值也就是既定的特征變量的數(shù)量,進(jìn)行特征的篩選。假定我們要處理的是分類(lèi)問(wèn)題的特征篩選,我們用到的是iris數(shù)據(jù)集iris_data?=?load_iris()
x?=?iris_data.data
y?=?iris_data.target
?
print("數(shù)據(jù)集的行與列的數(shù)量:?",?x.shape)?
output數(shù)據(jù)集的行與列的數(shù)量:??(150,?4)
對(duì)于分類(lèi)問(wèn)題,我們采用的評(píng)估指標(biāo)是卡方,假設(shè)我們要挑選出3個(gè)對(duì)于模型最佳性能而言的特征變量,因此我們將K設(shè)置成3select?=?SelectKBest(score_func=chi2,?k=3)
#?擬合數(shù)據(jù)
z?=?select.fit_transform(x,y)
filter_1?=?select.get_support()
features?=?array(iris.feature_names)
print("所有的特征:?",?features)
print("篩選出來(lái)最優(yōu)的特征是:?",?features[filter_1])
output所有的特征:??['sepal?length?(cm)'?'sepal?width?(cm)'?'petal?length?(cm)'
?'petal?width?(cm)']
篩選出來(lái)最優(yōu)的特征是:??['sepal?length?(cm)'?'petal?length?(cm)'?'petal?width?(cm)']
那么對(duì)于回歸的問(wèn)題而言,我們可以選擇上面波士頓房?jī)r(jià)的例子,同理我們想要篩選出對(duì)于模型最佳的性能而言的7個(gè)特征變量,同時(shí)對(duì)于回歸問(wèn)題的評(píng)估指標(biāo)用的是f_regressionboston_data?=?load_boston()
x?=?boston_data.data
y?=?boston_data.target
然后我們將擬合數(shù)據(jù),并且進(jìn)行特征變量的篩選select_regression?=?SelectKBest(score_func=f_regression,?k=7)
z?=?select_regression.fit_transform(x,?y)

filter_2?=?select_regression.get_support()
features_regression?=?array(boston_data.feature_names)
?
print("所有的特征變量有:")
print(features_regression)
?
print("篩選出來(lái)的7個(gè)特征變量則是:")
print(features_regression[filter_2])
output
所有的特征變量有:['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO' 'B' 'LSTAT']篩選出來(lái)的7個(gè)特征變量則是:['CRIM' 'INDUS' 'NOX' 'RM' 'TAX' 'PTRATIO' 'LSTAT']

直播TeaTalk 線(xiàn)上直播倒計(jì)時(shí)

資訊
人工智能監(jiān)考VS傳統(tǒng)方式監(jiān)考

資訊
Meta研發(fā)觸覺(jué)手套助力元宇宙

資訊自動(dòng)駕駛圖書(shū)館,熱愛(ài)閱讀的er


分享

點(diǎn)收藏

點(diǎn)點(diǎn)贊

點(diǎn)在看

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

北京2025年9月5日 /美通社/ -- 9月4日,在北京市人民政府新聞辦公室舉行的"一把手發(fā)布?京華巡禮"系列主題新聞發(fā)布會(huì)上,北京經(jīng)開(kāi)區(qū)對(duì)外發(fā)布,北京經(jīng)濟(jì)技術(shù)開(kāi)發(fā)區(qū)(簡(jiǎn)稱(chēng)"北京經(jīng)開(kāi)區(qū)&q...

關(guān)鍵字: 人工智能 模型 開(kāi)源 AI

杭州2025年9月2日 /美通社/ -- 9月2日,央視《朝聞天下》欄目發(fā)布報(bào)道,重點(diǎn)關(guān)注中控技術(shù)在"人工智能+工業(yè)"領(lǐng)域的最新成果——時(shí)間序列大模型TPT 2(Time-series Pre-tra...

關(guān)鍵字: 人工智能 模型 PLAYER ASIA

北京2025年9月2日 /美通社/ -- 近日,深圳云天暢想信息科技有限公司(下稱(chēng)"云天暢想")與浪潮信息正式簽署元腦生態(tài)戰(zhàn)略合作協(xié)議。雙方將聚焦教育行業(yè)AIGC應(yīng)用落地,在A(yíng)IGC實(shí)訓(xùn)平臺(tái)、智能體平...

關(guān)鍵字: AI 模型 開(kāi)發(fā)平臺(tái) 智能體

北京2025年8月28日 /美通社/ -- 8月28日,北京亦莊創(chuàng)新發(fā)布消息,北京經(jīng)濟(jì)技術(shù)開(kāi)發(fā)區(qū)(簡(jiǎn)稱(chēng)"北京經(jīng)開(kāi)區(qū)",又稱(chēng)"北京亦莊")創(chuàng)新推出"一張清單、一鏈延伸、一套...

關(guān)鍵字: 接線(xiàn) 數(shù)字化 智能化 模型

深圳2025年8月28日 /美通社/ -- 8月27日,全球領(lǐng)先的無(wú)線(xiàn)通信與AI解決方案提供商廣和通發(fā)布新一代具身智能開(kāi)發(fā)平臺(tái) Fibot。Fibot已成功應(yīng)用于Physic...

關(guān)鍵字: PHYSICAL 開(kāi)發(fā)平臺(tái) 模型 INTELLIGENCE

首個(gè)采用高分辨率太陽(yáng)觀(guān)測(cè)數(shù)據(jù)訓(xùn)練的太陽(yáng)物理學(xué)人工智能 (AI) 基礎(chǔ)模型,旨在深入探索太陽(yáng)動(dòng)態(tài)表面,對(duì)可能干擾地球和太空技術(shù)的太陽(yáng)天氣做出有效規(guī)劃。 該模型已發(fā)布在 Hugging Face 開(kāi)源平臺(tái),旨在加快...

關(guān)鍵字: IBM NASA 開(kāi)源 模型

上海2025年8月26日 /美通社/ -- 在全球數(shù)字經(jīng)濟(jì)加速演進(jìn)的時(shí)代浪潮中,海量數(shù)據(jù)資源正成為企業(yè)發(fā)展的雙刃劍。超66%的企業(yè)面臨"數(shù)據(jù)沉睡"危機(jī)——分散于供應(yīng)鏈、財(cái)務(wù)、客戶(hù)運(yùn)營(yíng)等數(shù)十個(gè)系統(tǒng)的業(yè)務(wù)...

關(guān)鍵字: AI 模型 軟件 數(shù)據(jù)分析

北京2025年8月25日 /美通社/ --?據(jù)潮起網(wǎng)報(bào)道。 圖1 近日,中國(guó)領(lǐng)先的AI科技公司楓清科技(Fabarta)推出的"Fabarta個(gè)人專(zhuān)屬智能體"已結(jié)束內(nèi)測(cè)并向公眾用戶(hù)開(kāi)放免費(fèi)下載試用。 Fabarta...

關(guān)鍵字: 智能體 AI FAB 模型

北京2025年8月22日 /美通社/ -- 近日,杭州數(shù)宇智匯科技發(fā)展有限責(zé)任公司(以下簡(jiǎn)稱(chēng) "數(shù)宇智匯")與浪潮信息簽署元腦生態(tài)戰(zhàn)略合作協(xié)議。雙方將圍繞大模型知識(shí)平臺(tái)、智能問(wèn)答機(jī)器人等核心領(lǐng)域展開(kāi)深...

關(guān)鍵字: 機(jī)器人 模型 智能化 多模

北京2025年8月20日 /美通社/ -- 2025年8月8日至12日,以"讓機(jī)器人更智慧 讓具身體更智能"為主題的2025世界機(jī)器人大會(huì)在北京隆重舉行。本屆大會(huì)匯聚了220余家國(guó)內(nèi)外領(lǐng)先機(jī)...

關(guān)鍵字: 機(jī)器人 模型 AI BSP
關(guān)閉