python中sklearn库predict,python sklearn linearmodel

这篇具有很好参考价值的文章主要介绍了python中sklearn库predict,python sklearn linearmodel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,小编来为大家解答以下问题,python中sklearn库predict,python sklearn linearmodel,今天让我们一起来看看吧!

python中sklearn库predict,python sklearn linearmodel,人工智能

Source code download: 本文相关源码

本文目录

  • 3.1 背景知识

  • 3.2 Scikit-learn概述

  • 3.3 Scikit-learn主要用法

    • 3.3.1 基本建模流程

    • 3.3.2 数据预处理

    • 3.3.3 监督学习算法

    • 3.3.4 无监督学习算法

    • 3.3.5 评价指标

    • 3.3.6 交叉验证及超参数调优

  • 3.4 Scikit-learn总结

  • 参考文献

Scikit-learn是基于NumPy、SciPy和Matplotlib的开源Python机器学习包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数据分析师首选的机器学习工具包。

自2007年发布以来,Scikit-learn已经成为Python重要的机器学习库了,Scikit-learn简称sklearn,支持包括分类、回归、降维和聚类四大机器学习算法,还包括了特征提取、数据处理和模型评估三大模块学python什么书比较好用。

3.1 背景知识

机器学习的编程语言没有限制,同学们可选用自己熟悉的语言对算法进行实现。本书的代码基于Python编写。回顾一下本书需要掌握的Python相关知识,限于篇幅,本文不再对Python的使用进行详细讲解,仅列出使用Python进行机器学习算法所需要掌握的知识点:

(1) Python环境的安装:包括安装Anaconda、Jupyter和Pycharm。

(2) Python数据结构:列表、元组、集合、字典。

① 列表用来存储一连串元素的容器,用[ ]来表示,其他元素类型可不相同。

② 元组与列表类似,元组中的元素也可进行索引计算,用( )来表示。二者的区别是列表里面的元素值可以修改,而元组中的元素值不可以修改,只能读取。

③ 集合有两个功能,一是进行集合操作,二是消除重复元素。集合的格式是:set( ),其中( )内可以是列表、字典或者字符串。

④ 字典(dict)也称作关联数组,用{ }表示,使用键-值存储。

(3) Python控制流:顺序结构、分支结构、循环结构。

(4) Python函数:调用函数、定义函数、高阶函数。

(5) Python主要模块:NumPy、Pandas、SciPy、Matplotlib、Scikit-learn。

(6) NumPy:是一个用Python实现的科学计算扩展程序库。

(7) Pandas:是基于NumPy的一种工具,为解决数据分析任务而创建。

(8) SciPy:是一款为科学和工程设计的工具包,包括统计、优化、线性代数、傅里叶变化等。

(9) Matplotlib:是一款2D绘图库,以各种硬拷贝格式和跨平台的交互式环境生成绘图、直方图、功率谱、条形图等。

(10) Scikit-learn:Python重要的机器学习库。

3.2 Scikit-learn概述

Scikit-Learn (简称 Sklearn) 是基于 Python 语言的机器学习工具。它建立在 NumPy、SciPy、Pandas和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。

Scikit-Learn库的算法主要有四类:分类、回归、聚类、降维。其中:

  1. 常用的回归:线性回归、决策树回归、SVM回归、KNN回归;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees。

  2. 常用的分类:线性分类、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees。

  3. 常用聚类:K均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN。

  4. 常用降维:LinearDiscriminantAnalysis、PCA。

python中sklearn库predict,python sklearn linearmodel,人工智能

图3-1 Scikit-Learn算法选择路径图

图3-1代表了Scikit-Learn算法选择的一个简单路径,这个路径图代表:蓝色圆圈是判断条件,绿色方框是可以选择的算法,我们可以根据自己的数据特征和任务目标去找一条自己的操作路线。

Scikit-Learn中包含众多数据预处理和特征工程相关的模块,但其实Sklearn六大板块中有两块都是关于数据预处理和特征工程的,两个板块互相交互,为建模之前的全部工程打下基础。

3.3 Scikit-learn主要用法

3.3.1 基本建模流程

基本建模的符号标记见表3-1:

表3-1 符号标记

符号 代表含义 符号 代表含义
X_train 训练数据 y_train 训练集标签
X_test 测试数据 y_test 测试集标签
X 完整数据 y 数据标签
y_pred 预测标签

1.导入工具包

导入工具包的方法如下(这里使用伪代码):

from sklearn import 包名称
from sklearn.库名称 import 包名称

代码示例:

from sklearn import datasets, preprocessing  
#导入数据集,数据预处理库  
from sklearn.model_selection import train_test_split    
#从模型选择库导入数据切分包  
from sklearn.linear_model import LinearRegression    
#从线性模型库导入线性回归包  
from sklearn.metrics import r2_score  
#从评价指标库导入R2评价指标

2.导入数据

导入数据的方法如下:

from sklearn.datasets import 数据名称

Scikit-learn支持以NumPy的arrays对象、Pandas对象、SciPy的稀疏矩阵及其他可转换为数值型arrays的数据结构作为其输入,前提是数据必须是数值型的。

sklearn.datasets模块提供了一系列加载和获取著名数据集如鸢尾花、波士顿房价、Olivetti人脸、MNIST数据集等的工具,也包括了一些toy data如S型数据等的生成工具。

Scikit-learn内置了很多可以用于机器学习的数据,可以用两行代码就可以使用这些数据。内置数据分为可以直接使用的数据集、需下载的数据集以及生成数据集。

(1) 可以直接使用的自带数据集

此类数据集可以直接导入使用数据,数据集和描述见表3-2:

表3-2可以直接使用的自带数据集

数据集名称 描述 类型 维度
load_boston Boston房屋价格 回归 506*13
fetch_california_housing 加州住房 回归 20640*9
load_diabetes 糖尿病 回归 442*10
load_digits 手写字 分类 1797*64
load_breast_cancer 乳腺癌 分类、聚类 (357+212)*30
load_iris 鸢尾花 分类、聚类 (50*3)*4
load_wine 葡萄酒 分类 (59+71+48)*13
load_linnerud 体能训练 多分类 20

(2) 需要下载的自带数据集

此类数据集第一次使用,需要联网下载数据,数据集和描述见表3-3:

表3-3需要下载的自带数据集

数据集名称 描述
fetch_20newsgroups 用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。数据集收集了大约20,000左右的新闻组文档,均匀分为20个不同主题的新闻组集合。返回一个可以提取文本特征的提取器
fetch_20newsgroups_vectorized 这是上面这个文本数据的向量化后的数据,返回一个已提取特征的文本序列,即不需要使用特征提取器
fetch_california_housing 加利福尼亚的房价数据,总计20640个样本,每个样本8个属性表示,以及房价作为target,所有属性值均为number,详情可调用。如:fetch_california_housing( )['DESCR'],了解每个属性的具体含义;
fetch_covtype 森林植被类型,总计581012个样本,每个样本由54个维度表示(12个属性,其中2个分别是onehot4维和onehot40维),以及target表示植被类型1-7,所有属性值均为number,详情可调用fetch_covtype( )['DESCR']了解每个属性的具体含义
fetch_kddcup99 KDD竞赛在1999年举行时采用的数据集,KDD99数据集仍然是网络入侵检测领域的事实Benckmark,为基于计算智能的网络入侵检测研究奠定基础,包含41项特征
fetch_lfw_pairs 该任务称为人脸验证:给定一对两张图片,二分类器必须预测这两个图片是否来自同一个人。
fetch_lfw_people 打好标签的人脸数据集
fetch_mldata 从 mldata.org 中下载数据集
fetch_olivetti_faces Olivetti 脸部图片数据集
fetch_rcv1 路透社新闻语聊数据集
fetch_species_distributions 物种分布数据集

(3) 生成数据集

此类数据集可以用来分类任务,可以用来回归任务,可以用来聚类任务,用于流形学习的,用于因子分解任务的,用于分类任务和聚类任务的:这些函数产生样本特征向量矩阵以及对应的类别标签集合,数据集和描述见表3-4:

表3-4生成数据集

数据集名称 描述
make_blobs 多类单标签数据集,为每个类分配一个或多个正态分布的点集
make_classification 多类单标签数据集,为每个类分配一个或多个正态分布的点集,提供了为数据添加噪声的方式,包括维度相关性,无效特征以及冗余特征等
make_gaussian-quantiles 将一个单高斯分布的点集划分为两个数量均等的点集,作为两类
make_hastie-10-2 产生一个相似的二元分类数据集,有10个维度
make_circle和make_moons 产生二维二元分类数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据

代码示例:

#导入内置的鸢尾花数据  
from sklearn.datasets import load_iris    
iris = load_iris( )  
#定义数据、标签  
X = iris.data  
y = iris.target
3.3.2 数据预处理

1.数据划分

机器学习的数据,可以划分为训练集、验证集和测试集,也可以划分为训练集和测试集(图3-2)。

python中sklearn库predict,python sklearn linearmodel,人工智能

图3-2数据集划分

代码示例:

from sklearn.model_selection import train_test_split    
X_train, X_test, y_train, y_test =  train_test_split(X, y, random_state=12, stratify=y,  test_size=0.3)  
#将完整数据集的70%作为训练集,30%作为测试集,并使得测试集和训练集中各类别数据的比例与原始数据集比例一致(stratify分层策略),另外可通过设置shuffle=True 提前打乱数据。

2.数据变换操作

sklearn.preprocessing模块包含了数据变换的主要操作(表3-5),数据变换的方法如下:

from sklearn.preprocessing import库名称

表3-5使用Scikit-learn进⾏数据变换

预处理操作 库名称
标准化 StandardScaler
最小最大标准化 MinMaxScaler
One-Hot编码 OneHotEncoder
归一化 Normalizer
二值化(单个特征转换) Binarizer
标签编码 LabelEncoder
缺失值填补 Imputer
多项式特征生成 PolynomialFeatures

代码示例:

#使⽤Scikit-learn进⾏数据标准化  
from sklearn.preprocessing import StandardScaler  
#构建转换器实例  
scaler = StandardScaler( )  
#拟合及转换  
scaler.fit_transform(X_train)

3.特征选择

特征选择的方法如下:

1. #导入特征选择库  
2. from sklearn import feature_selection as fs
  • 过滤式(Filter)

1. #保留得分排名前k的特征(top k方式)  
2. fs.SelectKBest(score_func, k)   
3. #交叉验证特征选择  
4. fs.RFECV(estimator, scoring=“r2”)
  • 封装式(Wrapper),结合交叉验证的递归特征消除法,自动选择最优特征个数:

fs.SelectFromModel(estimator)
  • 嵌入式(Embedded),从模型中自动选择特征,任何具有coef_或者feature_importances_的基模型都可以作为estimator参数传入。

3.3.3 监督学习算法

1.监督学习算法-回归

表3-6常见的回归模型

回归模型名称 库名称
线性回归 LinearRegression
岭回归 Ridge
LASSO回归 Lasso
ElasticNet回归 ElasticNet
决策树回归 tree.DecisionTreeRegressor

代码示例:

#从线性模型库导入线性回归模型  
from sklearn.linear_model import LinearRegression  
# 构建模型实例  
lr = LinearRegression(normalize=True)  
#训练模型  
lr.fit(X_train, y_train)  
#作出预测  
y_pred = lr.predict(X_test)

2.监督学习算法-分类

表3-7常见的分类模型

模型名称 库名称
逻辑回归 linear model.LogisticRearession
支持向量机 svm.SVC
朴素贝叶斯 naive_bayes.GaussianNB
KNN neighbors.NearestNeighbors
随机森林 ensemble.RandomForestClassifier
GBDT ensemble.GradientBoostingClassifier

代码示例:

#从树模型库导入决策树  
from sklearn.tree import DecisionTreeClassifier    
#定义模型  
clf = DecisionTreeClassifier(max_depth=5)    
#训练模型  
clf.fit(X_train, y_train)  
#使用决策树分类算法解决二分类问题,得到的是类别  
y_pred = clf.predict(X_test)    
#y_prob 为每个样本预测为“0”和“1”类的概率  
y_prob = clf.predict_proba(X_test)
3.3.4 无监督学习算法

1.聚类算法

sklearn.cluster模块包含了一系列无监督聚类算法,聚类使用的方法如下:

from sklearn.cluster import库名称

表3-8常见的聚类模型

模型名称 库名称
K-means KMeans
DBSCAN DBSCAN
层次聚类 AgglomerativeClustering
谱聚类 SpectralClustering

代码示例:

#从聚类模型库导入kmeans  
from sklearn.cluster import kmeans  
#构建聚类实例  
kmeans = KMeans(n_clusters=3, random_state=0)  
#拟合  
kmeans.fit(X_train)  
#预测  
kmeans.predict(X_test)

2.降维算法

Scikit-learn中降维算法都被包括在模块decomposition中,sklearn.decomposition模块本质是一个矩阵分解模块。最常见的降维方法是PCA(主成分分析)。

降维的使用的方法如下:

from sklearn.decomposition import库名称

代码示例:

#导入PCA库  
from sklearn.decomposition import PCA  
#设置主成分数量为3,n_components代表主成分数量  
pca = PCA(n_components=3)  
#训练模型  
pca.fit(X)  
#投影后各个特征维度的方差比例(这里是三个主成分)  
print(pca.explained_variance_ratio_)  
#投影后的特征维度的方差  
print(pca.explained_variance_)
3.3.5 评价指标

sklearn.metrics模块包含了一系列用于评价模型的评分函数、损失函数以及成对数据的距离度量函数。评价指标主要分为分类评价指标、回归评价指标等等,表3-8列举了常见的几种评价指标。

评价指标使用的方法如下:

from sklearn.metrics import库名称

表3-8常见评价指标

评价指标 库名称 使用范围
准确率 accuracy_score 分类
精确率 precision_score 分类
F1 值 f1_score 分类
对数损失 log_loss 分类
混淆矩阵 confusion_matrix 分类
含多种评价的分类报告 classification_report 分类
均方误差MSE mean_squared_error 回归
平均绝对误差MAE mean_absolute_error 回归
决定系数R2 r2_score 回归

代码示例:

#从评价指标库导入准确率  
from sklearn.metrics import accuracy_score    
#计算样本的准确率  
accuracy_score(y_test, y_pred)  
#对于测试集而言,大部分函数都必须包含真实值y_test和预测值y_pred
3.3.6 交叉验证及超参数调优

1.交叉验证

交叉验证的方法如图3-3,具体原理将在第7章“机器学习实践”中讲解,本章仅讲解使用方法。

python中sklearn库predict,python sklearn linearmodel,人工智能

图3-3 交叉验证示意图

代码示例:

#从模型选择库导入交叉验证分数  
from sklearn.model_selection import cross_val_score    
clf = DecisionTreeClassifier(max_depth=5)  
#使用5折交叉验证对决策树模型进行评估,使用的评分函数为F1值  
scores = cross_val_score(clf, X_train, y_train,cv=5, scoring=’f1_weighted’)

此外,Scikit-learn提供了部分带交叉验证功能的模型类如LogisticRegressionCVLassoCV、等,这些类包含CV参数。

2.超参数调优

在机器学习中,超参数是指无法从数据中学习而需要在训练前提供的参数。机器学习模型的性能在很大程度上依赖于寻找最佳超参数集。

超参数调整一般是指调整模型的超参数,这基本上是一个非常耗时的过程。目前主要有 3 种最流行的超参数调整技术:网格搜索、随机搜索和贝叶斯搜索,其中Scikit-learn内置了网格搜索、随机搜索,本章进行简单讲解,其余调参方法如贝叶斯搜索,本章不进行讨论。

(1) 超参数调优⸺网格搜索

代码示例:

#从模型选择库导入网格搜索  
from sklearn.model_selection import GridSearchCV    
from sklearn import svm  
svc = svm.SVC()  
#把超参数集合作为字典  
params = {‘kernel’:[‘linear’, ‘rbf’], ‘C’:[1, 10]}    
#进行网格搜索,使用了支持向量机分类器,并进行五折交叉验证  
grid_search = GridSearchCV(svc, params, cv=5)    
#模型训练  
grid_search.fit(X_train, y_train)    
#获取模型最优超参数组合  
grid_search.best_params_

在参数网格上进行穷举搜索,方法简单但是搜索速度慢(超参数较多时),且不容易找到参数空间中的局部最优。

(2) 超参数调优⸺随机搜索

代码示例:

#从模型选择库导入随机搜索  
from sklearn.model_selection import RandomizedSearchCV    
from scipy.stats import randint  
svc = svm.SVC()  
#把超参数组合作为字典  
param_dist = {‘kernel’:[‘linear’, ‘rbf’], ‘C’:randint(1, 20)}    
#进行随机搜索  
random_search = RandomizedSearchCV(svc, param_dist, n_iter=10)    
#模型训练  
random_search.fit(X_train, y_train)    
#获取最优超参数组合  
random_search.best_params_

在参数子空间中进行随机搜索,选取空间中的100个点进行建模(可从scipy.stats常见分布如正态分布norm、均匀分布uniform中随机采样得到),时间耗费较少,更容易找到局部最优。

3.4 Scikit-learn总结

Scikit-learn是基于 Python 语言的机器学习工具,它建立在 NumPy、SciPy、Pandas 和 Matplotlib 之上,被广泛地用于统计分析和机器学习建模等数据科学领域,其主要优点包括:

(1) 建模方便:用户通过Scikit-learn能够实现各种监督和非监督学习的模型,仅仅需要几行代码就可以实现。

(2) 功能多样:使用Scikit-learn还能够进行数据的预处理、特征工程、数据集切分、模型评估等工作。

(3) 数据丰富:内置丰富的数据集,比如:泰坦尼克、鸢尾花等,还可以生成数据,非常方便。

参考文献

[1] PEDREGOSA F, VAROQUAUX G, GRAMFORT A, et al. Scikit-learn: Machine Learning in Python[J]. Journal of Machine Learning Research, 2011, 12: 2825–2830.

本文为黄海广老师的机器学习入门基础的第三章原文。

购书连接:

python中sklearn库predict,python sklearn linearmodel,人工智能

教师可以向黄海广老师申请教学ppt原版(邮件:haiguang2000@wzu.edu.cn)

代码地址:https://github.com/fengdu78/WZU-machine-learning-course文章来源地址https://www.toymoban.com/news/detail-806907.html

本文目录

  • 3.1 背景知识

  • 3.2 Scikit-learn概述

  • 3.3 Scikit-learn主要用法

    • 3.3.1 基本建模流程

    • 3.3.2 数据预处理

    • 3.3.3 监督学习算法

    • 3.3.4 无监督学习算法

    • 3.3.5 评价指标

    • 3.3.6 交叉验证及超参数调优

  • 3.4 Scikit-learn总结

  • 参考文献

Scikit-learn是基于NumPy、SciPy和Matplotlib的开源Python机器学习包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数据分析师首选的机器学习工具包。

自2007年发布以来,Scikit-learn已经成为Python重要的机器学习库了,Scikit-learn简称sklearn,支持包括分类、回归、降维和聚类四大机器学习算法,还包括了特征提取、数据处理和模型评估三大模块学python什么书比较好用。

3.1 背景知识

机器学习的编程语言没有限制,同学们可选用自己熟悉的语言对算法进行实现。本书的代码基于Python编写。回顾一下本书需要掌握的Python相关知识,限于篇幅,本文不再对Python的使用进行详细讲解,仅列出使用Python进行机器学习算法所需要掌握的知识点:

(1) Python环境的安装:包括安装Anaconda、Jupyter和Pycharm。

(2) Python数据结构:列表、元组、集合、字典。

① 列表用来存储一连串元素的容器,用[ ]来表示,其他元素类型可不相同。

② 元组与列表类似,元组中的元素也可进行索引计算,用( )来表示。二者的区别是列表里面的元素值可以修改,而元组中的元素值不可以修改,只能读取。

③ 集合有两个功能,一是进行集合操作,二是消除重复元素。集合的格式是:set( ),其中( )内可以是列表、字典或者字符串。

④ 字典(dict)也称作关联数组,用{ }表示,使用键-值存储。

(3) Python控制流:顺序结构、分支结构、循环结构。

(4) Python函数:调用函数、定义函数、高阶函数。

(5) Python主要模块:NumPy、Pandas、SciPy、Matplotlib、Scikit-learn。

(6) NumPy:是一个用Python实现的科学计算扩展程序库。

(7) Pandas:是基于NumPy的一种工具,为解决数据分析任务而创建。

(8) SciPy:是一款为科学和工程设计的工具包,包括统计、优化、线性代数、傅里叶变化等。

(9) Matplotlib:是一款2D绘图库,以各种硬拷贝格式和跨平台的交互式环境生成绘图、直方图、功率谱、条形图等。

(10) Scikit-learn:Python重要的机器学习库。

3.2 Scikit-learn概述

Scikit-Learn (简称 Sklearn) 是基于 Python 语言的机器学习工具。它建立在 NumPy、SciPy、Pandas和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。

Scikit-Learn库的算法主要有四类:分类、回归、聚类、降维。其中:

  1. 常用的回归:线性回归、决策树回归、SVM回归、KNN回归;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees。

  2. 常用的分类:线性分类、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees。

  3. 常用聚类:K均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN。

  4. 常用降维:LinearDiscriminantAnalysis、PCA。

python中sklearn库predict,python sklearn linearmodel,人工智能

图3-1 Scikit-Learn算法选择路径图

图3-1代表了Scikit-Learn算法选择的一个简单路径,这个路径图代表:蓝色圆圈是判断条件,绿色方框是可以选择的算法,我们可以根据自己的数据特征和任务目标去找一条自己的操作路线。

Scikit-Learn中包含众多数据预处理和特征工程相关的模块,但其实Sklearn六大板块中有两块都是关于数据预处理和特征工程的,两个板块互相交互,为建模之前的全部工程打下基础。

3.3 Scikit-learn主要用法

3.3.1 基本建模流程

基本建模的符号标记见表3-1:

表3-1 符号标记

符号 代表含义 符号 代表含义
X_train 训练数据 y_train 训练集标签
X_test 测试数据 y_test 测试集标签
X 完整数据 y 数据标签
y_pred 预测标签

1.导入工具包

导入工具包的方法如下(这里使用伪代码):

from sklearn import 包名称
from sklearn.库名称 import 包名称

代码示例:

from sklearn import datasets, preprocessing  
#导入数据集,数据预处理库  
from sklearn.model_selection import train_test_split    
#从模型选择库导入数据切分包  
from sklearn.linear_model import LinearRegression    
#从线性模型库导入线性回归包  
from sklearn.metrics import r2_score  
#从评价指标库导入R2评价指标

2.导入数据

导入数据的方法如下:

from sklearn.datasets import 数据名称

Scikit-learn支持以NumPy的arrays对象、Pandas对象、SciPy的稀疏矩阵及其他可转换为数值型arrays的数据结构作为其输入,前提是数据必须是数值型的。

sklearn.datasets模块提供了一系列加载和获取著名数据集如鸢尾花、波士顿房价、Olivetti人脸、MNIST数据集等的工具,也包括了一些toy data如S型数据等的生成工具。

Scikit-learn内置了很多可以用于机器学习的数据,可以用两行代码就可以使用这些数据。内置数据分为可以直接使用的数据集、需下载的数据集以及生成数据集。

(1) 可以直接使用的自带数据集

此类数据集可以直接导入使用数据,数据集和描述见表3-2:

表3-2可以直接使用的自带数据集

数据集名称 描述 类型 维度
load_boston Boston房屋价格 回归 506*13
fetch_california_housing 加州住房 回归 20640*9
load_diabetes 糖尿病 回归 442*10
load_digits 手写字 分类 1797*64
load_breast_cancer 乳腺癌 分类、聚类 (357+212)*30
load_iris 鸢尾花 分类、聚类 (50*3)*4
load_wine 葡萄酒 分类 (59+71+48)*13
load_linnerud 体能训练 多分类 20

(2) 需要下载的自带数据集

此类数据集第一次使用,需要联网下载数据,数据集和描述见表3-3:

表3-3需要下载的自带数据集

数据集名称 描述
fetch_20newsgroups 用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。数据集收集了大约20,000左右的新闻组文档,均匀分为20个不同主题的新闻组集合。返回一个可以提取文本特征的提取器
fetch_20newsgroups_vectorized 这是上面这个文本数据的向量化后的数据,返回一个已提取特征的文本序列,即不需要使用特征提取器
fetch_california_housing 加利福尼亚的房价数据,总计20640个样本,每个样本8个属性表示,以及房价作为target,所有属性值均为number,详情可调用。如:fetch_california_housing( )['DESCR'],了解每个属性的具体含义;
fetch_covtype 森林植被类型,总计581012个样本,每个样本由54个维度表示(12个属性,其中2个分别是onehot4维和onehot40维),以及target表示植被类型1-7,所有属性值均为number,详情可调用fetch_covtype( )['DESCR']了解每个属性的具体含义
fetch_kddcup99 KDD竞赛在1999年举行时采用的数据集,KDD99数据集仍然是网络入侵检测领域的事实Benckmark,为基于计算智能的网络入侵检测研究奠定基础,包含41项特征
fetch_lfw_pairs 该任务称为人脸验证:给定一对两张图片,二分类器必须预测这两个图片是否来自同一个人。
fetch_lfw_people 打好标签的人脸数据集
fetch_mldata 从 mldata.org 中下载数据集
fetch_olivetti_faces Olivetti 脸部图片数据集
fetch_rcv1 路透社新闻语聊数据集
fetch_species_distributions 物种分布数据集

(3) 生成数据集

此类数据集可以用来分类任务,可以用来回归任务,可以用来聚类任务,用于流形学习的,用于因子分解任务的,用于分类任务和聚类任务的:这些函数产生样本特征向量矩阵以及对应的类别标签集合,数据集和描述见表3-4:

表3-4生成数据集

数据集名称 描述
make_blobs 多类单标签数据集,为每个类分配一个或多个正态分布的点集
make_classification 多类单标签数据集,为每个类分配一个或多个正态分布的点集,提供了为数据添加噪声的方式,包括维度相关性,无效特征以及冗余特征等
make_gaussian-quantiles 将一个单高斯分布的点集划分为两个数量均等的点集,作为两类
make_hastie-10-2 产生一个相似的二元分类数据集,有10个维度
make_circle和make_moons 产生二维二元分类数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据

代码示例:

#导入内置的鸢尾花数据  
from sklearn.datasets import load_iris    
iris = load_iris( )  
#定义数据、标签  
X = iris.data  
y = iris.target
3.3.2 数据预处理

1.数据划分

机器学习的数据,可以划分为训练集、验证集和测试集,也可以划分为训练集和测试集(图3-2)。

python中sklearn库predict,python sklearn linearmodel,人工智能

图3-2数据集划分

代码示例:

from sklearn.model_selection import train_test_split    
X_train, X_test, y_train, y_test =  train_test_split(X, y, random_state=12, stratify=y,  test_size=0.3)  
#将完整数据集的70%作为训练集,30%作为测试集,并使得测试集和训练集中各类别数据的比例与原始数据集比例一致(stratify分层策略),另外可通过设置shuffle=True 提前打乱数据。

2.数据变换操作

sklearn.preprocessing模块包含了数据变换的主要操作(表3-5),数据变换的方法如下:

from sklearn.preprocessing import库名称

表3-5使用Scikit-learn进⾏数据变换

预处理操作 库名称
标准化 StandardScaler
最小最大标准化 MinMaxScaler
One-Hot编码 OneHotEncoder
归一化 Normalizer
二值化(单个特征转换) Binarizer
标签编码 LabelEncoder
缺失值填补 Imputer
多项式特征生成 PolynomialFeatures

代码示例:

#使⽤Scikit-learn进⾏数据标准化  
from sklearn.preprocessing import StandardScaler  
#构建转换器实例  
scaler = StandardScaler( )  
#拟合及转换  
scaler.fit_transform(X_train)

3.特征选择

特征选择的方法如下:

1. #导入特征选择库  
2. from sklearn import feature_selection as fs
  • 过滤式(Filter)

1. #保留得分排名前k的特征(top k方式)  
2. fs.SelectKBest(score_func, k)   
3. #交叉验证特征选择  
4. fs.RFECV(estimator, scoring=“r2”)
  • 封装式(Wrapper),结合交叉验证的递归特征消除法,自动选择最优特征个数:

fs.SelectFromModel(estimator)
  • 嵌入式(Embedded),从模型中自动选择特征,任何具有coef_或者feature_importances_的基模型都可以作为estimator参数传入。

3.3.3 监督学习算法

1.监督学习算法-回归

表3-6常见的回归模型

回归模型名称 库名称
线性回归 LinearRegression
岭回归 Ridge
LASSO回归 Lasso
ElasticNet回归 ElasticNet
决策树回归 tree.DecisionTreeRegressor

代码示例:

#从线性模型库导入线性回归模型  
from sklearn.linear_model import LinearRegression  
# 构建模型实例  
lr = LinearRegression(normalize=True)  
#训练模型  
lr.fit(X_train, y_train)  
#作出预测  
y_pred = lr.predict(X_test)

2.监督学习算法-分类

表3-7常见的分类模型

模型名称 库名称
逻辑回归 linear model.LogisticRearession
支持向量机 svm.SVC
朴素贝叶斯 naive_bayes.GaussianNB
KNN neighbors.NearestNeighbors
随机森林 ensemble.RandomForestClassifier
GBDT ensemble.GradientBoostingClassifier

代码示例:

#从树模型库导入决策树  
from sklearn.tree import DecisionTreeClassifier    
#定义模型  
clf = DecisionTreeClassifier(max_depth=5)    
#训练模型  
clf.fit(X_train, y_train)  
#使用决策树分类算法解决二分类问题,得到的是类别  
y_pred = clf.predict(X_test)    
#y_prob 为每个样本预测为“0”和“1”类的概率  
y_prob = clf.predict_proba(X_test)
3.3.4 无监督学习算法

1.聚类算法

sklearn.cluster模块包含了一系列无监督聚类算法,聚类使用的方法如下:

from sklearn.cluster import库名称

表3-8常见的聚类模型

模型名称 库名称
K-means KMeans
DBSCAN DBSCAN
层次聚类 AgglomerativeClustering
谱聚类 SpectralClustering

代码示例:

#从聚类模型库导入kmeans  
from sklearn.cluster import kmeans  
#构建聚类实例  
kmeans = KMeans(n_clusters=3, random_state=0)  
#拟合  
kmeans.fit(X_train)  
#预测  
kmeans.predict(X_test)

2.降维算法

Scikit-learn中降维算法都被包括在模块decomposition中,sklearn.decomposition模块本质是一个矩阵分解模块。最常见的降维方法是PCA(主成分分析)。

降维的使用的方法如下:

from sklearn.decomposition import库名称

代码示例:

#导入PCA库  
from sklearn.decomposition import PCA  
#设置主成分数量为3,n_components代表主成分数量  
pca = PCA(n_components=3)  
#训练模型  
pca.fit(X)  
#投影后各个特征维度的方差比例(这里是三个主成分)  
print(pca.explained_variance_ratio_)  
#投影后的特征维度的方差  
print(pca.explained_variance_)
3.3.5 评价指标

sklearn.metrics模块包含了一系列用于评价模型的评分函数、损失函数以及成对数据的距离度量函数。评价指标主要分为分类评价指标、回归评价指标等等,表3-8列举了常见的几种评价指标。

评价指标使用的方法如下:

from sklearn.metrics import库名称

表3-8常见评价指标

评价指标 库名称 使用范围
准确率 accuracy_score 分类
精确率 precision_score 分类
F1 值 f1_score 分类
对数损失 log_loss 分类
混淆矩阵 confusion_matrix 分类
含多种评价的分类报告 classification_report 分类
均方误差MSE mean_squared_error 回归
平均绝对误差MAE mean_absolute_error 回归
决定系数R2 r2_score 回归

代码示例:

#从评价指标库导入准确率  
from sklearn.metrics import accuracy_score    
#计算样本的准确率  
accuracy_score(y_test, y_pred)  
#对于测试集而言,大部分函数都必须包含真实值y_test和预测值y_pred
3.3.6 交叉验证及超参数调优

1.交叉验证

交叉验证的方法如图3-3,具体原理将在第7章“机器学习实践”中讲解,本章仅讲解使用方法。

python中sklearn库predict,python sklearn linearmodel,人工智能

图3-3 交叉验证示意图

代码示例:

#从模型选择库导入交叉验证分数  
from sklearn.model_selection import cross_val_score    
clf = DecisionTreeClassifier(max_depth=5)  
#使用5折交叉验证对决策树模型进行评估,使用的评分函数为F1值  
scores = cross_val_score(clf, X_train, y_train,cv=5, scoring=’f1_weighted’)

此外,Scikit-learn提供了部分带交叉验证功能的模型类如LogisticRegressionCVLassoCV、等,这些类包含CV参数。

2.超参数调优

在机器学习中,超参数是指无法从数据中学习而需要在训练前提供的参数。机器学习模型的性能在很大程度上依赖于寻找最佳超参数集。

超参数调整一般是指调整模型的超参数,这基本上是一个非常耗时的过程。目前主要有 3 种最流行的超参数调整技术:网格搜索、随机搜索和贝叶斯搜索,其中Scikit-learn内置了网格搜索、随机搜索,本章进行简单讲解,其余调参方法如贝叶斯搜索,本章不进行讨论。

(1) 超参数调优⸺网格搜索

代码示例:

#从模型选择库导入网格搜索  
from sklearn.model_selection import GridSearchCV    
from sklearn import svm  
svc = svm.SVC()  
#把超参数集合作为字典  
params = {‘kernel’:[‘linear’, ‘rbf’], ‘C’:[1, 10]}    
#进行网格搜索,使用了支持向量机分类器,并进行五折交叉验证  
grid_search = GridSearchCV(svc, params, cv=5)    
#模型训练  
grid_search.fit(X_train, y_train)    
#获取模型最优超参数组合  
grid_search.best_params_

在参数网格上进行穷举搜索,方法简单但是搜索速度慢(超参数较多时),且不容易找到参数空间中的局部最优。

(2) 超参数调优⸺随机搜索

代码示例:

#从模型选择库导入随机搜索  
from sklearn.model_selection import RandomizedSearchCV    
from scipy.stats import randint  
svc = svm.SVC()  
#把超参数组合作为字典  
param_dist = {‘kernel’:[‘linear’, ‘rbf’], ‘C’:randint(1, 20)}    
#进行随机搜索  
random_search = RandomizedSearchCV(svc, param_dist, n_iter=10)    
#模型训练  
random_search.fit(X_train, y_train)    
#获取最优超参数组合  
random_search.best_params_

在参数子空间中进行随机搜索,选取空间中的100个点进行建模(可从scipy.stats常见分布如正态分布norm、均匀分布uniform中随机采样得到),时间耗费较少,更容易找到局部最优。

3.4 Scikit-learn总结

Scikit-learn是基于 Python 语言的机器学习工具,它建立在 NumPy、SciPy、Pandas 和 Matplotlib 之上,被广泛地用于统计分析和机器学习建模等数据科学领域,其主要优点包括:

(1) 建模方便:用户通过Scikit-learn能够实现各种监督和非监督学习的模型,仅仅需要几行代码就可以实现。

(2) 功能多样:使用Scikit-learn还能够进行数据的预处理、特征工程、数据集切分、模型评估等工作。

(3) 数据丰富:内置丰富的数据集,比如:泰坦尼克、鸢尾花等,还可以生成数据,非常方便。

参考文献

[1] PEDREGOSA F, VAROQUAUX G, GRAMFORT A, et al. Scikit-learn: Machine Learning in Python[J]. Journal of Machine Learning Research, 2011, 12: 2825–2830.

本文为黄海广老师的机器学习入门基础的第三章原文。

购书连接:

python中sklearn库predict,python sklearn linearmodel,人工智能

教师可以向黄海广老师申请教学ppt原版(邮件:haiguang2000@wzu.edu.cn)

代码地址:https://github.com/fengdu78/WZU-machine-learning-course

到了这里,关于python中sklearn库predict,python sklearn linearmodel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python一元线性回归sklearn

    2024年01月24日
    浏览(47)
  • Python多元线性回归sklearn

    2024年01月24日
    浏览(48)
  • Python-线性回归的sklearn实现

    hello大家好这里是小L😊, 这学期开启机器学习之旅。在这里想和大家一起学习一起进步。💪 这次笔记内容:学习线性回归的sklearn实现 线性回归最后要找的是一条直线 (1)代码 (2)求斜率(数学公式) sklearn.linear_model.LinearRegression ( ) 超参数 fit_ intercept:截距,是否计算该模型

    2024年02月07日
    浏览(39)
  • Python多项式回归sklearn

    多项式回归是一种回归分析的方法,它通过使用多项式函数来拟合数据。与简单线性回归不同,多项式回归可以更灵活地适应数据的曲线特征,因为它可以包含多个特征的高次项。 多项式回归的一般形式为: 在实际应用中,可以通过调整多项式的次数来适应不同的数据特征

    2024年01月25日
    浏览(48)
  • Python-sklearn库的安装

    在搜索框输入cmd,打开命令提示框,在提示框内输入pip install scikit-learn,回车,系统就会自动安装库了,如图所示: 但是提示了You are using pip version 22.0.4; however, version 22.3.1 is available. You should consider upgrading via the \\\'C:UsersAlstonAppDataLocalProgramsPythonPython310python.exe -m pip instal

    2024年02月12日
    浏览(49)
  • chatgpt赋能python:Python安装sklearn库详细教程

    如果你是一名Python开发者,那么你一定知道scikit-learn或者简称为sklearn。这是一个强大的Python机器学习库,它为我们提供了许多算法和工具来帮助我们进行数据分析、预测和模型训练。如果你还没安装它,那么本文将详细介绍如何安装sklearn库。 sklearn可以在Python2和Python3上运行

    2024年02月16日
    浏览(65)
  • Python踩坑—pyLDAvis与pyLDAvis.sklearn

    基于jupyter编辑器 问题代码 明明安装了,但依旧显示:ModuleNotFoundError: No module named \\\'pyLDAvis.sklearn\\\' 寻找原因:在prompt中输入 发现:pyLDAvis 3.4.1 这个版本的 pyLDAvis 通常支持与 sklearn 集成,需要直接导入 pyLDAvis 并使用其与 sklearn 相关的功能,而无需导入 pyLDAvis.sklearn 。于 pyLDAv

    2024年04月22日
    浏览(32)
  • Python最简单的sklearn库安装教程

    在网上看见许多sklearn库的安装教程都是比较复杂,需要配置许多环境,对于电脑基础不好的人来说可是一件头疼的事情,今天我介绍一个简单的安装方法。 ps:有网友发现直接install sklearn时无法使用sklearn库,原因是下载方式有错,应该是直接install  scikit-learn,我在下面的教

    2024年02月11日
    浏览(36)
  • chatgpt赋能python:Python怎么装sklearn?最全详细教程

    如果您正在学习机器学习,那么你一定知道Scikit-learn(sklearn)是一个强大的Python机器学习库。本文将详细介绍如何在Python环境中安装和使用Scikit-learn。 Scikit-learn是一个流行的Python机器学习库。它为用户提供了一系列工具和算法来应对许多机器学习问题:分类,回归和聚类。这些

    2024年02月07日
    浏览(42)
  • 在python中安装指定版本的sklearn库

    先将原版本的sklearn版本在cmd中卸载: 检查一些pip中是否还有与sklearn有关项: 安装指定版本的sklearn库: 其中可将scikit_learn==0.24.1换成你需要的版本。

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包