目錄
一、加載內置數據集
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生態都提供了強大的工具支持。在實際項目中,建議:
-
從小數據集開始快速迭代
-
建立規范的數據加載和處理流程
-
記錄數據來源和處理步驟
-
考慮數據的版本管理