python分类时特征选择_关于python:是否有可用于分类数据输入的特征选择算法?...
我正在訓(xùn)練一個(gè)具有10個(gè)左右分類輸入的神經(jīng)網(wǎng)絡(luò)。 在對(duì)這些分類輸入進(jìn)行一次熱編碼之后,我最終將大約500個(gè)輸入饋入網(wǎng)絡(luò)。
我希望能夠確定我每個(gè)分類輸入的重要性。 Scikit-learn具有許多功能重要性算法,但是這些算法中的任何一種都可以應(yīng)用于分類數(shù)據(jù)輸入嗎? 所有示例均使用數(shù)字輸入。
我可以將這些方法應(yīng)用于"一鍵編碼"輸入,但是在應(yīng)用于二進(jìn)制輸入后如何提取含義? 如何判斷分類輸入中的特征重要性?
Ive已成功使用支持discrete_features=True的mutual_info_score。
看看scikit-learn.org/stable/modules/
謹(jǐn)慎使用單點(diǎn)編碼,因?yàn)槟鷮⑻卣骺臻g的維數(shù)增加了50倍。您還可以考慮使用隨機(jī)森林而不是神經(jīng)網(wǎng)絡(luò),因?yàn)殡S機(jī)森林方法具有內(nèi)置的特征重要性表征。
感謝您的意見(jiàn)。 @IgorRaush,我可以像這樣使用common_info_classif函數(shù):l_importance = mutual_info_classif(X, y, discrete_features=True)但是可以確認(rèn)我在X數(shù)組中編碼離散特征的方式。顯然,它必須是一個(gè)numpy數(shù)組,因此大多數(shù)輸入都必須進(jìn)行編碼。我可以使用離散索引嗎?如果我對(duì)輸入進(jìn)行了二值化,那么將很難從功能輸出中提取含義,因?yàn)楣δ苁侨绱朔蛛x。如果這些是我的輸入:X = [[A, X, alpha], [B, X, beta], [B, Y, gamma]]我將如何編碼?謝謝 -
@VivekKumar感謝您的回復(fù)。我知道如何編碼分類輸入。您是否暗示最佳實(shí)踐是在單熱編碼輸入上運(yùn)行標(biāo)準(zhǔn)特征選擇算法?如果是這種情況,您將如何包裝輸出以確定每個(gè)功能的重要性,而不是確定每個(gè)熱編碼列的重要性?謝謝
@ A555h5似乎實(shí)際上并不需要是一個(gè)Numpy數(shù)組,您提供的列表也可以作為輸入正常工作(盡管您可以將Numpy數(shù)組與dtype=np.str一起使用,該數(shù)組包含字符串并且也可以使用)。
通常,對(duì)于這種情況,您將使用索引編碼,其中分類功能的每個(gè)級(jí)別都映射到整數(shù)0、1等。請(qǐng)查看Scikit-learn中的LabelEncoder或Pandas中的分類系列。
在回答您對(duì)Vivek的問(wèn)題時(shí),這取決于您要完成的工作。您可以使用重要性度量來(lái)修剪整個(gè)功能("功能選擇"),也可以一鍵編碼它們并僅修剪某些級(jí)別("值選擇")。我見(jiàn)過(guò)兩種使用方法。
感謝您的回答@IgorRaush-一個(gè)快速的問(wèn)題。如果我在同一數(shù)據(jù)集中混合了分類特征和數(shù)字特征,那么該如何編碼?我想一起考慮它們,因?yàn)槲倚枰私馑鼈冎g的相互影響。我應(yīng)該將數(shù)字視為分類數(shù)字(因?yàn)槭シ?#xff0c;這似乎是錯(cuò)誤的),還是對(duì)分類數(shù)字使用索引編碼方法并與數(shù)字結(jié)合?再次感謝
在某些情況下,在進(jìn)入scikit-learn之前可能值得探索您的數(shù)據(jù)集。我通常使用Wekas GUI玩一些。在Weka中,您可以使用多種算法來(lái)可視化和評(píng)估特征。如果數(shù)據(jù)集太大,則將其稍微修剪一下。在此處獲取Weka:cs.waikato.ac.nz/ml/weka有關(guān)此處的屬性選擇的更多信息:wiki.pentaho.com/display/DATAMINING/Attribute+Selection
由于編碼特征之間的關(guān)系,在一種熱編碼上使用特征選擇算法可能會(huì)導(dǎo)致錯(cuò)過(guò)。例如,如果您將n個(gè)值的特征編碼為n個(gè)特征,并且已選擇m個(gè)中的n-1個(gè),則不需要最后一個(gè)特征。
由于您的功能數(shù)量很少(?10),因此功能選擇對(duì)您的幫助不大,因?yàn)槟赡苤荒軠p少其中的幾個(gè)而不會(huì)丟失太多信息。
您寫道,一種熱編碼將10個(gè)要素轉(zhuǎn)換為500個(gè),這意味著每個(gè)要素都有大約50個(gè)值。在這種情況下,您可能會(huì)對(duì)離散化算法更感興趣,可以對(duì)值本身進(jìn)行操作。如果值隱含順序,則可以對(duì)連續(xù)特征使用算法。另一種選擇是簡(jiǎn)單地忽略稀有值或與概念沒(méi)有強(qiáng)相關(guān)性的值。
如果您使用特征選擇,則大多數(shù)算法將對(duì)分類數(shù)據(jù)起作用,但您應(yīng)提防極端情況。例如,@ Igor Raush建議的相互信息是一種很好的措施。但是,具有許多值的特征往往比具有較少值的特征具有更高的熵。反過(guò)來(lái),這可能會(huì)導(dǎo)致更高的相互信息,并會(huì)偏向許多價(jià)值特征。一種解決此問(wèn)題的方法是通過(guò)將互信息除以特征熵來(lái)進(jìn)行歸一化。
可能會(huì)幫助您的另一套功能選擇算法是包裝器。他們實(shí)際上將學(xué)習(xí)委托給分類算法,因此,只要分類算法可以應(yīng)對(duì),它們就不會(huì)影響表示。
總結(jié)
以上是生活随笔為你收集整理的python分类时特征选择_关于python:是否有可用于分类数据输入的特征选择算法?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dvt高危患者的护理措施_dvt的预防及
- 下一篇: android 换到iphone,从安卓