0

我正在研究可用數據集的機器學習算法here如何發現數據集中的哪些特徵是預測性的?

有26列數據。大部分是毫無意義的。如何有效並快速確定哪些功能是有趣的 - 哪些功能告訴我這種或那種方式給定的URL是短暫的還是常綠的(哪些是數據集中的因變量)?是否有智能的,程序化的scikit學習如何做到這一點,或者它僅僅是針對相關特徵('label',第26列)對每個特徵進行圖形化並查看有什麼影響?

當然有比這更好的方法!

任何人都可以幫忙嗎? :)

編輯:我已經找到一個分類器的一些代碼 - 我怎樣才能打印出給每個功能在這裏的權重?

import numpy as np 
import matplotlib.pyplot as plt 
    from sklearn import metrics,preprocessing,cross_validation 
    from sklearn.feature_extraction.text import TfidfVectorizer 
    import sklearn.linear_model as lm 
    import pandas as p 
    loadData = lambda f: np.genfromtxt(open(f,'r'), delimiter=' ') 

    print "loading data.." 
    traindata = list(np.array(p.read_table('train.tsv'))[:,2]) 
    testdata = list(np.array(p.read_table('test.tsv'))[:,2]) 
    y = np.array(p.read_table('train.tsv'))[:,-1] 

    tfv = TfidfVectorizer(min_df=3, max_features=None, strip_accents='unicode', 
     analyzer='word',token_pattern=r'\w{1,}',ngram_range=(1, 2), use_idf=1,smooth_idf=1,sublinear_tf=1) 

    rd = lm.LogisticRegression(penalty='l2', dual=True, tol=0.0001, 
          C=1, fit_intercept=True, intercept_scaling=1.0, 
          class_weight=None, random_state=None) 

    X_all = traindata + testdata 
    lentrain = len(traindata) 

    print "fitting pipeline" 
    tfv.fit(X_all) 
    print "transforming data" 
    X_all = tfv.transform(X_all) 

    X = X_all[:lentrain] 
    X_test = X_all[lentrain:] 

    print "20 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rd, X, y, cv=20, scoring='roc_auc')) 

    print "training on full data" 
    rd.fit(X,y) 
    pred = rd.predict_proba(X_test)[:,1] 
    testfile = p.read_csv('test.tsv', sep="\t", na_values=['?'], index_col=1) 
    pred_df = p.DataFrame(pred, index=testfile.index, columns=['label']) 
    pred_df.to_csv('benchmark.csv') 
    print "submission file created.." 
+0

這可能屬於http://stats.stackexchange.com – jonrsharpe

+0

可能的重複[如何獲得scikit學習分類器的大多數信息功能?](http://stackoverflow.com/questions/11116697/how-to -get-most-informative-features-for-scikit-learn-classifiers) –

回答

6

許多裝scikit學習估計有一個屬性feature_importances_(除線性模型,稱之爲coef_)含有某種特徵的權重。 (*)

這些屬性包含NumPy數組,其形狀爲(n_features,),用於二元分類,迴歸和非線性模型,或(n_features, n_classes)多類線性模型。

有關如何使用這些屬性,請參閱document classification example。 (*)所有關於過度擬合的常見警告都適用:在不好的模型中,錯誤的特徵可能會得到更高的權重。

+0

非常感謝您的回覆。我在回覆中添加了Logistic迴歸的一些代碼 - 我說我可以打印rd.feature_importances_,並且它會給我一個每個功能對分類器有多大影響的列表,或者我是否會誤解它們。道歉,我仍然是機器學習和Python的初學者:) –

+0

@SimonKiely邏輯迴歸是一個線性模型,所以你需要'coef_'。請閱讀我鏈接到的示例腳本。 –

相關問題