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

11.11 机器学习-数据集的获取和划分

# sklearn玩具数据集

# 鸢尾花 数据集使用

from sklearn.datasets import load_iris,load_wine,fetch_20newsgroups # 导入 数据集 load本地 feath联网

from sklearn.model_selection import train_test_split # 数据集划分方法

from sklearn.feature_extraction import DictVectorizer # 字典类型划分方法

import pandas as pd

import numpy as np

def iris():

    # 是几个np数组和list

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

    # data 特征

    # feature_names 特征描述

    # target  目标

    # target_names  目标描述

    # DESCR 数据集的描述 一串英文

    # filename 下后到本地保存后的文件名

    # print(iris.data) # 全部数据的值 是一个二维pandas矩阵 也是一个X值

    # print(iris.feature_names) # 每一列的列名

    # print(iris.target) # 每一个矩阵行对应的一个Y值

    # print(iris.target_names) # Y值对应的花的类型

    iris = load_iris()#鸢尾花数据 实例化对象 本地加载了一个csv文件 变为了一个字典

    data1=iris.data[80]

    print(iris.target_names[iris.target[80]])

    # print(iris.DESCR)

    print(iris.data)

    print(iris.target)

    print(type(iris.data))

    print(type(iris.target))

    print(iris.feature_names)

   

    # 组合为 dataframe

    df1=pd.DataFrame(columns=iris.feature_names)

    df1[iris.feature_names]=iris.data

    df1["target"]=iris.target

    print(df1)

def wine():# 葡萄酒特征集

    wine=load_wine()

    print(wine.data)

    print(wine.feature_names)

    print(wine.target)

    print(wine.target_names)

    df1=pd.DataFrame(columns=wine.feature_names)

    df1[wine.feature_names]=wine.data

    df1["target"]=wine.target

    print(df1)

   

def get_real_world_dataset():# 现实世界的数据集获取 下载 使用fetch_20newsgroups()方法下载 这个是获得20条新闻类别的数据集 其他的现实数据 有不同的获取方法

    # data_home 下载的路径 subset 下载数据的种类 test(测试集)train 训练集 all全部

    # 下载可以就可以当本地的用 第一次下载完第二次就可以直接加载了不用下载  这个数据集没有feature_names

    data=fetch_20newsgroups(data_home="assets",subset="all")

    # print(data.feature_names)

def load_local_file(): # 加载本地文件夹 df读csv文件 读Excel文件 文件格式如果没有对应的读取工具请下载

    data=pd.read_csv("assets/ss.csv")

    print(data)

def data_set_divide():# 重点 数据集的划分

    # 导包

    # 首先要有数据 获取 这里直接自定义了

    arr1=[14,3,25,435,6461,43,2,41]

    arr2=[6,4,8,3,4,6,8,9]

    # train_test_split()方法 返回训练集,测试集 传入数组 和划分的大小 多少部分为训练集

    # x_train1,x_test1=train_test_split(arr1,test_size=0.8)

    # 有映射关系的两个数据集进行划分 个数要相同 返回两个四个值 两个训练集和测试集之间有对齐关系下标相同 虽然是打乱了,但打乱的过程都一样

    # stratify=arr2 按照arr2的结构分层取 arr2有三种数据 那就每一种数据取80来 防止验证集和训练集的内容种类重复度过高 返回值的类型跟传入的类型一样

    # random_state随机数种子控制随机结果 随机数种子一样得到的随机结果也一样 假随机 不写的话每次结果不一样 shuffle洗牌

    # x_train2,x_test2,y_train2,y_test2=train_test_split(arr1,arr2,train_size=0.8,stratify=arr2,shuffle=True,random_state=4)

    # 多个数组也可以直接传入  

    # 重要的关键字参数有:

        # test_size 值为0.0到1.0的小数,表示划分后测试集占的比例

        # random_state 值为任意整数,表示随机种子,使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同

    # sklearn.model_selection.train_test_split(*arrays,**options)

    # data=np.arange(100).reshape(50,2)

    # 鸢尾花数据集划分

    iris=load_iris()

    x=iris.data

    y=iris.target

    x_train,x_test,y_train,y_test=train_test_split(x,y,train_size=0.8,stratify=y,random_state=666)

    print(x_train.shape)

    print(y_train.shape) # 传入的是数组的话没有shape 先转为np 再shape

    print(x_test.shape)

    print(y_test.shape)

    # 字典数据集的划分

    # 可以划分非稀疏矩阵

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

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

    data4 = [{'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},

       ]

    mode1=DictVectorizer(sparse=False) # sparse是否返回稀疏矩阵(一个二元的坐标) 创建字典划分工具

    data5=mode1.fit_transform(data4) # 使用工具转换字典 他就相当于是把汉字变成列 用0,1表示这列是否为真 数字的列名也变为列但就是具体的数字

    x_train5,y_train5=train_test_split(data5,random_state=666,train_size=0.8)


 

if __name__=="__main__":

    # iris()

    # wine()

    # demo3()

    # demo4()

    data_set_divide()

    pass


http://www.kler.cn/a/395943.html

相关文章:

  • 深度学习--卷积神经网络
  • 2024年11月系统架构设计师考试真题回顾
  • 性能测试|JMeter接口与性能测试项目
  • PCL 点云拟合 基于夹角约束的Ransac拟合平面
  • 十一、拦截器
  • 【Linux网络编程】简单的UDP网络程序
  • Appium配置2024.11.12
  • 高级前端开发工程师--掌握的技术
  • Java项目实战II基于微信小程序的私家车位共享系统(开发文档+数据库+源码)
  • 讲解C语言浮点型常量的指数表示法
  • 设计模式——策略模式(c++)
  • 【Framework系列】UnityEditor调用外部程序详解
  • 关于写React的一些反思和总结
  • GEE python ——访问谷歌多 PB 的合成孔径雷达图像数据,不受尺寸限制(geesarfetcher安装包)
  • 【C语言】实现二维数组按列排序
  • 11月第2周AI资讯
  • 2.DHCP原理与配置
  • Vue 3 中的 v-bind 完全指南
  • 金融领域先锋!海云安成功入选2024年人工智能先锋案例集
  • docker busybox作为initContainers