机器学习——sklearn中的API

import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.model_selection import StratifiedKFold
from sklearn.feature_selection import RFECV
from sklearn.datasets import make_classification
from sklearn.tree import DecisionTreeClassifier

1、matplotlib.pyplot

matplotlib.pyplot是一个python上的一个2D绘图库,可以在跨平台上绘出很多高质量的图像,例如:直方图、功率谱、柱状图、误差图、散点图等。有利于直观的进行特征选择。

2、sklearn

是一个python中的机器学习库,寂静基本实现了所有机器学习的算法。

3、StratifiedKFold

StratifiedKFold 类似于Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同。

4、RFECV(特征选择的一种方式——递归特征消除)

特征选择主要有两个功能:

  • 减少特征数量、降维,使模型泛化能力更强,减少过拟合
  • 增强对特征和特征值之间的理解

1 、去掉取值变化小的特征 Removing features with low variance——如果一个属性对于大多数样本的取值都是一样的(方差较小),那这个属性就没有什么意义了。

2 、单变量特征选择 Univariate feature selection——衡量单个属性与目标变量之间的关系,舍弃得分不好的特征(相关性小)。对于回归和分类问题可以使用卡方检验。

3、递归特征消除(Recursive feature elimination

递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,移除若干权值系数的特征,再基于新的特征集进行下一轮训练。直至剩余的特征数量达到所需的特征数量。

RFECV 是通过交叉验证的方式执行RFE,以此来选择最佳数量的特征:对于一个数量为d的feature的集合,他的所有的子集的个数是2的d次方减1(包含空集)。指定一个外部的学习算法,比如SVM之类的。通过该算法计算所有子集的validation error。选择error最小的那个子集作为所挑选的特征。——使用穷举法列举出属性子集的所有情况,使用指定算法求其得分,选择得分最高的子集。

 5、make_classification

一种随机数据生成API,用于生成三元分类模型数据,举个栗子:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets.samples_generator import make_classification
# X1为样本特征,Y1为样本类别输出, 共400个样本,每个样本2个特征,输出有3个类别,没有冗余特征,每个类别一个簇
X1, Y1 = make_classification(n_samples=400, n_features=2, n_redundant=0,n_clusters_per_class=1, n_classes=3)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1)
plt.show()

输出的图如下:

6、DecisionTreeClassifier

参考链接:https://www.cnblogs.com/pinard/p/6056319.html  ——链接中解释了该算法API中各个参数的意义、一个实例和决策树可视化的方法。

sklearn中提供的决策树算法类库,内部实现时使用了调优过的CART树算法,既可以做分类又可以做回归。分类决策树的类对应的是DecisionTreeClassifier,而回归决策树的类对应的是DecisionTreeRegressor。两者的参数定义几乎完全相同

猜你喜欢

转载自www.cnblogs.com/simpleDi/p/9922428.html