liblinear和nltk等机器学习包中的分类器提供了一种方法show_most_informative_features(),它对调试功能非常有用:
viagra = None ok : spam = 4.5 : 1.0
hello = True ok : spam = 4.5 : 1.0
hello = None spam : ok = 3.3 : 1.0
viagra = True spam : ok = 3.3 : 1.0
casino = True spam : ok = 2.0 : 1.0
casino = None ok : spam = 1.5 : 1.0
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果在scikit-learn中为分类器实现类似的东西.我搜索了文档,但找不到类似的东西.
如果还没有这样的功能,有人知道如何获得这些值吗?
非常感谢!
我正在使用scikit额外的树分类器:
model = ExtraTreesClassifier(n_estimators=10000, n_jobs=-1, random_state=0)
Run Code Online (Sandbox Code Playgroud)
一旦模型被拟合并用于预测类,我想找出每个特征对特定类预测的贡献.我如何在scikit中学习呢?是否可以使用额外的树分类器或我是否需要使用其他模型?
我正在处理高度不平衡的数据集,我的想法是从我的libSVM模型中获取特征权重值.至于现在,我可以使用线性内核,在那里我可以获得特征权重,但是当我使用rbf或者poly,我无法实现我的目标.
在这里,我使用的sklearn是我的模型,很容易获得线性内核使用的特征权重.coef_.任何人都可以帮我做同样的事情rbf或poly?我到目前为止尝试做的事情如下:
svr = SVC(C=10, cache_size=200, class_weight='auto', coef0=0.0, degree=3.0, gamma=0.12,kernel='rbf', max_iter=-1, probability=True, random_state=0,shrinking=True, tol=0.001, verbose=False)
clf = svr.fit(data_train,target_train)
print clf.coef_
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码进行特征重要性计算。
from matplotlib import pyplot as plt
from sklearn import svm
def features_importances(coef, names):
imp = coef
imp,names = zip(*sorted(zip(imp,names)))
plt.barh(range(len(names)), imp, align='center')
plt.yticks(range(len(names)), names)
plt.show()
features_names = ['input1', 'input2']
svm = svm.SVC(kernel='linear')
svm.fit(X, Y)
feature_importances(svm.coef_, features_names)
Run Code Online (Sandbox Code Playgroud)
我如何能够计算非线性内核的特征重要性,这在给定的示例中没有给出预期的结果。
我使用基于 RBF 内核的支持向量机回归训练了一个模型。我想知道对基于 RBF 内核的支持向量机非常重要或主要贡献的功能。我知道有一种方法可以了解基于向量大小的权重向量对线性支持向量回归最有贡献的特征。然而,对于基于 RBF 核的支持向量机,由于特征被转换到一个新的空间,我不知道如何提取最有贡献的特征。我在 python 中使用 scikit-learn。有没有办法在基于 RBF 核的支持向量回归或非线性支持向量回归中提取最有贡献的特征?
from sklearn import svm
svm = svm.SVC(gamma=0.001, C=100., kernel = 'linear')
Run Code Online (Sandbox Code Playgroud)
在这种情况下: 在 sklearn 中为 SVM 分类器确定最有贡献的特征效果很好。但是,如果将内核更改为
from sklearn import svm
svm = svm.SVC(gamma=0.001, C=100., kernel = 'rbf')
Run Code Online (Sandbox Code Playgroud)
上面的答案不起作用。
我正在开发一个文本分类项目,并尝试使用 SVC(kernel= '线性') 来获取特征重要性。这是我的代码:(我更改了这篇文章
中的代码)
X = df1[features]
y = df1['label']
# Create selector class for text and numbers
class TextSelector(BaseEstimator, TransformerMixin):
"""Transformer to select a single column from the data frame to perform additional transformations on"""
def __init__(self, key):
self.key = key
def fit(self, X, y=None):
return self
def transform(self, X):
return X[self.key]
class NumberSelector(BaseEstimator, TransformerMixin):
"""For data grouped by feature, select subset of data at a provided key."""
def __init__(self, key):
self.key = key
def fit(self, X, …Run Code Online (Sandbox Code Playgroud)