我正在研究可用數據集的機器學習算法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.."
這可能屬於http://stats.stackexchange.com – jonrsharpe
可能的重複[如何獲得scikit學習分類器的大多數信息功能?](http://stackoverflow.com/questions/11116697/how-to -get-most-informative-features-for-scikit-learn-classifiers) –