如何使用sklearn获取无用功能的列表?

2024-06-14 10:00:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集来建立一个分类程序:

dataset = pd.read_csv(sys.argv[1], decimal=",",delimiter=";", encoding='cp1251')
X=dataset.ix[:, dataset.columns != 'class']
Y=dataset['class']

我只想选择重要功能,所以我选择:

^{pr2}$

所以X新的形状是3000x72,而X的形状是3000x130。我想得到一个新的和不在新的功能列表。我该怎么做?在

X是一个带有头的数据帧,但是X\u new是一个没有名字的特性值列表,所以我不能像在pandas中那样合并它。 谢谢你的帮助!在


Tags: csv数据功能列表readsysdatasetencoding
3条回答

您可能还想看看Feature Selection。它描述了一些技术和工具来更系统地完成这项工作。在

clf.coef_返回特性权重列表(在fit()之后应用)。按权重排序,你会发现哪些不是很有用。在

尝试运行以下代码:

import pandas as pd
import numpy as np

dataset = pd.read_csv(sys.argv[1], decimal=",",delimiter=";", encoding='cp1251')
X=dataset.ix[:, dataset.columns != 'class'].values
Y=dataset['class'].values
feature_names = data_churn.columns.tolist()
feature_names.remove('class')

from sklearn.feature_selection import SelectFromModel
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
clf = SVC(probability=True, gamma=0.017, C=5, coef0=0.00001, kernel='linear', class_weight='balanced')
model = SelectFromModel(clf, prefit=True)
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.5, random_state=5)
y_pred=clf.fit(X_train, Y_train).predict(X_test)
X_new = model.transform(X)
print pd.DataFrame(np.c_[feature_names, model.get_support(0)],
                         columns=[ 'feature_name', 'feature_selected'])

“feature_selected”列显示是否选择了该功能。在

相关问题 更多 >