标签: feature-selection

apache spark MLLib:如何为字符串功能构建标记点?

我正在尝试使用Spark的MLLib构建一个NaiveBayes分类器,它将一组文档作为输入.

我想把一些东西作为特征(即作者,显式标签,隐式关键字,类别),但看文档似乎LabeledPoint只包含双打,即它看起来像LabeledPoint[Double, List[Pair[Double,Double]].

相反,我从其余代码输出的内容就像是LabeledPoint[Double, List[Pair[String,Double]].

我可以编造自己的转换,但看起来很奇怪.我怎么用MLLib来处理这个问题?

我相信答案是在HashingTF课堂上(即散列功能),但我不明白它是如何工作的,它似乎需要某种容量值,但我的关键词和主题列表实际上是无限的(或更好,未知一开始).

java machine-learning feature-selection apache-spark apache-spark-mllib

17
推荐指数
1
解决办法
3738
查看次数

使用scikit-learn消除随机森林的递归特征

我正在尝试使用scikit-learn和随机林分类器预先形成递归特征消除,使用OOB ROC作为对递归过程中创建的每个子集进行评分的方法.

但是,当我尝试使用该RFECV方法时,我收到一个错误说法AttributeError: 'RandomForestClassifier' object has no attribute 'coef_'

随机森林本身没有系数,但它们确实按基尼评分排名.所以,我想知道如何解决这个问题.

请注意,我想使用一种方法,明确地告诉我pandas在最佳分组中选择了我的DataFrame中的哪些功能,因为我使用递归功能选择来尝试最小化我将输入到最终分类器的数据量.

这是一些示例代码:

from sklearn import datasets
import pandas as pd
from pandas import Series
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import RFECV

iris = datasets.load_iris()
x=pd.DataFrame(iris.data, columns=['var1','var2','var3', 'var4'])
y=pd.Series(iris.target, name='target')
rf = RandomForestClassifier(n_estimators=500, min_samples_leaf=5, n_jobs=-1)
rfecv = RFECV(estimator=rf, step=1, cv=10, scoring='ROC', verbose=2)
selector=rfecv.fit(x, y)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/feature_selection/rfe.py", line 336, in fit
    ranking_ = …
Run Code Online (Sandbox Code Playgroud)

python feature-selection pandas random-forest scikit-learn

16
推荐指数
4
解决办法
2万
查看次数

Scikit-Learn线性回归如何获得系数的各自特征?

我正在尝试通过评估我的回归系数输出来执行特征选择,并选择具有最高幅度系数的特征.问题是,我不知道如何获得相应的功能,因为只有系数从coef._属性返回.文件说:

线性回归问题的估计系数.如果在拟合期间传递多个目标(y 2D),则这是形状的二维数组(n_targets,n_features),而如果仅传递一个目标,则这是长度为n_features的一维数组.

我传入了我的regression.fit(A,B),其中A是一个二维数组,文档中每个特征的tfidf值.示例格式:

         "feature1"   "feature2"
"Doc1"    .44          .22
"Doc2"    .11          .6
"Doc3"    .22          .2
Run Code Online (Sandbox Code Playgroud)

B是我的数据目标值,它们只是与每个文档相关的数字1-100:

"Doc1"    50
"Doc2"    11
"Doc3"    99
Run Code Online (Sandbox Code Playgroud)

使用regression.coef_,我得到一个系数列表,但不是它们的相应特征!我怎样才能获得这些功能?我猜我需要修改B目标的结构,但我不知道如何.

linear-regression feature-selection scikit-learn

16
推荐指数
5
解决办法
4万
查看次数

找到重要的分类功能

我正在尝试使用逻辑回归模型对一些EEG数据进行分类(这似乎给出了我数据的最佳分类).我的数据来自多通道EEG设置,所以本质上我有一个63 x 116 x 50的矩阵(即通道x时间点x试验次数(有两种试验类型为50),我已将其重新设计为长矢量,每个试验一个.

我想做的是在分类后看看哪些特征在分类试验中最有用.我怎么能这样做,是否有可能测试这些功能的重要性?例如,分类主要由N特征驱动,这些特征是特征x到z.例如,我可以说时间点90-95的通道10对于分类来说是重要的或重要的.

这是可能的,还是我问错了?

任何评论或论文参考都非常感谢.

feature-selection scikit-learn

15
推荐指数
1
解决办法
2万
查看次数

使用Python的随机森林特征重要性图表

我在python中使用RandomForestRegressor,我想创建一个图表来说明功能重要性的排名.这是我使用的代码:

from sklearn.ensemble import RandomForestRegressor

MT= pd.read_csv("MT_reduced.csv") 
df = MT.reset_index(drop = False)

columns2 = df.columns.tolist()

# Filter the columns to remove ones we don't want.
columns2 = [c for c in columns2 if c not in["Violent_crime_rate","Change_Property_crime_rate","State","Year"]]

# Store the variable we'll be predicting on.
target = "Property_crime_rate"

# Let’s randomly split our data with 80% as the train set and 20% as the test set:

# Generate the training set.  Set random_state to be able to replicate results.
train2 = …
Run Code Online (Sandbox Code Playgroud)

python plot feature-selection random-forest

15
推荐指数
4
解决办法
4万
查看次数

PCA(主成分分析)与特征选择的区别

主成分分析(PCA)与机器学习中的特征选择有什么区别?PCA是一种功能选择方法吗?

machine-learning pca feature-selection

14
推荐指数
4
解决办法
1万
查看次数

应该在训练测试拆分之前还是之后进行特征选择?

实际上,有两个事实的矛盾是问题的可能答案:

  1. 传统的答案是在拆分后进行,因为如果之前进行过,则可能会从测试集泄漏信息。

  2. 矛盾的答案是,如果仅从整个数据集中选择的训练集用于特征选择,那么特征选择或特征重要性得分顺序可能会随着 Train_Test_Split 的 random_state 的变化而动态变化。如果任何特定工作的特征选择发生变化,则无法进行特征重要性的泛化,这是不可取的。其次,如果仅使用训练集进行特征选择,则测试集可能包含某些实例集,这些实例与仅在训练集上进行的特征选择相悖/矛盾,因为未分析整体历史数据。此外,只有在给定一组实例而不是单个测试/未知实例时,才能评估特征重要性分数。

machine-learning feature-selection train-test-split

14
推荐指数
2
解决办法
1万
查看次数

首先做什么:特征选择或模型参数设置?

这更像是一个"理论"问题.我正在使用scikit-learn包来执行一些NLP任务.Sklearn提供了许多方法来执行特征选择和模型参数的设置.我想知道我应该先做什么.

如果我使用单变量特征选择,很明显我应该首先进行特征选择,然后使用所选特征,然后我将估计器的参数调整.

但是,如果我想使用递归功能消除怎么办?我应该首先使用所有原始功能使用网格搜索设置参数,然后执行功能选择吗?或者我可能首先选择功能(使用估算器的默认参数),然后使用所选功能设置参数?

在此先感谢你能给我的任何帮助.

编辑

我在这里说的问题几乎相同.到那时,还没有解决方案.有人知道它现在是否存在?

python machine-learning feature-selection scikit-learn

13
推荐指数
1
解决办法
1959
查看次数

使用scikit-learn进行递归特征消除和网格搜索

我想使用scikit-learn通过嵌套网格搜索和每个要素子集的交叉验证来执行递归特征消除.从RFECV文档中可以看出,使用estimator_params参数支持这种类型的操作:

estimator_params : dict

    Parameters for the external estimator. Useful for doing grid searches.
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将超参数网格传递给RFECV对象时

from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFECV
from sklearn.svm import SVR
X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
estimator = SVR(kernel="linear")
selector = RFECV(estimator, step=1, cv=5, estimator_params={'C': [0.1, 10, 100, 1000]})
selector = selector.fit(X, y)
Run Code Online (Sandbox Code Playgroud)

我得到一个错误

  File "U:/My Documents/Code/ModelFeatures/bin/model_rcc_gene_features.py", line 130, in <module>
    selector = selector.fit(X, y)
  File "C:\Python27\lib\site-packages\sklearn\feature_selection\rfe.py", line 336, in fit
    ranking_ = rfe.fit(X_train, y_train).ranking_
  File "C:\Python27\lib\site-packages\sklearn\feature_selection\rfe.py", …
Run Code Online (Sandbox Code Playgroud)

feature-selection scikit-learn

13
推荐指数
2
解决办法
5447
查看次数

PCA分析后的特征/变量重要性

我对原始数据集进行了PCA分析,并且从PCA转换的压缩数据集中,我还选择了我想要保留的PC数量(它们几乎解释了94%的方差).现在,我正在努力识别在简化数据集中重要的原始特征.在降维后,如何找出哪些特征是重要的,哪些特征不在剩余的主要组件中?这是我的代码:

from sklearn.decomposition import PCA
pca = PCA(n_components=8)
pca.fit(scaledDataset)
projection = pca.transform(scaledDataset)
Run Code Online (Sandbox Code Playgroud)

此外,我还尝试对简化数据集执行聚类算法,但令我惊讶的是,得分低于原始数据集.这怎么可能?

python machine-learning pca feature-selection scikit-learn

12
推荐指数
2
解决办法
1万
查看次数