当前位置: 首页 > article >正文

【升华】人工智能python重要库scikit-learn学习

一、人工智能python重要库scikit-learn

在人工智能10大算法中,有8个算法都导入了 sklearn库

from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LinearRegression
from sklearn import metrics

# 导入所需的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
 

等等。说明 sklearn在人工智能,机器学习方面已经不可或缺,同时它也包含了大量有用的算法封装函数。总得来说,10大算法中的数学问题,均被封装在这些函数当中,我们在实际的模型构建过程中只是拿来主义。

Sklearn 全称 Scikit-learn。它涵盖了分类、回归、聚类、降维、模型选择、数据预处理六大模块,降低机器学习实践门槛,将复杂的数学计算集成为简单的函数,并提供了众多公开数据集和学习案例。

官方文档:https://scikit-learn.org

二分析学习sklearn中各种模块的作用

1、Sklearn 库的 dataset 模块

 

加载数据集

Sklearn 库的 dataset 模块集成了部分数据分析的经典数据集,可以使用这些数据集进行数据预处理、建模等操作,熟悉 Sklearn 的数据处理流程和建模流程。

datasets模块常用数据集的加载函数与解释如下表所示

使用 Sklearn 进行数据预处理会用到 Sklearn 提供的统一接口——转换器(Transformer)。

加载后的数据集可以视为一个字典,几乎所有的 Sklearn 数据集均可以使用 data、target、feature_names、DESCR 分别获取数据集的数据、标签、特征名称和描述信息。

from sklearn.datasets import load_breast_cancer # 导入乳腺癌患者数据
cancer = load_breast_cancer()                   # 实例化对象
print(cancer.keys())                            # 查看字典
print(cancer['data'].shape)                     # 查看数据结构
print(cancer['target'].shape)                   # 查看单个标签
# print(cancer['DESCR'])                        # 查看数据集介绍
print(cancer['filename'])                       # 查看数据集所处的位置

dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])
(569, 30)
(569,)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/datasets/data/breast_cancer.csv

 

划分数据集

Sklearn 的 model selection 模块提供了 train_test_spilt 函数,能够对数据集进行拆分,其使用格式如下:

sklearn.model_selection.train_test_spilt(arrays,options)

X_train, X_test, y_train, y_test = train_test_split(train_data, train_target, test_size, random_state,shuffle)

 

将数据集划分训练集和测试集,典型的划分方式是训练集占总样本的80%,测试集占总样本的20%:

  • 训练集 train set:用于训练模型
  • 验证集 validation set:用于训练过程中模型性能评估
  • 测试集 test set:用于检验最终的模型的性能

train_test_spilt 函数根据传入的数据,分别将传入的数据划分训练集和测试集。如果传入的是1组数据,那么生成的就是这一组数据随机划分后的训练集和测试集,总共2组。如果传入的是2组数据,则生成的训练集和测试集分别2组,总共4组。train_test_spilt 是最常用的数据划分方法,在 model_selection 模块中还提供了其他数据集划分的函数,如 PredefinedSplit、ShuffleSplit 等。

使用 Sklearn 转换器处理数据

在数据分析过程中,各类特征处理相关操作都需要对训练集和测试集分开操作,需要将训练集的操作规则、权重系数等应用到测试集中。如果使用 Pandas,则应用至测试集的过程相对繁琐,使用 sklearn 转化器(transformer)可以解决这一困扰。使用 Sklearn 转换器能够实现对传入的 Numpy 数组进行标准化处理、归一化处理、二值化处理、PCA 降维等操作。

 

使用 Sklearn 构建并评价聚类模型

聚类与分类的区别在于聚类不依赖于预先定义的类,没有预定义的类和样本——聚类是一种无监督的数据挖掘任务。

聚类的概念

  • 聚类是把各不同的个体分割为有更多相似性子集合的工作
  • 聚类生成的子集合称为簇

聚类的要求

  • 生成的簇内部的任意两个对象之间具有较高的相似度
  • 属于不同簇的两个对象间具有较高的相异度
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
iris = load_iris()

# 实例化K-Means聚类算法类
k_means = KMeans(n_clusters=3)    # 类中心个数为3
k_means.fit(iris['data'])         # 执行聚类操作

print(iris.target)                # 查看聚类标签
print(k_means.labels_)            # 查看各样本聚类标签,聚类标签顺序前后无所谓,重要的是这些样本是不是同一类
print(k_means.cluster_centers_)   # 查看各聚类中心,因为每个样本有四个值,这里展示同一类样本的中心值

使用 Sklearn 构建并评价分类模型

使用 Sklearn 构建并评价回归模型

 

使用 Sklearn 构建并评价逻辑回归模型

数据集介绍

鸢尾花数据(iris)数据集一共有150行数据,每行包含5个变量,其中4个特征变量,1个目标分类变量。

共有150个样本,目标变量为“花的类别”其都属于鸢尾属下的三个亚属,分别是变色鸢尾(Iris-versicolor)、山鸢尾(Iris-setosa)和维吉尼亚鸢尾(Iris-virginica)。

包含的三种鸢尾花的四个特征,分别是花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)、花瓣宽度(petal width)。

 

任务描述

使用 Sklearn 实现鸢尾花分类,根据鸢尾花的花萼和花瓣大小将其分为三种不同的品种。

配置环境

# 基础函数库
import numpy as np 
import pandas as pd

# 绘图函数库
import matplotlib.pyplot as plt
import seaborn as sns

# 导入逻辑回归模型函数
from sklearn.linear_model import LogisticRegression
from sklearn import metrics

加载数据

# 利用 sklearn 中自带的 iris 数据作为数据载入
from sklearn.datasets import load_iris

# 得到数据特征
data = load_iris()

# 得到数据对应的标签
iris_target = data.target

# 利用Pandas转化为DataFrame格式
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names)


http://www.kler.cn/news/357185.html

相关文章:

  • 【ARM】MDK-Flex服务管理软件使用说明
  • 基于SpringBoot+Vue+uniapp微信小程序的校园反诈骗微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
  • 【华为HCIP实战课程十三】OSPF网络中3类LSA及区域间负载均衡,网络工程师
  • 读人工智能全传16读后总结与感想兼导读
  • 苍穹外卖笔记
  • LeetCode 206 - 反转链表
  • YoloV10改进:Block改进|使用ContextAggregation模块改善C2f模块|即插即用
  • 探索C++的工具箱:双向链表容器类list(1)
  • 【linux】Microsoft Edge 的 Bookmarks 文件存储位置
  • 三大编程思想(POP、OOP、AOP、FOP)及oop 五大设计原则
  • 用Python构建动态折线图:实时展示爬取数据的指南
  • 【74LS48译码器】2022-1-2
  • S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器
  • T-SNE
  • 接口测试 —— 如何测试加密接口?
  • 【安当产品应用案例100集】022-阿里云、腾讯云、华为云等公有云上ECS服务器中数据加密保护方案
  • C++容器适配器的模拟实现-stack、queue、priority_queue
  • 基于SSM高校普法系统的设计
  • 【wpf】06 HTTP/HTTPS请求的相关设计
  • 【k8s系列】深度分析云原生和k8s什么关系?