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-learn 분류자를위한 가장 유익한 기능을 얻는 방법?] (http://stackoverflow.com/questions/11116697/how-to)의 가능한 복제본에 속합니다. -get-most-informative-features-for-scikit-learn-classifiers) –

답변

6

많은 장착 scikit 배우기 추정량은 기능 무게의 어떤 종류를 포함합니다 (coef_를 호출 선형 모델 제외) 속성 feature_importances_ 있습니다. 가중치가 높다는 것은 일반적으로 기능이 최종 예측에 더 많은 기여를한다는 것을 의미합니다. (*)

이 속성은 이진 분류, 회귀 및 비선형 모델에 대해 (n_features,) 모양의 NumPy 배열을 포함합니다. , 또는 멀티 플렉스 선형 모델의 경우 (n_features, n_classes).

이러한 속성을 사용하는 방법은 document classification example을 참조하십시오.

(*) overfitting에 대한 모든 일반적인주의 사항이 적용됩니다. 잘못된 모델에서는 잘못된 기능이 더 높은 가중치를 얻을 수 있습니다.

+0

응답 해 주셔서 대단히 감사합니다. Logistic regression에 대한 코드를 제 응답에 추가했습니다. rd.feature_importances_를 인쇄하면 각 기능이 분류기에 얼마나 많은 영향을 주 었는지 또는 잘못 해석했는지를 알 수 있습니다. 죄송합니다. 저는 Machine Learning과 Python 초보자입니다. –

+0

@SimonKiely Logistic 회귀는 선형 모델이므로 coef_가 필요합니다. 내가 링크 된 예제 스크립트를 읽으십시오. –

관련 문제