scikit-learn(sklearn)
它是一个简单有效的数据挖掘和数据分析工具,可以在各种环境下重复使用,建立在numpy,scipy,matplotlib基础之上,对常用算法进行了封装,它的基本模块有数据预处理、数据降维、模型选择、分类、聚类、和回归6个。若对算法不精通,我们只需要简单调用库里的模块就可以执行建模任务。
datasets(sklearn自带的数据集,供用户学习,数据编列比较规范,可以使用data、target、feature_names、DESCR分别获取数据、标签、特征名、描述信息)
数据预处理
model_selection(模型选择模块,提供了划分数据集train_test_split函数,正常数据量的时候将数据集分成训练集,测试集和验证集,典型的是0.5(训练):0.25(测试):0.25(验证),具体视实际出发,当数据量小的时候,采取K折交叉验证法(K-1:1轮流实验,将误差平方和的均值作为最优模型结构的依据)
precessing(数据预处理模块,提供了标准化函数来将数据标准化)
decompisition(特征分解模块,提供降维函数来简化数据集特征维度)
train_test_split()//划分数据集
参考教材中使用方式:
X_data_train,X_data_test,X_target_train,X_target_test = train_test_split(X_data,X_target,test_size=0.2,random_state=?) //将数据集X的数据和标签分为训练集和测试集
test_size:可以为浮点、整数或None,默认为None
①若为浮点时,表示测试集占总样本的百分比
②若为整数时,表示测试样本样本数
③若为None时,test size自动设置成0.25
train_size:可以为浮点、整数或None,默认为None
①若为浮点时,表示训练集占总样本的百分比
②若为整数时,表示训练样本的样本数
③若为None时,train_size自动被设置成0.75
random_state:可以为整数、RandomState实例或None,默认为None
①若为None时,每次生成的数据都是随机,可能不一样
②若为整数时,每次生成的数据都相同
stratify:可以为类似数组或None
①若为None时,划分出来的测试集或训练集中,其类标签的比例也是随机的
②若不为None时,划分出来的测试集或训练集中,其类标签的比例同输入的数组中类标签的比例相同,可以用于处理不均衡的数据集
shuffle:打乱数据True,不打乱False
使用转换器进行预处理与降维
fit : 提取样本信息,可以是统计量,也可以是权值系数
transform 对数据进行转换
fit_transform 先调用fit再调用transform
参考教材中使用方式:
scaler = minmaxscaler().fit(data_train)
data_train/testscaler = scaler.transform(data_train/test)
#两个命令
#1.训练规则 2.应用规则
部分预处理函数及其作用
MinMaxScaler离差标准化
StandardScaler标准差标准化
Normalizer归一化
Binarizer二值化
FunctionTransformer自定义函数变换
OneHotEncoder独热编码处理
decomposition模块处学习PCA降维算法
pca(主成分分析):通过某种线性投影,将高维的数据映射到低维的空间中表示,即把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合。并期望在所投影的维度上数据的方差最大,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。以此使用较少的数据维度,同时保留住较多的原数据点的特性。
PCA的思想是将n维特征映射到k维上(k
K-Means:
kmeans算法步骤选择K个点作为初始质心
repeat 将每个点指派到最近的质心,形成K个簇
重新计算每个簇的数据对象的均值,将均值作为新的聚类中心
计算每个数据对象到新的K个初始化聚类中心的距离,重新划分
until 簇不发生变化或达到最大迭代次数
估计器(Estimator)
估计器的两个方法
fit 用于训练算法,(传入数据)
predict 可用于预测有监督学习的测试集标签,也可用于划分传入数据的类别,(用来预测)
参考教材使用方式:
kmeans = KMeans(n_clusters=?,random_state=??).fit(data)
result = kmeans.predict (target)
{{{{{KMeans函数的参数详解:
n_clusters:整型,缺省值=8 ,生成的聚类数。
max_iter:整型,缺省值=300 。
执行一次k-means算法所进行的最大迭代数。
n_init:整型,缺省值=10 。
用不同的聚类中心初始化值运行算法的次数,最终解是在inertia意义下选出的最优结果。
init:有三个可选值:’k-means++’, ‘random’,或者传递一个ndarray向量。
此参数指定初始化方法,默认值为 ‘k-means++’。
(1)‘k-means++’ 用一种特殊的方法选定初始聚类中发,可加速迭代过程的收敛。
(2)‘random’ 随机从训练数据中选取初始质心。
(3)如果传递的是一个ndarray,则应该形如 (n_clusters, n_features) 并给出初始质心。
precompute_distances:三个可选值,‘auto’,True 或者 False。
预计算距离,计算速度更快但占用更多内存。
(1)‘auto’:如果 样本数乘以聚类数大于 12million 的话则不预计算距离。
(2)True:总是预先计算距离。
(3)False:永远不预先计算距离。
tol:float类型,默认值= 1e-4 与inertia结合来确定收敛条件。
n_jobs:整形数。 指定计算所用的进程数。内部原理是同时进行n_init指定次数的计算。
(1)若值为 -1,则用所有的CPU进行运算。若值为1,则不进行并行运算。
(2)若值小于-1,则用到的CPU数为(n_cpus + 1 + n_jobs)。因此如果 n_jobs值为-2,则用到的CPU数为总CPU数减1。
random_state:整型或 numpy.RandomState 类型,可选
用于初始化质心的生成器(generator)。如果值为一个整数,则确定一个seed。此参数默认值为numpy的随机数生成器。
copy_x
:布尔型,默认值=True
当我们precomputing distances时,将数据中心化会得到更准确的结果。如果把此参数值设为True,则原始数据不会被改变。如果是False,则会直接在原始数据
上做修改并在函数返回值时将其还原。但是在计算过程中由于有对数据均值的加减运算,所以数据返回后,原始数据和计算前可能会有细小差别。
机器学习——KMeans聚类,KMeans原理,参数详解 - Baby-Lily - 博客园
}}}}
sklearn的manifold模块中tsne函数可以实现多维数据的可视化
具体参数解释:
t-SNE()函数 参数解释_陈杉菜-CSDN博客_tsne参数
(抽象!!)
评价聚类模型
metrics模块提供了给聚类模型评分的函数:
参考教材使用方法:
score = ___score(target,聚类结果.labels_) //需要真实值
score = ___score(data,聚类结果.labels) //不需要真实值,轮廓系数法需手动绘图
构建评价分类模型:
分类是指构造一个分类模型,输入样本特征值,输出对应类别,将每个样本映射到预先定义好的类别。分类模型建立在已有类标记的数据集上,属于有监督学习。
sklearn库常用的分类算法
svm支持向量机:
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
支持向量机(SVM)——原理篇 - 知乎
参考教材使用方法:
svm = svc().fit(data_trainStd,target_train)
target_pred = svm.predict(target_testStd)
混淆矩阵:
如何通俗的理解混淆矩阵? - 知乎
准确率:accuracy = (TP+TN)/ Total
预测正确数目在测试集中的占比
召回率:
表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
精确率:
预测结果中为正确的比例
F1
值即为正确率和召回率的调和平均值。
分类模型评价方法
使用方法参考教材:
xxx_score = (target_test,target_pred)
分类模型评价报告函数
classification_report(target_test,target_pred)能够提供 precision 、recall、f1的报告
roc曲线的绘制方法参考教材:
fpr,tpr,thresholds = roc_curve(target_test,target_pred)
(阈值)
构建并评价回归模型
常用回归算法
使用方法参考教材:
model = 函数名称().fit(data_train,target_train)
model_pred = model.predict(data_test)
回归模型评价指标
使用方式参考教材:
回归模型函数名称(target_test,target_pred)