我正在尝试使用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
我正在尝试使用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) 我正在尝试通过评估我的回归系数输出来执行特征选择,并选择具有最高幅度系数的特征.问题是,我不知道如何获得相应的功能,因为只有系数从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目标的结构,但我不知道如何.
我正在尝试使用逻辑回归模型对一些EEG数据进行分类(这似乎给出了我数据的最佳分类).我的数据来自多通道EEG设置,所以本质上我有一个63 x 116 x 50的矩阵(即通道x时间点x试验次数(有两种试验类型为50),我已将其重新设计为长矢量,每个试验一个.
我想做的是在分类后看看哪些特征在分类试验中最有用.我怎么能这样做,是否有可能测试这些功能的重要性?例如,分类主要由N特征驱动,这些特征是特征x到z.例如,我可以说时间点90-95的通道10对于分类来说是重要的或重要的.
这是可能的,还是我问错了?
任何评论或论文参考都非常感谢.
我在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) 主成分分析(PCA)与机器学习中的特征选择有什么区别?PCA是一种功能选择方法吗?
实际上,有两个事实的矛盾是问题的可能答案:
传统的答案是在拆分后进行,因为如果之前进行过,则可能会从测试集泄漏信息。
矛盾的答案是,如果仅从整个数据集中选择的训练集用于特征选择,那么特征选择或特征重要性得分顺序可能会随着 Train_Test_Split 的 random_state 的变化而动态变化。如果任何特定工作的特征选择发生变化,则无法进行特征重要性的泛化,这是不可取的。其次,如果仅使用训练集进行特征选择,则测试集可能包含某些实例集,这些实例与仅在训练集上进行的特征选择相悖/矛盾,因为未分析整体历史数据。此外,只有在给定一组实例而不是单个测试/未知实例时,才能评估特征重要性分数。
我想使用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) 我对原始数据集进行了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)
此外,我还尝试对简化数据集执行聚类算法,但令我惊讶的是,得分低于原始数据集.这怎么可能?