机器学习 | sklearn库

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

目录

一、样本及样本的划分

1.1 样本划分

1.2 划分样本的方法

二、导入或创建数据集

2.1 导入sklearn自带的样本数据集

2.2 利用sklearn生成随机的数据集

2.3 读入自己创建的数据集

三、数据预处理

3.1 数据标准化

3.2 sklearn中的数据标准化函数

3.3 正则化函数Normalizer()

四、数据的降维


一、样本及样本的划分

1.1 样本划分

从数据中学习并得到模型的过程称为“学习”或“训练”,这个过程通过执行某个学习算法来完成。因为机器学习需要从样本中进行学习,所以机器学习中也有样本的概念,与统计学相比,根据样本在学习中所起的作用,机器学习中的样本经常划分为如下3类:

  • 训练集:用于模型拟合的数据样本,即建立模型使用的样本集。
  • 验证集:是模型训练过程中单独留出来的样本集,可以用于调整样本模型的超参数,以及对模型的能力进行初步评估。
  • 测试集:用来测试模型在预测未知样本时的准确率,即评估最终模型的泛化能力。所谓泛化能力,是指机器学习模型对新鲜样本的适应能力。泛化能力不能作为调参、选择特征等与算法相关的选择依据

一般,在做预测分析时会将样本划分为两部分:一部分是训练集数据,用于构建模型;另一部分是测试集 数据,用于检验模型。但有时候在模型的构建过程中也需要检验模型,辅助模型构建,这时就需要再划分出一部分作为验证集,因此验证集是可选的

训练集的规模远大于验证集和测试集。在小样本机器学习中,训练集、测试集、验证集的比例一般为7:1:2,而在大样本机器学习中,训练集所占的比例一般为99%左右,验证集和测试集占1%左右。

机器学习的步骤如下:

(1)使用训练集中的数据训练模型,得到一个初步的模型。

(2)使用验证集验证模型的有效性,并调整参数使模型尽可能地有效,这一步会得到最终的模型。

(3)使用测试集测试最终模型的准确率。方法是,先不看测试集中的类别属性,将测试集中的样本特征集输入机器学习模型中,看该模型输出的类别属性与测试集中的实际类别属性差异有多大。差异越小,说明模型的有效性越高。测试集只是测试模型的准确率

1.2 划分样本的方法

机器学习的样本划分可以采用train_test_split()函数,也可以采用交叉验证的方法。

sklearn提供了一个将数据集切分称训练集和测试集的函数train_test_split()。该函数默认把数据集的75%作为训练集,把数据集的25%作为测试集。也可以用test_size设置测试集所占的比例,代码如下:

from sklearn.model_selection import train_test_split
#将样本划分为训练集和测试集,其中测试集占20%,random_state表示随机因子
Xtrain,Xtest,Ytrain,Ytest=train_test_split(X,y,test_size=0.2,random_state=420)

如果是大数据集,使用train_test_split()函数的划分方法没有问题,如果是小数据集,将其划分为两或三份会导致训练样本量的不足。因此,对于小数据集,通常使用交叉验证的方法。交叉验证有许多版本,一般使用k折交叉验证。

交叉验证一般去十折交叉验证,将样本划分为k个子集,每个子集均作为一次测试集,其余的作为训练集。交叉验证重复k次,每次选择一个子集作为测试集,并将k次的平均交叉验证识别作为结果。

sklearn提供了一个对样本集进行交叉验证的函数cross_val_predict()。该函数有4个参数,其中,cv表示迭代次数。代码如下:

from sklearn.model_selection import cross_val_predict
predicted=cross_val_predict(clf,iris.data,iris.target,cv=10)
metrics.accuracy_score(iris.target,predicted)  #交叉验证的结果

其中,clf是一个分类器,iris.data是特征数据,iris.target是类别数据。

在使用交叉验证时计算量会增加很多,对于处理大数据集是个负担。可以通过查看交叉验证中的train_score和test_score,判断模型是否过拟合或者欠拟合。

更详细的交叉验证

二、导入或创建数据集

传统的机器学习任务从开始到建模的一般流程是获取数据数据预处理训练建模模型评估预测、分类。

在sklearn中要获取或创建样本数据有以下三种方法:

2.1 导入sklearn自带的样本数据集

在sklearn的datasets模型中提供了一些样本训练数据,可以使用这些数据进行分类、聚类或进行回归分析,以方便创建机器学习模型。这些数据集存放在D:\Anaconda3\Lib\site-packages\sklearn\datasets\data目录下。导入这些自带的样本数据集需要使用专门的调用函数,如下表所示:

sklearn自带的样本数据集
数据集名称 调用函数 适用算法 数据规模(行*列) 数据集大小
波士顿房价数据集 load_boston() 回归 506*13
鸢尾花数据集 load_iris() 分类 150*4
糖尿病数据集 load_diabetes() 回归 442*10
体能训练数据集 load_linnerud()
手写数字图像数据集 load_digits() 分类 5620*64
Olivetti脸部图像数据集 fetch_olivetti_faces 降维 400*64*64
新闻分类数据集 fetch_20newsgroups() 分类
带标签的人脸数据集 fetch_lfw_people() 分类、降维
路透社新闻语料数据集 fetch_rcv1() 分类 804414*47236

 上表的函数默认参数都为空,除了默认参数之外,还包括以下参数:

  • return_X_y:表示是否返回target(即类别属性)。默认为False,只返回data(即特征属性)。
  • n_class:表示返回数据的类别数,如n_class=5,则返回0~4含有5个类别的样本。

例:导入Iris数据集并输出该数据集的特征属性和类别标签。

from sklearn.datasets import load_iris
dataSet=load_iris()  #导入Iris数据集
data=dataSet['data']  #data是特征数据集
label=dataSet['target']  #label是类别标签
feature=dataSet['feature_names']  #特征的名称
target=dataSet['target_names']  #标签(类别)的名称
print(feature,target)

 程序运行结果如下:

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] ['setosa' 'versicolor' 'virginica']

由结果可知该数据集是一个有4个特征属性的三分类问题的数据集。

2.2 利用sklearn生成随机的数据集

在sklearn的datasets模块中有很多类似make_<name>的函数,用来自动生成具有各种形状分布的数据集,这些函数可以“无中生有”地生成随机数据。常用的函数如下:

  • make_circles():生成环形数据,产生二维二元分类数据集,可以为数据集添加噪声,还可以为二元分类器产生一些环形判决界面的数据。
  • make_moons():生成月亮形(半环形)数据,其他特征与make_circles()相同。
  • make_blobs():生成多类单标签数据集,为每个类分配一个或多个正态分布(球形)的点集。
  • make_classification():生成多类单标签数据集,为每个类分配一个或多个正态分布的点集,该函数提供了为数据添加噪声的方式,包括维度相关性、无效特征及冗余特征等。
  • make_guassian_quantiles():将一个单高斯分布的点击划分为两个数量均等的点集。

例:生成环形、月亮形和球形数据集。

from sklearn.datasets import make_circles
from sklearn.datasets import make_moons
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(12,4))
plt.subplot(131)
x1,y1=make_circles(n_samples=1000,factor=0.5,noise=0.1)
#factor表示里圈与外圈的距离之比,每圈共有n_samples/2个点
plt.scatter(x1[:,0],x1[:,1],marker='o',c=y1)
plt.subplot(132)
x1,y1=make_moons(n_samples=1000,noise=0.1)
plt.scatter(x1[:,0],x1[:,1],marker='o',c=y1)
plt.subplot(133)
x1,y1=make_blobs(n_samples=100,n_features=2,centers=3)
plt.scatter(x1[:,0],x1[:,1],c=y1);
plt.show()

sklearn库,机器学习,机器学习,sklearn,python,大数据,人工智能

2.3 读入自己创建的数据集

Pandas是python的一个数据分析库,可以读取和写入文件。使用Pandas不仅可以读取表格型数据,如Excel文件。CSV文件或txt文件等,而且可以将其转换成DataFrame类型的数据结构,然后就可以通过DataFrame进行行和列操作及数据分析等工作了。例如:

import pandas as pd  #导入Pandas库
data=pd.read_excel('D:\\18ds.xlsx')  #读取Excel文件
data2=pd.read_csv('C:\\lr2.xlsx')  #该函数可读取CSV或txt文件
print(data)

三、数据预处理

在机器学习中,获取的原始样本数据往往存在缺失值、重复值等问题,在使用之前必须进行数据预处理。数据预处理没有标准的流程,一般包括:去除唯一属性、处理缺失值、属性编码、数据标准化、特征选择、主成分分析几步。

3.1 数据标准化

对于样本数据来说,首先需要消除样本特征之间不同数量级的影响,而数据标准化就是用来消除不同量级影响的。常用的数据标准化方法有如下两种:

  • min-max标准化(归一化):对于任意属性A,设minA和maxA分别为属性A中的最小值和最大值,将A中的一个原始值x通过min-max标准化映射成在区间[0,1]中的值。其公式为:

新数据=(原数据 - 最小值)/(最大值 - 最小值)

这样标准化后,所有属性都将变成区间[0,1]中的值。

  • Z-score标准化(规范化):对于任意属性A,将A的原始值x使用Z-score标准化到 。Z-score标准化方法适用于属性A总体的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。其公式为:

新数据=(原数据 - 均值)/标准差

 均值和标准差都是在样本集中定义的,而不是在单个样本中定义的。标准化是针对某个属性而言的,涉及所有样本在该属性中的值。

3.2 sklearn中的数据标准化函数

sklearn提供了一个专门用于数据预处理的模块sklearn.preprocessing,这个模块中集成了很多数据预处理的方法,包括数据标准化函数,常见的函数如下:
(1)二值化函数binarizer():将数据根据给定的阈值映射到0和1,其中,阈值默认是0.0。该函数可接受float类型的阈值,数据大于阈值时映射为1,小于等于阈值时映射为0。

例:数据矩阵的二值化举例。

from sklearn.preprocessing import Binarizer
X=[[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]]  #数据矩阵
binary=Binarizer()
transformer=binary.fit(X)   #fit does nothing.
transformer.transform(X)
Binarizer(copy=True,threshold=0.0)
print(transformer.transform(X))

结果如下: 

[[1. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]]

说明:
binary=Binarizer()实例化一个阈值为0的二值化对象,transformer=binary.fit(X)使用这个二值化对象的fit()方法去拟合X,返回一个二值化类的实例化对象。注意此时X还没有被二值化,transformer.transform(X)调用二值化对象的transform()方法对X进行二值化,返回二值化后的X。fit()方法和transform()方法也可以合并为一个方法fit_transform()。

(2)归一化函数MinMaxScaler():将数据均匀地映射到给定的range(min,max)中,默认range为(0,1)。

例:数据矩阵的归一化举例。

from sklearn.preprocessing import MinMaxScaler
data=[[-1,6],[-0.5,2],[0,10],[1,18]]
scaler=MinMaxScaler()
scaler.fit(data)
MinMaxScaler(copy=True,feature_range=(0,1))
print('range的最大值为:',scaler.data_max_)
print('range的最小值为:',scaler.data_min_)
print(scaler.transform(data))

程序的运行结果如下:

range的最大值为: [ 1. 18.]
range的最小值为: [-1.  2.]
[[0.   0.25]
 [0.25 0.  ]
 [0.5  0.5 ]
 [1.   1.  ]]

说明:
scaler=MinMaxScaler()实例化一个最小/最大化对象,scaler.fit(data)计算data的最小值和最大值并返回一个对象。此时可查看此对象属性值 scaler.data_max_,然后用scaler.transform(data)对data进行归一化并返回归一化后的结果。

(3)Z-score标准化函数scale():通过计算训练集中样本的相关统计量(均值和单位方差)存储均值和标准差,对每个特征单独进行中心化和缩放,使用变换方法测试数据。

标准化有两种实现方式,一种是调用sklearn.preprocessing.scale()函数,另一种是实例化一个sklearn.preprocessing.StandardScaler()对象。后者的好处是可以保存通过训练得到的参数(均值、方差),直接使用sklearn.preprocessing.StandardScaler()对象对测试数据进行转换。

例:数据矩阵的Z-score标准化举例。

from sklearn.preprocessing import StandardScaler
data=[[0,0],[0,0],[1,1],[1,1]]
scaler=StandardScaler()
print(scaler.fit(data))
StandardScaler(copy=True,with_mean=True,with_std=True)
print(scaler.mean_)  #输出均值
print(scaler.var_)  #输出标准差
print(scaler.transform(data))  #标准化矩阵data
print(scaler.transform([[2,2]]))  #标准化新数据

程序运行的结果如下:

StandardScaler()
[0.5 0.5]
[0.25 0.25]
[[-1. -1.]
 [-1. -1.]
 [ 1.  1.]
 [ 1.  1.]]
[[3. 3.]]

3.3 正则化函数Normalizer()

正则化是将每个样本都缩放到单位范数(每个样本的范数为1),如果后面要使用二次型(点积)或者其他核函数计算两个样本之间的相似度,这个方法会很有用。正则化在逻辑回归、支持向量机、神经网络中经常使用。

正则化的主要思想是对每个样本计算其p-范数,然后让该样本中的每个元素除以该范数,这样处理的结果是使处理后的每个样本的p-范数(11-norm或12-norm)等于1。p-范数的计算公式如下: 

sklearn库,机器学习,机器学习,sklearn,python,大数据,人工智能

例:数据矩阵的正则化举例。

from sklearn.preprocessing import Normalizer
X=[[4,1,2,2],[1,3,9,3],[5,7,5,1]]
transformer=Normalizer().fit(X)
print(transformer.transform(X))

 程序的运行结果如下:

[[0.8 0.2 0.4 0.4]
 [0.1 0.3 0.9 0.3]
 [0.5 0.7 0.5 0.1]]

四、数据的降维

降维算法中的“降维”,指的是降低特征矩阵中特征的数量。降维的目的是让算法运算更快,效果更好,但其实还有另一个益处:数据可视化。图像和特征矩阵的维度是可以相互对应的,即一个特征对应一个特征向量,对应一个坐标轴。因此,三维及以下的特征矩阵是可以被可视化的。

主成分分析法(PCA)是最常用的一种降维方法,通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等。矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。

在sklearn的decomposition模块中,PCA类用来实现主成分分析。

例:用PCA方法对鸢尾花数据进行PCA降维(由四维降成二维)。

import matplotlib.pyplot as plt  #加载Matplotlib用于数据的可视化
from sklearn.decomposition import PCA  #加载PCA算法包
from sklearn.datasets import load_iris
data=load_iris()  #载入Iris数据集
y=data.target
x=data.data
pca=PCA(n_components=2)  #加载PCA算法,设置降维后的维度为2
reduced_x=pca.fit_transform(x)  #对样本的特征属性集进行降维
red_x,red_y=[],[]  #保存第0类样本
blue_x,blue_y=[],[]  #保存第1类样本
green_x,green_y=[],[]  #保存第2类样本
for i in range(len(reduced_x)):  #该数据集有3个类别,因此y[i]=0,1,2
    if y[i]==0:                  #reduced_x[i]表示第i个样本降维后的结果
        red_x.append(reduced_x[i][0])
        red_y.append(reduced_x[i][1])
    elif y[i]==1:
        blue_x.append(reduced_x[i][0])
        blue_y.append(reduced_x[i][1])
    else:
        green_x.append(reduced_x[i][0])
        green_y.append(reduced_x[i][1])
plt.scatter(red_x,red_y,c='r',marker='x')  #可视化
plt.scatter(blue_x,blue_y,c='b',marker='D')
plt.scatter(green_x,green_y,c='g',marker='.')
plt.show()

sklearn库,机器学习,机器学习,sklearn,python,大数据,人工智能文章来源地址https://www.toymoban.com/news/detail-716652.html

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

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

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

相关文章

  • 《人工智能-机器学习》数据预处理和机器学习算法(以企鹅penguins数据集为例)

    本项目使用到的数据集链接: https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/6tree/penguins_raw.csv 加载给定或者自行选定的数据集,对数据进行查看和理解,例如样本数量,各特征数据类型、分布、特征和标签所表达的含义等,然后对其进行数据预处理工作,包括但不限于对敏感数据

    2024年02月10日
    浏览(61)
  • 数据分析的未来:机器学习和人工智能的革命

    数据分析是现代科学和工业的核心技术,它涉及到大量的数据收集、存储、处理和分析。随着数据的增长和复杂性,传统的数据分析方法已经不能满足需求。机器学习和人工智能技术正在革命化数据分析领域,为我们提供了更高效、准确和智能的解决方案。 在本文中,我们将

    2024年02月20日
    浏览(147)
  • Python到机器学习再到深度学习:一条完整的人工智能学习之路

    简短介绍Python在数据科学和机器学习领域的重要性。 概述本文的目标:提供一个清晰的学习路径,帮助初学者从Python基础学起,逐步过渡到机器学习和深度学习。 学习资源 :推荐一些学习Python的好书籍和在线课程。 书籍 :《Python Crash Course》Eric Matthes,适合初学者。 在线课

    2024年02月03日
    浏览(86)
  • 【人工智能与机器学习】决策树ID3及其python实现

    决策树(Decision Tree)是一类常见的机器学习方法,是一种非常常用的分类方法,它是一种监督学习。常见的决策树算法有ID3,C4.5、C5.0和CART(classification and regression tree),CART的分类效果一般要优于其他决策树。 决策树是基于树状结构来进行决策的,一般地,一棵决策树包含

    2024年02月08日
    浏览(105)
  • 数据预处理与模型评估【机器学习、人工智能、实际事例】

    在机器学习领域,数据预处理和模型评估是两个至关重要的步骤。它们确保我们构建的机器学习模型能够从数据中有效地学习并做出准确的预测。本文将详细介绍数据预处理和模型评估的概念,并通过现实中的例子来阐述它们之间的密切关系。 什么是数据预处理? 数据预处

    2024年02月07日
    浏览(67)
  • 毕业设计选题:基于机器学习的虚假新闻识别系统 人工智能 python

      目录  前言 设计思路 一、课题背景与意义 二、算法理论原理 2.1 机器学习 2.2 深度学习  三、检测的实现 3.1 数据集 3.3 实验及结果分析 最后        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精

    2024年01月19日
    浏览(80)
  • 数据分析师在人工智能与机器学习领域的重要作用

    人工智能(Artificial Intelligence, AI)和机器学习(Machine Learning, ML)是当今最热门的技术领域之一,它们正在驱动我们进入第四次工业革命。这些技术正在改变我们的生活方式、工作方式和社会结构。数据分析师在这个领域的作用非常重要,因为他们是在这个领域中的核心组成部分。

    2024年02月19日
    浏览(48)
  • 数据一致性在人工智能与机器学习中的应用

    数据一致性是指在分布式系统中,当多个节点或进程访问和修改共享数据时,确保所有节点或进程看到的数据都是一致的状态。在人工智能(AI)和机器学习(ML)领域,数据一致性是一个重要且复杂的问题。随着数据规模的增加,分布式计算变得越来越普遍,这使得数据一致性问

    2024年02月21日
    浏览(57)
  • 数据产品化的人工智能与机器学习:如何融合到数据产品中

    人工智能(Artificial Intelligence, AI)和机器学习(Machine Learning, ML)是当今最热门的技术领域之一,它们在各个行业中发挥着越来越重要的作用。然而,在实际应用中,将人工智能和机器学习技术融入到数据产品中仍然面临着许多挑战。这篇文章将探讨如何将人工智能和机器学习技术

    2024年02月19日
    浏览(51)
  • 人工智能+物联网:从传感器到机器学习:智能化的数据采集和分析

    作者:禅与计算机程序设计艺术 大数据时代是一个数据爆炸的时代。如何从海量数据中快速找到隐藏在其中价值的信息,成为当今企业竞争中不可或缺的能力?人工智能和物联网正在成为经济领域和产业界的主流,新一代互联网物联网平台、AI智能终端、海量数据和算法驱动

    2024年02月09日
    浏览(73)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包