关键词:
目录
一.sklearn简介
(1)介绍:
Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,支持包括分类,回归,降维和聚类四大机器学习算法。还包括了特征提取,数据处理和模型评估者三大模块。
(2)Scikit-learn(sklearn)特点:
· 建模无敌:用户通过scikit-learn能够实现各种监督和非监督学习的模型
· 功能多样:同时使用sklearn还能够进行数据的预处理、特征工程、数据集切分、模型评估等工作
· 数据丰富:内置丰富的数据集,比如:泰坦尼克、鸢尾花等
(3)通用学习模式:
• 首先 引入需要训练的数据, Sklearn 自带部分数据集,也可以通过相应方法进行构造 • 然后 选择相应机器学习方法进行训练,训练过程中可以通过一些技巧调整参数,使得学习准确率更高 • 最后 模型训练完成之后便可预测新数据,我们还可以通过 MatPlotLib 等方法来直观的展示数据*SKlearn中学习模式的调用,有很强的统一性,很多都是类似的,学会一个,其他基本差不多(Matplotlib 是Python中类似 MATLAB 的绘图工具)
二.数据集与数据预处理
(1)数据集(sklearn.datasets)
获取小数据集(本地加载):datasets.load_xxx( )
获取大数据集(在线下载): datasets.fetch_xxx( )
本地生成数据集(本地构造): datasets.make_xxx( )
(2)常用数据集:
数据集 | 介绍 |
load_iris( ) | 鸢尾花数据集:3类、4个特征、150个样本 |
load_boston( ) | 波斯顿房价数据集:13个特征、506个样本 |
load_digits( ) | 手写数字集:10类、64个特征、1797个样本 |
load_breast_cancer( ) | 乳腺癌数据集:2类、30个特征、569个样本 |
load_diabets( ) | 糖尿病数据集:10个特征、442个样本 |
load_wine( ) | 红酒数据集:3类、13个特征、178个样本 |
load_files( ) | 加载自定义的文本(txt)分类数据集 |
(3)数据集读取代码
from sklearn import datasets
import matplotlib.pyplot as plt #绘图
iris = datasets.load_iris() #导入鸢尾花数据集
features = iris.data #特征
target = iris.target #标签
print(features.shape,target.shape) #输出矩阵长度
print(iris.feature_names) #得到各个数据的名称
boston = datasets.load_boston() #导入波士顿房价数据集
boston_features = boston.data
boston_target = boston.target
print(boston_features.shape,boston_target.shape)
print(boston.feature_names)
digits = datasets.load_digits() #导入手写数字数据集
digits_features = digits.data
digits_target = digits.target
print(digits_features.shape,digits_target.shape)
img = datasets.load_sample_image(‘flower.jpg’) #导入图片数据集
print(img.shape)
plt.imshow(img) #将数组的值以图片的形式展示出来
plt.show() #将plt.imshow()处理后的函数显示出来
data,target = datasets.make_blobs(n_samples=1000,n_features=2,centers=4,cluster_std=1)
#生成各向同性的高斯斑点以进行聚类
plt.scatter(data[:,0],data[:,1],c=target) #绘制散点图
plt.show() #显示图片
(4)常用方法
函数 | 功能 |
preprocessing.scale( ) | 标准化 |
preprocessing.MinMaxScaler( ) | 最大最小值标准化 |
preprocessing.StandardScaler( ) | 数据标准化 |
preprocessing.MaxAbsScaler( ) | 绝对值最大标准化 |
preprocessing.QuantileTransformer( ) | 使用分位数信息变换特征 |
preprocessing.PowerTransformer( ) | 使用幂变换执行到正态分布的映射 |
preprocessing.Normalizer( ) | 正则化 |
preprocessing.OrdinalEncoder( ) | 将分类特征转换为分类数值 |
preprocessing.LabelEncoder( ) | 将分类特征转换为分类数值 |
preprocessing.MultiLabelBinarizer( ) | 多标签二值化 |
preprocessing.OneHotEncoder( ) | 独热编码 |
preprocessing.KBinsDiscretizer( ) | 将连续数据离散化 |
preprocessing.FunctionTransformer( ) | 自定义特征处理函数 |
preprocessing.Binarizer( ) | 特征二值化 |
preprocessing.Imputer( ) | 弥补缺失值 |
preprocesssing.Normalizer( ) | 正则化 |
(5) 数据预处理思路
1.首先要明确有多少特征,哪些是连续的,哪些是类别的。
2.检查有没有缺失值,对确实的特征选择恰当方式进行弥补, 使数据完整。
3.对连续的数值型特征进行标准化,使得均值为0,方差为1。
4.对类别型的特征进行one-hot编码。
5.将需要转换成类别型数据的连续型数据进行二值化。
6.为防止过拟合或者其他原因,选择是否要将数据进行正则化。
7.在对数据进行初探之后发现效果不佳,可以尝试使用多项式方法,寻找非线性的关系。
8.根据实际问题分析是否需要对特征进行相应的函数转换
(6)数据预处理代码
import numpy as np
from sklearn import preprocessing
#标准化:将数据转换为均值为0,方差为1的数据,即标注正态分布的数据
x = np.array([[1,-1,2],[2,0,0],[0,1,-1]]) #定义矩阵
x_scale = preprocessing.scale(x) #得到的X_scaled中每列的均值为0,方差为1
print(x_scale.mean(axis=0),x_scale.std(axis=0)) #查看均值方差和标准差
std_scale = preprocessing.StandardScaler().fit(x) #计算出数据预处理算法的一些参数
x_std = std_scale.transform(x) #进行数据处理
print(x_std.mean(axis=0),x_std.std(axis=0)) #查看均值方差和标准差
#将数据缩放至给定范围(0-1)
mm_scale = preprocessing.MinMaxScaler()
x_mm = mm_scale.fit_transform(x) #先拟合数据,然后转化它将其转化为标准形式
print(x_mm.mean(axis=0),x_mm.std(axis=0)) #查看均值方差与标准差
#将数据缩放至给定范围(-1-1),适用于稀疏数据
mb_scale = preprocessing.MaxAbsScaler() #缩放每个特征,每个属性除以其所在属性列的最大值
x_mb = mb_scale.fit_transform(x) #先拟合数据,然后转化它将其转化为标准形式
print(x_mb.mean(axis=0),x_mb.std(axis=0)) #查看均值方差与标准差
#适用于带有异常值的数据
rob_scale = preprocessing.RobustScaler() #缩放带有异常值(离群值)的数据
x_rob = rob_scale.fit_transform(x)
print(x_rob.mean(axis=0),x_rob.std(axis=0))
#正则化
nor_scale = preprocessing.Normalizer() #属性缩放到一个指定的最大和最小值
x_nor = nor_scale.fit_transform(x)
print(x_nor.mean(axis=0),x_nor.std(axis=0))
#特征二值化:将数值型特征转换位布尔型的值
bin_scale = preprocessing.Binarizer()
x_bin = bin_scale.fit_transform(x)
print(x_bin)
#将分类特征或数据标签转换位独热编码
ohe = preprocessing.OneHotEncoder()
x1 = ([[0,0,3],[1,1,0],[1,0,2]])
x_ohe = ohe.fit(x1).transform([[0,1,3]])
print(x_ohe)
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
x = np.arange(6).reshape(3,2)
poly = PolynomialFeatures(2)
x_poly = poly.fit_transform(x)
print(x)
print(x_poly)
import numpy as np
from sklearn.preprocessing import FunctionTransformer
#自定义的特征转换函数
transformer = FunctionTransformer(np.log1p)
x = np.array([[0,1],[2,3]])
x_trans = transformer.transform(x)
print(x_trans)
import numpy as np
import sklearn.preprocessing
x = np.array([[-3,5,15],[0,6,14],[6,3,11]])
kbd = preprocessing.KBinsDiscretizer(n_bins=[3,2,2],encode='ordinal').fit(x)
x_kbd = kbd.transform(x)
print(x_kbd)
from sklearn.preprocessing import MultiLabelBinarizer
#多标签二值化
mlb = MultiLabelBinarizer()
x_mlb = mlb.fit_transform([(1,2),(3,4),(5,)])
print(x_mlb)
三.特征选择
很多时候我们用于模型训练的数据集包含许多的特征,这些特征要么是有冗余,要么是对结果的相关性很小;这时通过精心挑选一些"好"的特征来训练模型,既能减小模型训练时间,也能够提升模型性能。
sklean.feature_selection:
函数 | 功能 |
feature_selection.SelectKBest( ) | 选择K个得分最高的特征 |
feature_selection.chi2 | |
feature_selection.f_regression | |
feature_selection.mutual_info_regression | |
feature_selection.VarianceThreshold( ) | 无监督特征选择 |
feature_selection.REF( ) | 递归式特征消除 |
feature_selection.REFCV( ) | 递归式特征消除交叉验证法 |
feature_selection.SelectFromModel( ) | 特征选择 |
四.特征降维
面对特征巨大的数据集,除了进行特征选择之外,我们还可以采取特征降维算法来减少特征数;特征降维于特征选择的区别在于:特征选择是从原始特征中挑选特征;而特征降维则是从原始特征中生成新的特征。很多人会有比较特征选择与特征降维优劣的心理,其实这种脱离实际问题的比较意义不大,我们要明白每一种算法都是有其擅长的领域。
(1)sklearn.decomposition:
函数 | 功能 |
decomposition.PCA( ) | 主成分分析 |
decomposition.KernelPCA( ) | 核主成分分析 |
decomposition.IncrementalPCA( ) | 增量主成分分析 |
decomposition.MiniBatchSparsePCA( ) | 小批量稀疏主成分分析 |
decomposition.SparsePCA( ) | 稀疏主成分分析 |
decomposition.FactorAnalysis( ) | 因子分析 |
decomposition.FastICA( ) | 独立成分分析的快速算法 |
decomposition.DictionaryLearning( ) | 字典学习 |
(2)sklearn.manifold :
函数 | 功能 |
manifold.LocallyLinearEmbedding( ) | 局部非线性嵌入 |
manifold.Isomap( ) | 流形学习 |
manifold.MDS( ) | 多维标度法 |
manifold.t-SNE( ) | t分布随机邻域嵌入 |
decomposition.NMF( ) | 非负矩阵分解 |
manifold.SpectralEmbedding( ) | 频谱嵌入非线性降维 |
五.模型构建
(1)分类模型构建
1.sklearn.liner_model(多元线性回归)
2.Sklearn.ensemble(集成学习)
3.Sklearn.tree(决策树)
4.Sklearn.gaussian_process(高斯过程,解决回归和概率分类)
5.Sklearn.svm(支持向量机)
6.Sklearn.neighbors(回归模型)
7.Sklearn.discriminant_analysis(线性判别分析)
8.Sklearn.anive_bayes(朴素贝叶斯)
(2)回归模型构建
1.sklearn.liner_model(多元线性回归)
2.Sklearn.ensemble(集成学习)
3.Sklearn.gaussian_process(高斯过程,解决回归和概率分类)
4.Sklearn.svm(支持向量机)
5.Sklearn.neighbors(回归模型)
6.Sklearn.tree(决策树)
7.Sklearn.cross_decomposition(交叉分解)
8.Sklearn.kernel_ridge(岭回归)
(3)聚类模型构建
sklearn.cluster
算法 | 功能 |
cluster.DBSCAN( ) | 基于密度的聚类 |
cluster.GaussianMixtureModel( ) | 高斯混合模型 |
cluster.AffinityPropagation( ) | 吸引力传播聚类 |
cluster.AgglomerativeClustering( ) | 层次聚类 |
cluster.Birch( ) | 利用层次方法的平衡迭代聚类 |
cluster.KMeans( ) | K均值聚类 |
cluster.SpectralClustering( ) | 谱聚类 |
cluster.MiniBatchKMeans( ) | 小批量K均值聚类 |
cluster.GaussianMixtureModel( ) | 高斯混合模型 |
cluster.MeanShift( ) | 平均移位聚类 |
cluster.OPTICS( ) | 层次聚类 |
cluster.Birch( ) | 基于点排序来识别聚类结构 |
cluster.Biclustering( ) | 双聚类 |
cluster.ward_tree( ) | 集群病房树 |
方法 | 功能 |
xxx.fit( ) | 模型训练 |
xxx.get_params( ) | 获取模型参数 |
xxx.predict( ) | 预测新输入数据 |
xxx.score( ) | 评估模型分类/回归/聚类模型 |
六.模型评估
(1)分类模型
函数 | 功能 |
metrics.accuracy_score( ) | 准确率 |
metrics.average_precision_score( ) | 平均准确率 |
metrics.log_loss( ) | 对数损失(用于评估分类器的概率输出) |
metrics.confusion_matrix( ) | 混淆矩阵(总结分类模型预测结果的情形分析表) |
metrics.classification_report( ) | 分类模型评估报告:准确率、召回率、F1-score(精确率和召回率的调和平均数) |
metrics.roc_curve( ) | ROC曲线(比较诊断性实验的效果,是否有应用价值) |
metrics.auc( ) | ROC曲线下面积 |
(2)回归模型
函数 | 功能 |
metrics.mean_squared_error( ) | 平均决定误差(预测值和观测值之间绝对误差的平均值) |
metrics.median_absolute_error( ) | 中值绝对误差(样本偏差的一种鲁棒性测量) |
metrics.r2_score( ) | 决定系数(判断回归方程拟合的程度) |
(3)聚类模型
函数 | 功能 |
metrics.adjusted_rand_score( ) | 随机兰德调整指数(聚类结果与真实情况的吻合情况) |
metrics.silhouette_score( ) | 轮廓系数(评价聚类效果的好坏) |
机器学习sklearn:sklearn快速开始(代码片段)
来源:https://www.cnblogs.com/lianyingteng/p/7811126.html0简介 传统的机器学习任务从开始到建模的一般流程是:获取数据->数据预处理->训练建模->模型评估->预测,分类。本文我们将依据传统机器学习的流程,看看在每一步流... 查看详情
用python+sklearn(机器学习)实现天气预报准备(代码片段)
用python+sklearn机器学习实现天气预报准备项目地址系列教程0.流程介绍1.环境搭建a.pythonb.涉及到的机器学习相关库sklearnpandaseabornjoblib2.寻找数据来源3.分析数据源网址规则4.分析页面规则项目地址github项目:PYWeatherReport系列教程... 查看详情
sklearn与tensorflow机器学习实用指南(补档)(代码片段)
...第二版PDF格式EPUB格式MOBI格式英文仓库中文仓库目录结构Sklearn与TensorFlow机器学习实用指南零、前言一、机器学习概览二、一个完整的机器学习项目三、分类四、训练模型五、支持向量机 查看详情
python机器学习《机器学习python实践》整理,sklearn库应用详解(代码片段)
TableofContents1 初始1.1 初识机器学习1.2 python机器学习的生态圈1.3 第一个机器学习项目1.3.1 机器学习中的helloworld项目1.3.2 导入数据1.3.3 概述数据1.3.4 数据可视化1.3.5 评估算法1.3.5.1 分离评估数据集1.3.5.2 创... 查看详情
机器学习sklearn监督学习回归算法岭回归ridgeregression(代码片段)
fromsklearn.linear_modelimportRidge,LinearRegressionfromsklearn.model_selectionimporttrain_test_splitimportmatplotlib.pyplotaspltimportnumpyasnp#导入数据data_x=[]data_y=[]f=open('E:\\Deskt 查看详情
机器学习sklearn监督学习回归算法岭回归ridgeregression(代码片段)
fromsklearn.linear_modelimportRidge,LinearRegressionfromsklearn.model_selectionimporttrain_test_splitimportmatplotlib.pyplotaspltimportnumpyasnp#导入数据data_x=[]data_y=[]f=open('E:\\Deskt 查看详情
机器学习sklearn无监督学习聚类算法dbscan(代码片段)
importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.clusterimportDBSCANfromsklearn.clusterimportKMeansfromsklearnimportdatasets#生成数据x1,y1=datasets.make_circles(n_samples=2000,factor=0.5 查看详情
机器学习sklearn无监督学习聚类算法dbscan(代码片段)
importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.clusterimportDBSCANfromsklearn.clusterimportKMeansfromsklearnimportdatasets#生成数据x1,y1=datasets.make_circles(n_samples=2000,factor=0.5 查看详情
机器学习sklearn监督学习回归算法线性回归linearregression(代码片段)
importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportlinear_model#设置中文字体plt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=False#设置自变量和因变 查看详情
机器学习sklearn学习总结(代码片段)
Sklearn学习资料推荐:sklearn中文文档机器学习入门必看:使用scikit-learn构建模型的通用模板Python机器学习笔记:常用评估模型指标的用法 Sklean介绍 sklearn是机器学习中一个常用的python第三方模块,里面对一些常用... 查看详情
机器学习sklearn监督学习回归算法多项式回归polynomialregression(代码片段)
importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportlinear_modelfromsklearn.preprocessingimportPolynomialFeaturesplt.rcParams['font.sans-serif']='SimHei'plt.rcParams['a 查看详情
机器学习sklearn监督学习回归算法多项式回归polynomialregression(代码片段)
importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportlinear_modelfromsklearn.preprocessingimportPolynomialFeaturesplt.rcParams['font.sans-serif']='SimHei'plt.rcParams['a 查看详情
用python+sklearn(机器学习)实现天气预报数据数据(代码片段)
用python+sklearn机器学习实现天气预报数据项目地址系列教程勘误表0.前言1.爬虫a.确认要被爬取的网页网址b.爬虫部分c.网页内容匹配取出部分d.写入csv文件格式化e.封装成类2.数据预处理项目地址github项目:PYWeatherReport系列教程机... 查看详情
机器学习sklearn数据集(代码片段)
...1.1.1Scikit-learn工具介绍1.1.2安装1.1.3Scikit-learn包含的内容1.2sklearn数据集1.2.1scikit-learn数据集API介绍1.2.2sklearn小数据集1.2.3sklearn大数据集1.2.4sklearn数据集的使用1.3数据集的划分2pip/pip3下载慢解决1数据集知道数据集的分为训练集和测... 查看详情
机器学习sklearn监督学习分类算法决策树decisiontree(代码片段)
#导入鸢尾花数据集、决策树分类器、计算交叉验证值的函数cross_val_scorefromsklearn.datasetsimportload_irisfromsklearn.treeimportDecisionTreeClassifierfromsklearn.model_selectionimportcross_val_score#使用默认参数,创建一颗基于基尼系数的决策树 查看详情
sklearn实现一元线性回归python机器学习系列(代码片段)
sklearn实现一元线性回归【Python机器学习系列(五)】文章目录1.获取数据2.线性回归模型大家好,我是侯小啾! 本期blog分享的内容是通过sklearn库实现一元线性回归。相比上篇blog中介绍的梯度下降法中较为复杂... 查看详情
机器学习sklearn监督学习分类算法朴素贝叶斯naivebayesianmodel(代码片段)
importnumpyasnpfromsklearn.naive_bayesimportGaussianNBX=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])Y=np.array([1,1,1,2,2,2])#使用默认参数,创建一个高斯朴素贝叶斯分类器,并将该分类器赋给变量clfclf= 查看详情
机器学习sklearn监督学习分类算法朴素贝叶斯naivebayesianmodel(代码片段)
importnumpyasnpfromsklearn.naive_bayesimportGaussianNBX=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])Y=np.array([1,1,1,2,2,2])#使用默认参数,创建一个高斯朴素贝叶斯分类器,并将该分类器赋给变量clfclf= 查看详情