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

数据集划分

1、 sklearn玩具数据集介绍

数据量小,数据在sklearn库的本地,只要安装了sklearn,不用上网就可以获取

 

2 sklearn现实世界数据集介绍

数据量大,数据只能通过网络获取(科学上网)

 

3 sklearn加载玩具数据集

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

iris字典中有几个重要属性:

# data 特征
# feature_names 特征描述
# target  目标
# target_names  目标描述
# DESCR 数据集的描述
# filename 下后到本地保存后的文件名

print(iris.data)#得到特征
print(iris.feature_names) #特征描述
print(iris.target) #目标形状
print(iris.target_names)#目标描述
print(iris.filename) #iris.csv 保存后的文件名
print(iris.DESCR)#数据集的描述

 下面使用pandas把特征和目标一起显示出来

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

 示例3:数字数据集

  示例4:linnerud物理锻炼数据集

  示例5:葡萄酒数据集 

  示例6:维斯康星州乳腺癌数据集  

4 sklearn获取现实世界数据集

示例1:从AT&T中加载Olivetti人脸数据集

示例2:从20个新闻组数据集中加载文件名和数据

示例3:加载20个新闻组数据集并将其矢量化为令牌计数

5 本地csv数据

(1) 创建csv文件

方式1:打开计事本,写出如下数据,数据之间使用英文下的逗号, 保存文件后把后缀名改为csv

csv文件可以使用excel打开

方式2:创建excel 文件, 填写数据,以csv为后缀保存文件

(2) pandas加载csv

使用pandas的read_csv(“文件路径”)函数可以加载csv文件,得到的结果为数据的DataFrame形式

pd.read_csv("./src/ss.csv")

6 数据集的划分

(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 值为任意整数,表示随机种子,使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同 
2 返回值说明
    返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型,list中对应被划分出来的两部分就是什么类型

(2)示例

列表数据集划分

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

from sklearn.model_selection import train_test_split
data1 = [1,    2,    3,    4,    5]
data2 = ["1a", "2a","3a", "4a",  "5a"]
a, b = train_test_split(data1, test_size=0.4, random_state=22)
print(a, b) #[4, 1, 5]  [2, 3]
​
a, b = train_test_split(data2, test_size=0.4, random_state=22)
print(a, b) #['4a', '1a', '5a'] ['2a', '3a']
​
a, b, c, d  = train_test_split(data1, data2,  test_size=0.4, random_state=22)
print(a,b,c,d) #['4a', '1a', '5a'] ['2a', '3a']
ndarray数据集划分

划分前和划分后的数据类型是相同的 data1为list,划分后的a、b也是list data2为ndarray,划分后的c、d也是ndarray

from sklearn.model_selection import train_test_split
import numpy as np
data1 = [1,    2,    3,    4,    5]
data2 = np.array(["1a", "2a","3a", "4a",  "5a"]) 
a, b, c, d  = train_test_split(data1, data2,  test_size=0.4, random_state=22)
print(a, b, c, d)  #[4, 1, 5] [2, 3] ['4a' '1a' '5a'] ['2a' '3a']
print(type(a), type(b), type(c), type(d)) #<class 'list'> <class 'list'> <class 'numpy.ndarray'> <class 'numpy.ndarray'>
二维数组数据集划分

train_test_split只划分第一维度,第二维度保持不变

from sklearn.model_selection import train_test_split
import numpy as np
data1 = np.arange(1, 16, 1)
data1.shape=(5,3)
print(data1)
a, b = train_test_split(data1,  test_size=0.4, random_state=22)
print("a=\n", a)
print("b=\n", b)
[[ 1  2  3][ 4  5  6][ 7  8  9][10 11 12][13 14 15]]
a=[[10 11 12][ 1  2  3][13 14 15]]
b=[[4 5 6][7 8 9]]
DataFrame数据集划分

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

from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd
data1 = np.arange(1, 16, 1)
data1.shape=(5,3)
data1 = pd.DataFrame(data1, index=[1,2,3,4,5], columns=["one","two","three"])
print(data1)
​
a, b = train_test_split(data1,  test_size=0.4, random_state=22)
print("\n", a)
print("\n", b)one  two  three
1    1    2      3
2    4    5      6
3    7    8      9
4   10   11     12
5   13   14     15
​one  two  three
4   10   11     12
1    1    2      3
5   13   14     15
​one  two  three
2    4    5      6
3    7    8      9
字典数据集划分

可以划分非稀疏矩阵

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

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

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

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

from sklearn.feature_extraction import DictVectorizer
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_new = transfer.fit_transform(data)
print("data_new:\n", data_new)
x = data_new.toarray()
print(type(x))
print(x)
#(0,0)是矩阵的行列下标  30是值
data_new:(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
<class 'numpy.ndarray'>
# 第一行中:30表示age的值  0表示上海 0表示北京 1表示成都 0表示重庆 20表示temperature
[[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.]]
a, b = train_test_split(data_new,  test_size=0.4, random_state=22)
print(a)
print("\n", b)(0, 0) 22.0(0, 1)    1.0(0, 5)    70.0(1, 0)    30.0(1, 3)    1.0(1, 5)    20.0(2, 0)    72.0(2, 3)    1.0(2, 5)    40.0
​(0, 0)   33.0(0, 4)    1.0(0, 5)    60.0(1, 0)    42.0(1, 2)    1.0(1, 5)    80.0
#data_new.toarray()是ndarray
a, b = train_test_split(data_new.toarray(),  test_size=0.4, random_state=22)
print(a)
print("\n", b)
[[22.  1.  0.  0.  0. 70.][30.  0.  0.  1.  0. 20.][72.  0.  0.  1.  0. 40.]]
​[[33.  0.  0.  0.  1. 60.][42.  0.  1.  0.  0. 80.]]
鸢尾花数据集划分
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
list = train_test_split(iris.data,    iris.target,  test_size=0.2, random_state=22)
#x_train训练特征数据集,x_test测试特征数据集, y_train训练目标数据集,y_test测试目标数据集, 
x_train, x_test, y_train, y_test = list   
#打印结果为: (120, 4) (30, 4) (120,) (30,)
print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)
现实世界数据集划分
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.mrgr.cn/news/70545.html

相关文章:

  • ubuntu 配置 多个 git 客户端 账户
  • 联通光猫(烽火通信设备)改桥接教程
  • 蓝桥杯每日真题 - 第21天
  • Js中的常见全局函数
  • 详细描述一下Elasticsearch更新和删除文档的过程?
  • 【Linux课程学习】:命令行参数,环境变量
  • 模块与包的应用
  • 调试、发布自己的 npm 包
  • 小程序开发公司的报价通常受哪些因素影响?
  • 详解一下JVM诊断方法和其工具的使用
  • P2043 质因子分解
  • 【大数据学习 | HBASE高级】region split机制和策略
  • MongoDB创建联合唯一性约束
  • Java面试题(2)
  • Java:JVM
  • 动态规划习题其七【力扣】【算法学习day.29】
  • LoRA(Low-Rank Adaptation)
  • 基于STM32的自行车户外运动系统设计
  • AIGC小红书新赛道,两个平台同时发,操作简单
  • 地下水数值模拟、 地下水环评、Visual modflow Flex、Modflow
  • 如何利用GNB外链提升网站的自然曝光!
  • FPGA实现光纤通信(2)——光纤眼图测试
  • Tidb数据恢复
  • 监控架构-Prometheus-普罗米修斯
  • QML —— ListView代理,附横向滑动效果(附源码)
  • 游戏引擎中LOD渲染技术