机器学习数据集加载全攻略:从本地到网络
目录
一、加载内置数据集
1.1 Iris鸢尾花数据集
1.2 其他常用内置数据集
二、加载网络数据集
2.1 20 Newsgroups数据集
三、加载本地数据集
3.1 使用pandas加载CSV文件
3.2 处理常见问题
四、数据加载最佳实践
五、总结
在机器学习项目中,数据的加载是第一步也是至关重要的一步。本文将全面介绍如何使用Python中的scikit-learn和pandas库加载各种类型的数据集,包括内置数据集、网络数据集和本地数据集。
一、加载内置数据集
1.1 Iris鸢尾花数据集
Iris数据集是机器学习中最经典的数据集之一,包含150个样本,每个样本有4个特征:
from sklearn.datasets import load_iris
iris = load_iris()#鸢尾花数据
# 数据集中的特征数据(x,data,样本集)
print(iris.data,type(iris.data),iris.data.shape,iris.data.dtype)
# data特征数据中的每一条数据的每一个特征值的名字
print(iris.feature_names)
# 标签,target,结果,有,目标值
# data特征数据中的每一条数据对应的标签
print(iris.target,iris.target.shape)
# target_names标签的名称
print(iris.target_names) # Setosa山鸢尾 versicolor变色鸢尾 virginica维吉尼亚鸢尾
print(iris.filename) # iris.csv 保存后的文件名
print(iris.DESCR) # 数据集的描述
关键属性和方法:
-
iris.data
: 特征数据矩阵,形状为(150, 4) -
iris.target
: 标签数组,形状为(150,) -
iris.feature_names
: 特征名称列表 -
iris.target_names
: 类别名称列表 -
iris.DESCR
: 数据集的详细描述
使用场景:
-
分类算法测试
-
数据可视化练习
-
特征工程演示
1.2 其他常用内置数据集
scikit-learn还提供了许多其他内置数据集:
-
load_boston()
: 波士顿房价数据集(回归问题) -
load_digits()
: 手写数字数据集(分类问题) -
load_wine()
: 葡萄酒数据集(分类问题)
二、加载网络数据集
2.1 20 Newsgroups数据集
20 Newsgroups是一个文本分类数据集,包含约20,000篇新闻组文档:
# 加载互联网数据集
import sklearn.datasets as datasets
from sklearn.datasets import fetch_20newsgroups
path=datasets.get_data_home() # 获取数据集的路径
print(path)news=fetch_20newsgroups(data_home="./src",subset='all') # 下载所有数据集
print(len(news.data),type(news.data),news.data[:5]) # 文本数据
print(news.target[:5])
print(news.target_names)
关键参数:
-
subset
: 可选'train'、'test'或'all' -
categories
: 指定要加载的类别列表 -
data_home
: 指定数据集下载和缓存目录
重要属性:
-
news.data
: 原始文本数据列表 -
news.target
: 类别标签数组 -
news.target_names
: 类别名称列表
使用技巧:
-
对于文本分类任务,通常需要进一步进行文本向量化
-
可以使用
TfidfVectorizer
或CountVectorizer
进行特征提取
三、加载本地数据集
3.1 使用pandas加载CSV文件
pandas是Python中最强大的数据处理库之一,可以轻松加载本地CSV文件:
# 加载本地数据集
import pandas as pd
df = pd.read_csv("./src/ss.csv") # 加载本地csv文件
print(df)
常用参数:
-
header
: 指定作为列名的行号 -
sep
: 分隔符,默认为',' -
index_col
: 用作行索引的列编号或列名 -
encoding
: 文件编码格式
3.2 处理常见问题
-
编码问题:尝试不同的编码格式如'utf-8'、'gbk'、'latin1'
-
缺失值处理:使用
na_values
参数指定缺失值标记 -
大数据集:使用
chunksize
参数分块读取
四、数据加载最佳实践
-
数据缓存:对于网络数据集,设置
data_home
参数避免重复下载 -
内存管理:对于大型数据集,考虑使用生成器或分块加载
-
数据验证:加载后立即检查数据形状和基本信息
-
版本控制:将原始数据与处理后的数据分开存储
五、总结
掌握各种数据加载方法是机器学习工程师的基本功。无论是使用内置数据集快速验证算法,还是处理自定义的本地数据,Python生态都提供了强大的工具支持。在实际项目中,建议:
-
从小数据集开始快速迭代
-
建立规范的数据加载和处理流程
-
记录数据来源和处理步骤
-
考虑数据的版本管理