如何使用权重获取逻辑回归中的特征重要性?

我有一个包含正面/负面类别标签的评论数据集。我正在对这个评论数据集应用逻辑回归。首先,我将其转换为词袋模型。这里sorted_data[‘Text’]评论final_counts是一个稀疏矩阵

count_vect = CountVectorizer() final_counts = count_vect.fit_transform(sorted_data['Text'].values)standardized_data = StandardScaler(with_mean=False).fit_transform(final_counts)

将数据集分为训练集和测试集

X_1, X_test, y_1, y_test = cross_validation.train_test_split(final_counts, labels, test_size=0.3, random_state=0)X_tr, X_cv, y_tr, y_cv = cross_validation.train_test_split(X_1, y_1, test_size=0.3)

我应用逻辑回归算法如下

optimal_lambda = 0.001000log_reg_optimal = LogisticRegression(C=optimal_lambda)# 拟合模型log_reg_optimal.fit(X_tr, y_tr)# 预测结果pred = log_reg_optimal.predict(X_test)# 评估准确率acc = accuracy_score(y_test, pred) * 100print('\n逻辑回归的准确率为 C = %f 时为 %f%%' % (optimal_lambda, acc))

我的权重是

weights = log_reg_optimal.coef_ .   #<class 'numpy.ndarray'>array([[-0.23729528, -0.16050616, -0.1382504 , ...,  0.27291847,         0.35857267,  0.41756443]])(1, 38178) #权重的形状

我想获取特征重要性,即具有高权重的前100个特征。谁能告诉我如何获取这些特征?


回答:

调查线性分类模型中给定特征/参数的“影响”或“重要性”的一种方法是考虑系数大小

这是最基本的方法其他技术用于查找特征重要性或参数影响可能提供更多见解,例如使用p值自助法得分、各种“区分指数”等。


这里,您已经标准化了数据,因此直接使用这个

weights = log_reg_optimal.coef_abs_weights = np.abs(weights)print(abs_weights)

如果您查看原始的weights,那么负系数意味着对应特征的高值会将分类推向负类别。


编辑1

展示如何获取特征名称的示例:

import numpy as np#特征名称names_of_variables =np.array(['a','b','c','d'])#创建随机权重并获取其大小weights = np.random.rand(4)abs_weights = np.abs(weights)#获取排序索引sorted_index = np.argsort(abs_weights)[::-1]#检查排序索引是否正确print(abs_weights[sorted_index])#获取前2个特征的索引top_2 = sorted_index[:2]#获取前2个最重要特征的名称print(names_of_variables[top_2])

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注