数据的特征选择
降维本质上是从一个维度空间映射到另一个维度空间,特征的多少别没有减少,当然在映射的过程中特征值也会相应的变化。举个例子,现在的特征是1000维,我们想要把它降到500维。降维的过程就是找个一个从1000维映射到500维的映射关系。原始数据中的1000个特征,每一个都对应着降维后的500维空间中的一个值。假设原始特征中有个特征的值是9,那么降维后对应的值可能是3。 特征选择主要有两个功能:
(1)减少特征数量,降维,使模型泛化能力更强,减少过拟合
(2)增强特征和特征值之间的理解
sklearn.feature_selection
去掉取值变化小的特征(删除低方差特征)
VarianceThreshold 是特征选择中的一项基本方法。它会移除所有方差不满足阈值的特征。默认设置下,它将移除所有方差为0的特征,即那些在所有样本中数值完全相同的特征。示例代码如下:
def var():
"""
特征选择-删除低方差
:return: None
"""
var = VarianceThreshold(threshold=0)
data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])
print(data)
return None
PCA降维
本质:PCA是一种分析、简化数据集的技术 目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。 作用:可以削减回归分析或者聚类分析中特征的数量 sklearn中的PCA语法为PCA(n_components=None),PCA.fit_transform(X) 其中
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后指定维度的array
示例代码如下:
def pca():
"""
主成分分析进行特征降维
:return: None
"""
pca = PCA(n_components=0.9)
data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(data)
return None
数据集的划分
机器学习一般的数据集会划分为两个部分:
训练数据:用于训练,构建模型
测试数据:在模型检验时使用,用于评估模型是否有效
sklearn数据集划分API:sklearn.model_selection.train_test_split sklearn.datasets
- 加载获取流行数据集
- datasets.load_*()
获取小规模数据集,数据包含在datasets里 - datasets.fetch_*(data_home=None)
获取大规模数据集,需要从网络上下载,函 数的第一个参数是data_home,表示数据集 下载的目录,默认是 ~/scikit_learn_data/
load和fetch返回的数据类型datasets.base.Bunch(字典格式)
- data:特征数据数组,是 [n_samples * n_features] 的二维
numpy.ndarray 数组 - target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
- DESCR:数据描述
- feature_names:特征名,新闻数据,手写数字、回归数据集没有
- target_names:标签名,回归数据集没有
数据集进行分割
**sklearn.model_selection.train_test_split(*arrays, options)
- x:数据集的特征值
- y :数据集的标签值
- test_size 测试集的大小,一般为float
- random_state 随机数种子,不同的种子会造成不同的随机 采样结果。相同的种子采样结果相同。
- return 训练集特征值,测试集特征值,训练标签,测试标签 (默认随机取)
-示例代码如下:
from sklearn.datasets import load_iris, fetch_20newsgroups, load_boston
from sklearn.model_selection import train_test_split
import pandas as pd
li = load_iris()
print(li.data)
print(li.target)
print(li.DESCR)
x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, test_size=0.25)
print("训练集特征值和目标值:", x_train, y_train)
print("测试集特征值和目标值:", x_test, y_test)
estimator的工作流程
在sklearn中,估计器(estimator)是一个重要的角色,分类器和回归器都属于estimator。在估计器中有有两个重要的方法是fit和transform。
- fit方法用于从训练集中学习模型参数
- transform用学习到的参数转换数据
如下图:
|