机器学习 数据集

数据集

  • 1. scikit-learn工具介绍
    • 1.1 scikit-learn安装
    • 1.2 Scikit-learn包含的内容
  • 2 数据集
    • 2.1 sklearn玩具数据集介绍
    • 2.2 sklearn现实世界数据集介绍
    • 2.3 sklearn加载玩具数据集
      • 示例1:鸢尾花数据
      • 示例2:分析糖尿病数据集
    • 2.4 sklearn获取现实世界数据集
      • 示例:获取20分类新闻数据
    • 2.5数据集的划分
      • (1) 函数
      • (2)示例
        • 列表数据集划分
        • 二维数组数据集划分
        • DataFrame数据集划分
        • 字典数据集划分
        • 鸢尾花数据集划分
        • 现实世界数据集划分

1. scikit-learn工具介绍

在这里插入图片描述

  1. Python语言机器学习工具
  2. Scikit-learn包括许多智能的机器学习算法的实现
  3. Scikit-learn文档完善,容易上手,丰富的API接口函数
  4. Scikit-learn官网:https://scikit-learn.org/stable/#
  5. Scikit-learn中文文档:https://scikitlearn.com.cn/
  6. scikit-learn中文社区

1.1 scikit-learn安装

参考以下安装教程:https://www.sklearncn.cn/62/

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn

1.2 Scikit-learn包含的内容

在这里插入图片描述

2 数据集

2.1 sklearn玩具数据集介绍

数据量小,数据在sklearn库的本地,只要安装了sklearn,不用上网就可以获取
在这里插入图片描述

2.2 sklearn现实世界数据集介绍

数据量大,数据只能通过网络获取
在这里插入图片描述

2.3 sklearn加载玩具数据集

示例1:鸢尾花数据

from sklearn.datasets import load_iris
iris = load_iris()#鸢尾花数据

鸢尾花数据集介绍

特征有:

​ 花萼长 sepal length

​ 花萼宽sepal width

​ 花瓣长 petal length

​ 花瓣宽 petal width

三分类:

​ 0-Setosa山鸢尾

​ 1-versicolor变色鸢尾

​ 2-Virginica维吉尼亚鸢尾

  • sklearn.datasets.load_iris():加载并返回鸢尾花数据集

在这里插入图片描述
sklearn数据集的使用
sklearn数据集返回值介绍
load和fetch返回的数据类型datasets.base.Bunch(字典格式)

data:特征数据数组,是[n_samples * n_features]的二维numpy.ndarry数组
target:标签数组,是n_samples的一维numpy.ndarry数组
DESCR:数据描述
feature_names:特征名,新闻数据,手写数字、回归数据集没有
target_names:标签名
代码如下:

#获取鸢尾花数据集的库
from sklearn.datasets import load_iris
import numpy as np
import pandas as pd
# 获取鸢尾花数据集
iris=load_iris()
# iris字典中有几个重要属性: 
# data 特征
data=iris.data
# print('鸢尾花数据集的前5条数据',data[:5])
'''[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2]]'''# feature_names 特征描述
feature_names=iris.feature_names
print(feature_names)#['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
# target  目标
target=iris.target
# 获取前五条数据的目标值
print(target[:5])# [0 0 0 0 0]
# target_names  目标描述
target_names=iris.target_names
print(target_names) #['setosa(山鸢尾)' 'versicolor(变色鸢尾花)' 'virginica(维基利亚鸢尾)']
# DESCR 数据集的描述
res=iris.DESCR
print(res)
# filename 下后到本地保存后的文件名
iris_filename=iris.filename
print(iris_filename)#iris.csv

示例2:分析糖尿病数据集

这是回归数据集,有442个样本,有可能就有442个目标值。
代码如下:

# 获取糖尿病数据集的库
from sklearn.datasets import load_diabetes
import numpy as np
import pandas as pd
dia=load_diabetes()
# print(dia)
data=dia.data
# print('糖尿病数据的特征的前五条',data[:5])
'''
糖尿病数据的特征的前五条 [[ 0.03807591  0.05068012  0.06169621  0.02187239 -0.0442235  -0.03482076-0.04340085 -0.00259226  0.01990749 -0.01764613][-0.00188202 -0.04464164 -0.05147406 -0.02632753 -0.00844872 -0.019163340.07441156 -0.03949338 -0.06833155 -0.09220405][ 0.08529891  0.05068012  0.04445121 -0.00567042 -0.04559945 -0.03419447-0.03235593 -0.00259226  0.00286131 -0.02593034][-0.08906294 -0.04464164 -0.01159501 -0.03665608  0.01219057  0.02499059-0.03603757  0.03430886  0.02268774 -0.00936191][ 0.00538306 -0.04464164 -0.03638469  0.02187239  0.00393485  0.015596140.00814208 -0.00259226 -0.03198764 -0.04664087]]
'''
#获取特征名
feature_names=dia.feature_names
print(feature_names) #['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']
#获取目标值
target=dia.target
print(target[:5]) #[151.  75. 141. 206. 135.]
#获取目标名
# target_names=dia.target_names
# print(target_names[:5]) 因为糖尿病数据集是回归的,所以它的目标值是线上的点没有对应的名称
#获取糖尿病的描述
res=dia.DESCR
# print(res)

注意:

  • 因为糖尿病数据集是回归的,所以它的目标值是线上的点没有对应的名称

2.4 sklearn获取现实世界数据集

(1)所有现实世界数据,通过网络才能下载后,默认保存的目录可以使用下面api获取。实际上就是保存到home目录

from sklearn import datasets
datasets.get_data_home()  #查看数据集默认存放的位置

(2)下载时,有可能回为网络问题而出问题,要“小心”的解决网络问题,不可言……

(3)第一次下载会保存的硬盘中,如果第二次下载,因为硬盘中已经保存有了,所以不会再次下载就直接加载成功了。

示例:获取20分类新闻数据

(1)使用函数: sklearn.datasets.fetch_20newsgroups(data_home,subset)

(2)函数参数说明:

(2.1) data_home

None这是默认值,下载的文件路径为 “C:/Users/ADMIN/scikit_learn_data/20news-bydate_py3.pkz”
自定义路径例如 “./src”, 下载的文件路径为“./20news-bydate_py3.pkz”

(2.2) subset

“train”,只下载训练集
“test”,只下载测试集
“all”, 下载的数据包含了训练集和测试集

(2.3) return_X_y,决定着返回值的情况

False,这是默认值
True,

(3) 函数返值说明:

当参数return_X_y值为False时, 函数返回Bunch对象,Bunch对象中有以下属性*data:特征数据集, 长度为18846的列表list, 每一个元素就是一篇新闻内容, 共有18846篇*target:目标数据集,长度为18846的数组ndarray, 第一个元素是一个整数,整数值为[0,20)*target_names:目标描述,长度为20的list*filenames:长度为18846的ndarray, 元素为字符串,代表新闻的数据位置的路径当参数return_X_y值为True时,函数返回值为元组,元组长度为2, 第一个元素值为特征数据集,第二个元素值为目标数据集

代码

import sklearn.datasets as datasets
from sklearn.datasets import fetch_20newsgroups
import numpy as np
import pandas as pd
path=datasets.get_data_home()
news=fetch_20newsgroups(data_home='./src',subset='all')
# print(news.data[0])
# print(news.target_names[:5])data,target=fetch_20newsgroups(data_home='./src',subset='all',return_X_y=True)

2.5数据集的划分

"""
1. 复习不定长参数
一个"*" 把多个参数转为元组
两个"*" 把多个关键字参数转为字典 
"""
def m(*a, **b):print(a)       #('hello', 123)print(b)       #{'name': '小王', 'age': 30, 'sex': '男'}    
m("hello", 123,  name="小王", age=30, sex="男")2. 复习列表值的解析
list = [11,22,33]
a, b, c = list # a=11   b=22  c=33
a, b = ["小王",  30] #a="小王" b=30

(1) 函数

sklearn.model_selection.train_test_split(*arrays,**options)
参数
(1) *array 这里用于接收1到多个"列表、numpy数组、稀疏矩阵或padas中的DataFrame"。	
(2) **options, 重要的关键字参数有:test_size 值为0.0到1.0的小数,表示划分后测试集占的比例random_state 值为任意整数,表示随机种子,使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同strxxxx 分层划分,填y
2 返回值说明返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型,list中对应被划分出来的两部分就是什么类型

(2)示例

列表数据集划分

因为随机种子都使用了相同的整数(22),所以划分的划分的情况是相同的。
代码如下:

# 导入数据集划分的库
from sklearn.model_selection import train_test_split
# 1.列表数据集的划分
x=[1,2,3,4,5,6,7,8,9]#作为特征值
y=['1a','2a','3a','4a','5a','6a','7a','8a','9a']#作为目标值
# x,y的长度要一致
# 直接对特征值进行划分为训练集0.8和测试集0.2
x_train,x_test=train_test_split(x,test_size=0.2,shuffle=True,random_state=5)
# shuffle:表示是否打乱,random_state:设置随机种子
# print(x_train,x_test)#[9, 5, 8, 2, 1, 3, 6] [7, 4]顺序是随机的
# 对特征值和目标值进行划分为训练集0.8和测试集0.2
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=5)
print(x_train,x_test)#[9, 8, 2, 1, 6, 7, 4] [3, 5]
print(y_train,y_test)#['9a', '8a', '2a', '1a', '6a', '7a', '4a'] ['3a', '5a']
# 划分时特征值和目标值划分的位置是一一对应的

注意:

  • 1.x(特征值),y(目标值)的长度要一致
  • 2.划分时特征值和目标值划分的位置是一一对应的
二维数组数据集划分
# 2.二维数组数据集划分
x=np.arange(16).reshape(4,4)
y=np.arange(0,160,10).reshape(4,4)
# print(x)
# print(y)
# x,y的长度要一致
# 直接对特征值进行划分为训练集0.8和测试集0.2
x_train,x_test=train_test_split(x,test_size=0.2,shuffle=True,random_state=5)
# shuffle:表示是否打乱,random_state:设置随机种子
# print(x_train,x_test)#[9, 5, 8, 2, 1, 3, 6] [7, 4]顺序是随机的
# 对特征值和目标值进行划分为训练集0.8和测试集0.2
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=5)
print(x_train)
print("="*20)
print(x_test)
print("="*20)
print(y_train)
print("="*20)
print(y_test)
'''
[[ 4  5  6  7][ 8  9 10 11][12 13 14 15]]
====================
[[0 1 2 3]]
====================
[[ 40  50  60  70][ 80  90 100 110][120 130 140 150]]
====================
[[ 0 10 20 30]]
'''
DataFrame数据集划分

可以划分DataFrame, 划分后的两部分还是DataFrame

x= np.arange(1, 16, 1)
x.shape=(5,3)
df = pd.DataFrame(x, index=[1,2,3,4,5], columns=["one","two","three"])
# print(df)x_train,x_test = train_test_split(df,  test_size=0.4, random_state=22)
print("\n", x_train)
print("\n", x_test)
'''one  two  three
4   10   11     12
1    1    2      3
5   13   14     15one  two  three
2    4    5      6
3    7    8      9
'''
字典数据集划分

可以划分非稀疏矩阵

用于将字典列表转换为特征向量。这个转换器主要用于处理类别数据和数值数据的混合型数据集

1.对于类别特征DictVectorizer 会为每个不同的类别创建一个新的二进制特征,如果原始数据中的某个样本具有该类别,则对应的二进制特征值为1,否则为0。

2.对于数值特征保持不变,直接作为特征的一部分

这样,整个数据集就被转换成了一个适合机器学习算法使用的特征向量形式
代码如下:

# 字典数据集的划分
# 引入字典向量化的模块
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
# 创建一个字典
data = [{'city':'成都', 'age':30, 'temperature':20}, {'city':'重庆','age':33, 'temperature':60}, {'city':'北京', 'age':42, 'temperature':80},{'city':'上海', 'age':22, 'temperature':70},{'city':'成都', 'age':72, 'temperature':40},]
# 将字典进行向量化并转换为稀疏矩阵
transfer=DictVectorizer(sparse=True)
# 将data进行向量化
data_new=transfer.fit_transform(data)
# print("data_new\n",data_new)
'''
<Compressed Sparse Row sparse matrix of dtype 'float64'with 15 stored elements and shape (5, 6)>Coords        Values(0, 0)        30.0(0, 3)        1.0(0, 5)        20.0(1, 0)        33.0(1, 4)        1.0(1, 5)        60.0(2, 0)        42.0(2, 2)        1.0(2, 5)        80.0(3, 0)        22.0(3, 1)        1.0(3, 5)        70.0(4, 0)        72.0(4, 3)        1.0(4, 5)        40.0
'''
data=data_new.toarray()
# print(x,type(x))
'''
[[30.  0.  0.  1.  0. 20.][33.  0.  0.  0.  1. 60.][42.  0.  1.  0.  0. 80.][22.  1.  0.  0.  0. 70.][72.  0.  0.  1.  0. 40.]] <class 'numpy.ndarray'>'''
x=data[:,:5]
y=data[:,5]
# print(x)
# print(y)
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=42)
print(x_train.shape,x_test.shape)
print(y_train.shape,y_test.shape)
print(y_train)
'''
(4, 5) (1, 5)
(4,) (1,)
[40. 80. 20. 70.]
'''

注意:

  • 因为机器学习时只能对数字进行处理字典中不是数字的键不能直接处理,需要进行特征处理(向量化就是把他转化为数字)
鸢尾花数据集划分

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
x,y=load_iris(return_X_y=True)
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,shuffle=True,random_state=42)
print(x_train.shape,x_test.shape)
print(y_train.shape,y_test.shape)
print(y_train)
'''
(120, 4) (30, 4)
(120,) (30,)
[0 0 1 0 0 2 1 0 0 0 2 1 1 0 0 1 2 2 1 2 1 2 1 0 2 1 0 0 0 1 2 0 0 0 1 0 12 0 1 2 0 2 2 1 1 2 1 0 1 2 0 0 1 1 0 2 0 0 1 1 2 1 2 2 1 0 0 2 2 0 0 0 12 0 2 2 0 1 1 2 1 2 0 2 1 2 1 1 1 0 1 1 0 1 2 2 0 1 2 2 0 2 0 1 2 2 1 2 11 2 2 0 1 2 0 1 2]'''
现实世界数据集划分
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
import numpy as np
news = fetch_20newsgroups(data_home=None, subset='all')
list = train_test_split(news.data, news.target,test_size=0.2, random_state=22)
# """
# 返回值是一个list:其中有4个值,分别为训练集特征、测试集特征、训练集目标、测试集目标
# 与iris相同点在于x_train和x_test是列表,而iris是
# """
x_train, x_test, y_train, y_test = list
#打印结果为: 15076 3770 (15076,) (3770,)
print(len(x_train), len(x_test), y_train.shape, y_test.shape)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/80657.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/80657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-c语言串口程序

c语言串口程序 // C library headers #include <stdio.h> #include <string.h>// Linux headers #include <fcntl.h> // Contains file controls like O_RDWR #include <errno.h> // Error integer and strerror() function #include <termios.h&g…

TCP IP

TCP/IP 通信协议&#xff0c;不是单一协议&#xff0c;是一组协议的集合 TCP IP UDP 1.建立链接 三次握手 第一步&#xff1a;客户端发送一个FIN报文&#xff0c;SEQX,等待服务器回应 第二步&#xff1a;服务器端受到&#xff0c;发送ackx1,seqy, 等待客户端回应 第三步&am…

用uniapp在微信小程序实现画板(电子签名)功能,使用canvas实现功能

效果&#xff1a; 功能&#xff1a;实现重签 退出 保存 等功能 解决的问题: 电子签名画布抖动问题解 注意&#xff1a; 保存的时候上传到自己的服务器地址&#xff0c;后端返回图片地址 代码&#xff1a; <template><view><view class"signature&qu…

机器学习经典算法:用决策树原理优化新能源汽车续航能力

🔥 “用决策树重构新能源车能量大脑!算法推导+代码实战全解,续航暴增15%” 决策树算法就像我们生活中做决策的 “流程指南”,通过层层判断得出最终结论。比如你去超市买水果,站在琳琅满目的货架前,就不自觉地用上了决策树思维。首先,你可能会想 “今天想吃酸的还是甜的…

【Unity中的数学】—— 四元数

一、四元数的定义&#x1f60e; 四元数是一种高阶复数&#xff0c;是一个四维空间的概念&#xff0c;相对于复数的二维空间。它可以表示为 q s i x j y k z q s ix jy kz qsixjykz&#xff0c;其中 s s s、 x x x、 y y y、 z z z 都是实数&#xff0c;并且满足 i …

macOS 15.4.1 Chrome不能访问本地网络

前言 最近使用macmini m4&#xff0c;自带macOS15系统&#xff0c;对于开发者简直是一言难尽&#xff0c;Chrome浏览器的本地网络有bug&#xff0c;可以访问本机&#xff0c;但是不能访问路由器上的其他机器&#xff0c;路由器提供的页面也不能访问&#xff0c;如下是折腾解决…

浏览器刷新结束页面事件,调结束事件的接口(vue)

浏览器刷新的时候&#xff0c;正在进行中的事件结束掉&#xff0c;在刷新浏览器的时候做一些操作。 如果是调接口&#xff0c;就不能使用axios封装的接口&#xff0c;需要使用原生的fetch。 找到公共的文件App.vue 使用window.addEventListener(‘beforeunload’, function (e…

TCP/IP 模型每层的封装格式

TCP/IP 模型是一个四层网络架构&#xff0c;每一层在数据传输时都会对数据进行封装&#xff0c;添加相应的头部&#xff08;和尾部&#xff09;信息。以下是各层的封装格式及关键字段说明&#xff1a; 1. 应用层&#xff08;Application Layer&#xff09; 封装格式&#xff1a…

【行业深度解析】什么是马甲包?

在 Android 应用分发和增长运营的实践中&#xff0c;“马甲包” 是一个常被提及的策略术语。特别是在 Google Play 平台上&#xff0c;许多开发者或运营团队出于营销、风险分摊或生态布局等原因&#xff0c;会选择通过发布“马甲包”来实现多元化的业务拓展。 然而&#xff0c…

谷歌与微软的AI战争:搜索、云服务与生态布局

谷歌与微软的AI战争&#xff1a;搜索、云服务与生态布局 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 谷歌与微软的AI战争&#xff1a;搜索、云服务与生态布局摘要引言技术路线对比1. AI基础设施&#xff1a;算力…

uniapp自定义导航栏搭配插槽

<uni-nav-bar dark :fixed"true" shadow background-color"#007AFF" left-icon"left" left-text"返回" clickLeft"back"><view class"nav-bar-title">{{ navBarTitle }}</view><block v-slo…

无人机飞控算法开发实战:从零到一构建企业级飞控系统

简介 无人机飞控算法是实现稳定飞行和精确控制的核心技术,涉及飞行动力学建模、传感器数据处理、状态估计和控制策略等多个环节。本实战指南将系统讲解四旋翼无人机飞控算法的开发流程,包括飞行动力学模型建立、传感器校准与数据融合、主流控制算法实现(PID、ADRC、EKF)以…

p2p虚拟服务器

ZeroTier Central ✅ 推荐工具&#xff1a;ZeroTier&#xff08;免费、稳定、跨平台&#xff09; ZeroTier 可以帮你把多台设备&#xff08;无论是否跨网&#xff09;加入一个虚拟局域网&#xff0c;彼此间可以像在同一个 LAN 中通信&#xff0c;UDP 视频、文件传输、SSH 等都…

MySQL数据库迁移SQL语句指南

MySQL数据库迁移SQL语句指南 一、基础迁移方法 1. 使用mysqldump进行全量迁移 -- 导出源数据库&#xff08;在命令行执行&#xff09; mysqldump -u [源用户名] -p[源密码] --single-transaction --routines --triggers --events --master-data2 [数据库名] > migration…

画立方体软件开发笔记 js three 投影 参数建模 旋转相机 @tarikjabiri/dxf导出dxf

gitee&#xff1a; njsgcs/njsgcs_3d mainwindow.js:4 Uncaught SyntaxError: The requested module /3dviewport.js does not provide an export named default一定要default吗 2025-05-10 14-27-58 专门写了个代码画立方体 import{ scene,camera,renderer} from ./3dviewp…

【工具】HandBrake使用指南:功能详解与视频转码

HandBrake使用指南&#xff1a;功能详解与视频转码 一、前言 高清视频在当下日益普及&#xff0c;从影视制作到个人拍摄&#xff0c;从社交媒体发布到远程教育&#xff0c;如何高效地压缩、转换和管理视频文件的体积与清晰度&#xff0c;成为内容创作者与技术开发者的核心任务…

Docker容器网络架构深度解析与技术实践指南——基于Linux内核特性的企业级容器网络实现

第1章 容器网络基础架构 1 Linux网络命名空间实现原理 1.1内核级隔离机制深度解析 1.1.1进程隔离的底层实现 通过clone()系统调用创建新进程时&#xff0c;设置CLONE_NEWNET标志位将触发内核执行以下操作&#xff1a; 内核源码示例&#xff08;linux-6.8.0/kernel/fork.c&a…

SAP 交货单行项目含税金额计算报cx_sy_zerodivide处理

业务背景&#xff1a;SAP交货单只有数量&#xff0c;没有金额&#xff0c;所以开发报表从订单的价格按数量计算交货单的金额。 用户反馈近期报表出现异常&#xff1a; ****2012/12/12 清风雅雨 规格变更 Chg 修改开始 ** 修改原因:由于余数为0时&#xff0c;可能会报错溢出。…

【高数上册笔记01】:从集合映射到区间函数

【参考资料】 同济大学《高等数学》教材樊顺厚老师B站《高等数学精讲》系列课程 &#xff08;注&#xff1a;本笔记为个人数学复习资料&#xff0c;旨在通过系统化整理替代厚重教材&#xff0c;便于随时查阅与巩固知识要点&#xff09; 仅用于个人数学复习&#xff0c;因为课…

每日算法刷题 Day3 5.11:leetcode数组2道题,用时1h(有点慢)

5.LC 零矩阵(中等) 面试题 01.08. 零矩阵 - 力扣&#xff08;LeetCode&#xff09; 思想: 法一: 利用两个集合分别储存要清0的行和列索引 另外两种原地优化空间的做法暂时不是目前刷题目标&#xff0c;故不考虑 代码 c: class Solution { public:void setZeroes(vector&l…