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)
复制代码 运行上述代码,您将得到如下输出:
4、 总结
本篇以iris数据集为为例,从代码视角讲述如何利用AI机器学习中特性选择工具。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |