欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 11.11 机器学习-数据集的获取和划分

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

2025/4/19 15:19:11 来源:https://blog.csdn.net/2401_86807530/article/details/143701469  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词