给定下面的简单特征选择代码,我想知道特征选择后的选定列(数据集包括标题 V1 ... V20
)
import pandas as pdfrom sklearn.feature_selection import SelectFromModel, SelectKBest, f_regressiondef feature_selection(data): y = data['Class'] X = data.drop(['Class'], axis=1) fs = SelectKBest(score_func=f_regression, k=10) # 应用特征选择 X_selected = fs.fit_transform(X, y) # TODO: 确定被选择的列 return X_selecteddata = pd.read_csv("../dataset.csv")new_data = feature_selection(data)
感谢任何帮助。
回答:
我在示例中使用了 iris
数据集,但您可能可以轻松修改代码以适应您的使用情况。SelectKBest 方法具有我用来对特征进行排序的 scores_
属性。
欢迎随时询问任何澄清问题。
import pandas as pdimport numpy as npfrom sklearn.feature_selection import SelectFromModel, SelectKBest, f_regressionfrom sklearn.datasets import load_irisdef feature_selection(data): y = data[1] X = data[0] column_names = ["A", "B", "C", "D"] # 此处应使用您的数据框的列名 k = 2 fs = SelectKBest(score_func=f_regression, k=k) # 应用特征选择 X_selected = fs.fit_transform(X, y) # 查找顶级特征 # 我创建了一个列表,类似于 [[ColumnName1, Score1] , [ColumnName2, Score2], ...] # 然后我按得分降序排序 top_features = sorted(zip(column_names, fs.scores_), key=lambda x: x[1], reverse=True) print(top_features[:k]) return X_selecteddata = load_iris(return_X_y=True)new_data = feature_selection(data)