介紹
sklearn.datasets子產品主要提供了一些導入、線上下載下傳及本地生成資料集的方法,可以通過dir或help指令檢視,目前主要有三種形式:
- load_<dataset_name> 本地加載資料,儲存在了本地磁盤上
- fetch_<dataset_name> 遠端加載資料
- make_<dataset_name> 構造資料集
方法
- 本地加載資料集
資料集檔案在sklearn安裝目錄下datasets\data檔案下,如果有興趣可進入子產品目錄檢視
datasets.load_boston #波士頓房價資料集
datasets.load_breast_cancer #乳腺癌資料集
datasets.load_diabetes #糖尿病資料集
datasets.load_digits #手寫體數字資料集
datasets.load_files
datasets.load_iris #鸢尾花資料集
datasets.load_lfw_pairs
datasets.load_lfw_people
datasets.load_linnerud #體能訓練資料集
datasets.load_mlcomp
datasets.load_sample_image
datasets.load_sample_images
datasets.load_svmlight_file
datasets.load_svmlight_files
2、遠端加載資料集
比較大的資料集,主要用于測試解決實際問題,支援線上下載下傳,下載下傳下來的資料,預設儲存在~/scikit_learn_data檔案夾下,可以通過設定環境變量SCIKIT_LEARN_DATA修改路徑,datasets.get_data_home()擷取下載下傳路徑。
datasets.fetch_20newsgroups
datasets.fetch_20newsgroups_vectorized
datasets.fetch_california_housing
datasets.fetch_covtype
datasets.fetch_kddcup99
datasets.fetch_lfw_pairs
datasets.fetch_lfw_people
datasets.fetch_mldata
datasets.fetch_olivetti_faces
datasets.fetch_rcv1
datasets.fetch_species_distributions
3、構造資料集
下面以make_regression()函數為例,首先看看函數文法:
make_regression(n_samples=100, n_features=100, n_informative=10, n_targets=1, bias=0.0, effective_rank=None, tail_strength=0.5, noise=0.0, shuffle=True, coef=False, random_state=None)
參數說明:
n_samples:樣本數
n_features:特征數(自變量個數)
n_informative:相關特征(相關自變量個數)即參與了模組化型的特征數
n_targets:因變量個數
bias:偏差(截距)
coef:是否輸出coef辨別
datasets.make_biclusters
datasets.make_blobs
datasets.make_checkerboard
datasets.make_circles
datasets.make_classification
datasets.make_friedman1
datasets.make_friedman2
datasets.make_friedman3
datasets.make_gaussian_quantiles
datasets.make_hastie_10_2
datasets.make_low_rank_matrix
datasets.make_moons
datasets.make_multilabel_classification
datasets.make_regression
datasets.make_s_curve
datasets.make_sparse_coded_signal
datasets.make_sparse_spd_matrix
datasets.make_sparse_uncorrelated
datasets.make_spd_matrix
datasets.make_swiss_roll
實踐
1、本地磁盤自帶的小資料集
1.1 波士頓房價資料(适用于回歸任務)
這個資料集包含了506處波士頓不同地理位置的房産的房價資料(因變量),和與之對應的包含房屋以及房屋周圍的詳細資訊(自變量),其中包含城鎮犯罪率、一氧化氮濃度、住宅平均房間數、到中心區域的權重距離以及自住房平均房價等13個次元的資料,是以,波士頓房價資料集能夠應用到回歸問題上。
加載資料進來是字典類型
from sklearn import datasets
print(datasets.load_iris())
x = datasets.load_iris()['data']
label = datasets.load_iris()['target']
target_names = datasets.load_iris()['target_names']
feature_names = datasets.load_iris()['feature_names']
print(x)
print(label)
print(target_names)
print(feature_names)
1.2 威斯康辛州乳腺癌資料(适用于分類問題)
這個資料集包含了威斯康辛州記錄的569個病人的乳腺癌惡性/良性(1/0)類别型資料(訓練目标),以及與之對應的30個次元的生理名額資料;是以這是個非常标準的二類判别資料集。
from sklearn import datasets
my_datas = datasets.load_breast_cancer()
print(my_datas)
x = my_datas['data']
label = my_datas['target']
target_names = my_datas['target_names']
feature_names = my_datas['feature_names']
print(x)
print(label)
print(target_names)
print(feature_names)
1.3 糖尿病資料(适用于回歸任務)
這是一個糖尿病的資料集,主要包括442行資料,10個屬性值,分别是:Age(年齡)、性别(Sex)、Body mass index(體質指數)、Average Blood Pressure(平均血壓)、S1~S6一年後疾病級數名額。Target為一年後患疾病的定量名額,是以适合與回歸任務;
from sklearn import datasets
my_datas = datasets.load_diabetes()
# print(my_datas)
print(my_datas.keys())
x = my_datas['data']
label = my_datas['target']
# target_names = my_datas['target_names']
feature_names = my_datas['feature_names']
print(x)
print(label)
# print(target_names)
print(feature_names)
1.4 手寫數字資料集(适用于分類任務)
這個資料集是結構化資料的經典資料,共有1797個樣本,每個樣本有64的元素,對應到一個8x8像素點組成的矩陣,每一個值是其灰階值,我們都知道圖檔在計算機的底層實際是矩陣,每個位置對應一個像素點,有二值圖,灰階圖,1600萬色圖等類型,在這個樣本中對應的是灰階圖,控制每一個像素的黑白濃淡,是以每個樣本還原到矩陣後代表一個手寫體數字,這與我們之前接觸的資料有很大差別;
1.5 Fisher的鸢尾花資料(适用于分類問題)
著名的統計學家Fisher在研究判别分析問題時收集了關于鸢尾花的一些資料,這是個非常經典的資料集,datasets中自然也帶有這個資料集;這個資料集包含了150個鸢尾花樣本,對應3種鸢尾花,各50個樣本(target),以及它們各自對應的4種關于花外形的資料(自變量);
from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt
my_datas = datasets.load_iris()
print(my_datas.keys())
x = my_datas['data']
label = my_datas['target']
target_names = my_datas['target_names']
feature_names = my_datas['feature_names']
print(x)
print(label)
print(target_names)
print(feature_names)
1.6 紅酒資料(适用于分類問題)
這是一個共178個樣本,代表了紅酒的三個檔次(分别有59,71,48個樣本),以及與之對應的13維的屬性資料,非常适合用來練習各種分類算法;
from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt
my_datas = datasets.load_wine()
print(my_datas.keys())
x = my_datas['data']
label = my_datas['target']
target_names = my_datas['target_names']
feature_names = my_datas['feature_names']
print(x)
print(label)
print(target_names)
print(feature_names)
2、自定義資料集
前面我們介紹了幾種datasets自帶的經典資料集,但有些時候我們需要自定義生成服從某些分布或者某些形狀的資料集,而datasets中就提供了這樣的一些方法:
2.1 産生服從正态分布的聚類用資料
datasets.make_blobs(n_samples=100, n_features=2, centers=3, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None),其中:
n_samples:控制随機樣本點的個數
n_features:控制産生樣本點的次元(對應n維正态分布)
centers:控制産生的聚類簇的個數
cluster_std:屬于同一個類簇的資料之間的方差
from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt
my_datas = datasets.make_blobs(n_samples=1500, n_features=25, centers=3, cluster_std=[1.0, 2.0, 3.0])
x, y = my_datas
plt.scatter(x[:, 0], x[:, 1], c=y, s=8)
# x = my_datas['data']
# label = my_datas['target']
# target_names = my_datas['target_names']
# feature_names = my_datas['feature_names']
#
# print(x)
# print(label)
# print(target_names)
# print(feature_names)
2.2 産生同心圓樣本點
datasets.make_circles(n_samples=100, shuffle=True, noise=0.04, random_state=None, factor=0.8)
n_samples:控制樣本點總數
noise:控制屬于同一個圈的樣本點附加的漂移程度
factor:控制内外圈的接近程度,越大越接近,上限為1
from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt
x, y = datasets.make_circles(n_samples=1000, shuffle=True, noise=0.05, random_state=2, factor=0.35)
plt.scatter(x[:, 0], x[:, 1], c=y, s=8)
# x = my_datas['data']
# label = my_datas['target']
# target_names = my_datas['target_names']
# feature_names = my_datas['feature_names']
#
# print(x)
# print(label)
# print(target_names)
# print(feature_names)
2.3 生成模拟分類資料集
datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)
n_samples:控制生成的樣本點的個數
n_features:控制與類别有關的自變量的維數
n_classes:控制生成的分類資料類别的數量
from sklearn import datasets
X,y = datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)
print(X.shape)
print(y.shape)
set(y)