目錄
1、簡介
2、可用數據集
3、scikit-learn數據集API
3.1、小數據集
3.2、大數據集
4、數據集使用
?所屬專欄:人工智能
文中提到的代碼如有需要可以私信我發給你😊
1、簡介
當談論數據集時,通常是指在機器學習和數據分析中使用的一組數據樣本,這些樣本通常代表了某個特定問題領域的實際觀測數據。數據集可以用于開發、訓練和評估機器學習模型,從而使模型能夠從數據中學習并做出預測或分類。
數據集通常由以下幾個組成部分組成:
- 特征(Features):也稱為自變量、屬性或輸入變量,是用來描述每個數據樣本的不同方面的數據。特征可以是數值型、類別型、文本型等。在監督學習中,特征被用來訓練模型。
- 目標變量(Target Variable):也稱為因變量、標簽或輸出變量,是我們希望模型預測或分類的值。在監督學習中,模型使用特征來預測或分類目標變量。
- 樣本(Samples):每個樣本是數據集中的一行,包含特征和目標變量的值。樣本代表了問題領域中的一個觀測點或數據點。
- 特征名稱(Feature Names):如果數據集中的特征有名稱,通常會提供一個特征名稱列表,以便更好地理解和解釋特征。
- 目標變量的類別(Target Variable Classes):對于分類問題,目標變量可能有多個類別,每個類別表示一個不同的類或標簽。
- 數據集描述(Dataset Description):通常包括數據集的來源、數據采集方法、特征和目標變量的含義,以及數據的格式和結構等信息。
數據集可以在各種領域和問題中使用,例如醫療診斷、自然語言處理、計算機視覺、金融預測等。不同類型的數據集可能需要不同的預處理和特征工程步驟,以便為模型提供有意義的數據。
在機器學習中,一個常見的任務是將數據集劃分為訓練集和測試集,用于模型的訓練和評估。這樣可以確保模型在未見過的數據上能夠進行泛化。數據集的質量和適用性對機器學習模型的性能和效果有很大影響,因此選擇合適的數據集和進行有效的特征工程非常重要。
2、可用數據集
Kaggle網址:Find Open Datasets and Machine Learning Projects | Kaggle
UCI數據集網址: UCI Machine Learning Repository
scikit-learn網址:http://scikit-learn.org/stable/datasets/index.html#datasets
Scikit-learn工具介紹:
- Python語言的機器學習工具
- Scikit-learn包括許多知名的機器學習算法的實現
- Scikit-learn文檔完善,容易上手,豐富的API
- 目前穩定版本0.19.1
安裝:pip3 install Scikit-learn==0.19.1 (安裝scikit-learn需要Numpy, Scipy等庫)
Scikit-learn包含的內容:
scikitlearn接口
- 分類、聚類、回歸
- 特征工程
- 模型選擇、調優
3、scikit-learn數據集API
- sklearn.datasets 加載獲取流行數據集
- datasets.load_*() 獲取小規模數據集,數據包含在datasets里
- datasets.fetch_*(data_home=None) 獲取大規模數據集,需要從網絡上下載,函數的第一個參數是data_home,表示數據集下載的目錄,默認是 ~/scikit_learn_data/
3.1、小數據集
sklearn.datasets.load_iris() 加載并返回鳶尾花數據集
sklearn.datasets.load_boston() 加載并返回波士頓房價數據集
3.2、大數據集
- sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
-
- subset:'train'或者'test','all',可選,選擇要加載的數據集。
- 訓練集的“訓練”,測試集的“測試”,兩者的“全部”
4、數據集使用
這里使用的是鳶尾花數據集
數據集返回值介紹:
load和fetch返回的數據類型datasets.base.Bunch(字典格式)
data:特征數據數組,是 [n_samples * n_features] 的二維 numpy.ndarray 數組
target:標簽數組,是 n_samples 的一維 numpy.ndarray 數組
DESCR:數據描述
feature_names:特征名,新聞數據,手寫數字、回歸數據集沒有
target_names:標簽名
from sklearn.datasets import load_iris'''
load和fetch返回的數據類型datasets.base.Bunch(字典格式)data:特征數據數組,是 [n_samples * n_features] 的二維 numpy.ndarray 數組target:標簽數組,是 n_samples 的一維 numpy.ndarray 數組DESCR:數據描述feature_names:特征名,新聞數據,手寫數字、回歸數據集沒有target_names:標簽名
'''
def getIris_1():# 獲取鳶尾花數據集iris = load_iris()print("鳶尾花數據集的返回值:\n", iris)# 返回值是一個繼承自字典的Benchprint("鳶尾花的特征值:\n", iris["data"])print("鳶尾花的目標值:\n", iris.target)print("鳶尾花特征的名字:\n", iris.feature_names)print("鳶尾花目標值的名字:\n", iris.target_names)print("鳶尾花的描述:\n", iris.DESCR)if __name__ == '__main__':getIris_1()
數據集劃分:
機器學習一般的數據集會劃分為兩個部分:
- 訓練數據:用于訓練,構建模型
- 測試數據:在模型檢驗時使用,用于評估模型是否有效
劃分比例:
- 訓練集:70% 80% 75%
- 測試集:30% 20% 30%
數據集劃分api:
sklearn.model_selection.train_test_split(arrays, *options)
x 數據集的特征值
y 數據集的標簽值
test_size 測試集的大小,一般為float
random_state 隨機數種子,不同的種子會造成不同的隨機采樣結果。相同的種子采樣結果相同。
return 測試集特征訓練集特征值值,訓練標簽,測試標簽(默認隨機取)
from sklearn.model_selection import train_test_split # 數據集劃分'''
sklearn.model_selection.train_test_split(arrays, *options)x 數據集的特征值y 數據集的標簽值test_size 測試集的大小,一般為floatrandom_state 隨機數種子,不同的種子會造成不同的隨機采樣結果。相同的種子采樣結果相同。return 測試集特征訓練集特征值值,訓練標簽,測試標簽(默認隨機取)
'''
def datasets_demo():"""對鳶尾花數據集的演示:return: None"""# 1、獲取鳶尾花數據集iris = load_iris()print("鳶尾花數據集的返回值:\n", iris)# 返回值是一個繼承自字典的Benchprint("鳶尾花的特征值:\n", iris["data"])print("鳶尾花的目標值:\n", iris.target)print("鳶尾花特征的名字:\n", iris.feature_names)print("鳶尾花目標值的名字:\n", iris.target_names)print("鳶尾花的描述:\n", iris.DESCR)# 2、對鳶尾花數據集進行分割# 訓練集的特征值x_train 測試集的特征值x_test 訓練集的目標值y_train 測試集的目標值y_testx_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)print("x_train:\n", x_train.shape)# 隨機數種子x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6)x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6)print("如果隨機數種子不一致:\n", x_train == x_train1)print("如果隨機數種子一致:\n", x_train1 == x_train2)return Noneif __name__ == '__main__':datasets_demo()