Python 如何发现数据集中的哪些特征具有预测性?
我正在为可用的数据集开发一种机器学习算法 共有26列数据。大部分都是毫无意义的。我如何有效快速地确定哪些功能是有趣的?哪些功能以某种方式告诉我给定的URL是短暂的还是永久的,这是数据集中的因变量?是否有智能的、可编程的scikit学习实现这一点的方法,或者只是将每个功能与第26列的从属功能“标签”进行对比,然后看看有什么效果 当然还有比这更好的办法 有人能帮忙吗 编辑:我找到的分类器的一些代码-如何在这里打印出每个特征的权重Python 如何发现数据集中的哪些特征具有预测性?,python,machine-learning,artificial-intelligence,scikit-learn,feature-detection,Python,Machine Learning,Artificial Intelligence,Scikit Learn,Feature Detection,我正在为可用的数据集开发一种机器学习算法 共有26列数据。大部分都是毫无意义的。我如何有效快速地确定哪些功能是有趣的?哪些功能以某种方式告诉我给定的URL是短暂的还是永久的,这是数据集中的因变量?是否有智能的、可编程的scikit学习实现这一点的方法,或者只是将每个功能与第26列的从属功能“标签”进行对比,然后看看有什么效果 当然还有比这更好的办法 有人能帮忙吗 编辑:我找到的分类器的一些代码-如何在这里打印出每个特征的权重 import numpy as np import matplotli
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.."
许多拟合的scikit学习估计器都有一个属性特征重要性,但线性模型除外,线性模型称之为包含某种特征权重的系数。权重越高通常意味着特征对最终预测的贡献越大,这可以解释为这些特征的预测性更强* 这些属性包含NumPy数组,对于二元分类、回归和非线性模型,其形状为n_特征,对于多类线性模型,其形状为n_特征,n_类 有关如何使用这些属性的信息,请参见
*所有关于过度装配的常见警告都适用:在糟糕的车型中,错误的功能可能会获得更高的权重。这可能属于“非常感谢您的回复”的可能副本。我在我的回答中添加了一些逻辑回归的代码-我说的对吗,我可以只打印rd.feature_importances,它会给我一个列表,列出每个特征对分类器的影响程度,或者我是否误解了。抱歉,我仍然是机器学习和Python的初学者:@SimonKiely Logistic回归是一个线性模型,所以需要coef_。请阅读我链接到的示例脚本。