AI人工智能之机器学习sklearn特征选择
1、概要
本篇学习AI人工智能之机器学习sklearn特征选择,以iris数据集为示例,从代码层面讲述如何进行特征选择。
2、特征选择 - 简介
特征选择,是一个重要的预处理步骤,它可以提高模型的效率和效果。然而,选择正确的特征和正确的评分函数需要仔细考虑数据的特点和模型的目标。
SelectKBest 是 scikit-learn 库中的一个特征选择方法。使用 SelectKBest 的好处包括:
- 减少了模型的复杂性,可能提高了模型的解释性。
- 减少了模型训练的时间,因为特征数量减少了。
- 有时可以提高模型的预测性能,尤其是当原始特征集合中包含许多不相关或冗余特征时。
3、特征选择 - SelectKBest
3.1、安装依赖
python安装机器学习库: pip install scikit-learn
3.2、引入数据集和划分数据集
# 引入下特征选择库 SelectKBest
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 加载示例数据
iris = load_iris()
X = iris.data
y = iris.target
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
3.3、创建SelectKBest对象进行特征选择和评估
SelectKBest函数的一些重要参数:
- score_func: 评分函数,用于评估特征的重要性。它应该接受特征矩阵和目标向量作为输入,并返回一个评分数组。
- scikit-learn 提供了多种评分函数,例如 f_classif(用于分类的ANOVA F-value),chi2(用于分类的卡方测试),f_regression(用于回归的F-value)等。
- k: 要选择的特征数量。如果 k 是一个整数,那么会选择评分最高的 k 个特征。如果 k 是一个浮点数,并且介于 0 和 1 之间,那么会选择所有评分在顶部 k * 总特征数 的特征。
- p: 可以指定为选择特征的最小分数。如果指定,SelectKBest 会选择所有评分高于或等于 p 的特征。
# 创建SelectKBest对象,选择F-value评分函数,并选择顶部的2个特征
selector = SelectKBest(score_func=f_classif, k=2)
# 对特征进行选择, 新特征 现在只包含原始数据中最重要的2个特征
X_train_new = selector.fit_transform(X_train, y_train)
X_test_new = selector.transform(X_test)
# 初始化模型并训练
model = LogisticRegression(max_iter=200)
model.fit(X_train_new, y_train)
# 预测和评估
y_pred = model.predict(X_test_new)
accuracy = accuracy_score(y_test, y_pred)
# 输出特征选择后的准确率
print("特征选择后的准确率:", accuracy)
运行上述代码,您将得到如下输出:
特征选择后的准确率: 1.0
4、 总结
本篇以iris数据集为为例,从代码视角讲述如何使用AI机器学习中特征选择工具。