python機器學習庫sklearn——生成樣本數據
Linux編程
點擊右側關注,免費入門到精通!
作者丨數據架構師
https://blog.csdn.net/luanpeng825485697/article/details/79808669
sklearm自帶數據
sklearn自動了下面幾種數據用於演算法練習。
load_boston([return_X_y]) 載入波士頓房價數據;用於回歸問題
load_iris([return_X_y]) 載入iris 數據集;用於分類問題
load_diabetes([return_X_y]) 載入糖尿病數據集;用於回歸問題
load_digits([n_class, return_X_y]) 載入手寫字符集;用於分類問題
load_linnerud([return_X_y]) 載入linnerud 數據集;用於多元回歸問題
波士頓房價數據,回歸使用。樣本數據集的特徵默認是一個(506, 13)大小的矩陣,樣本值是一個包含506個數值的向量。
# 房價數據 from import from import print print
boston = load_boston()
data=boston.data
target = boston.target
(target.shape)
"係數矩陣:
"
iris花卉數據,分類使用。樣本數據集的特徵默認是一個(150, 4)大小的矩陣,樣本值是一個包含150個類標號的向量,包含三種分類標號。
# 花卉數據
from
sklearn.datasetsimport
load_irisfrom
sklearnimport
svmiris = load_iris()
data=iris.data
target = iris.target
"svm模型:
"
糖尿病數據集,回歸使用。樣本數據集的特徵默認是一個(442, 10)大小的矩陣,樣本值是一個包含442個數值的向量。
# 糖尿病數據集 from import from import print print
diabetes = load_diabetes()
data=diabetes.data
target = diabetes.target
"係數矩陣:
"
手寫體數據,分類使用。每個手寫體數據使用8*8的矩陣存放。樣本數據為(1797, 64)大小的數據集。
# # ===========手寫體數據=========== from import import as # 畫圖工具 print 3 # 矩陣像素點的樣式顯示3 # plt.imshow(digits.images[3]) # 圖片漸變的樣式顯示3 # plt.gray() # 圖片顯示為灰度模式
digits = load_digits()
data=digits.data
plt.matshow(digits.images[
plt.show()
linnerud數據集,多元回歸使用。樣本數據集的特徵默認是一個(20, 3)大小的矩陣,樣本值也是(20, 3)大小的矩陣。也就是3種特徵,有3個輸出結果,所以係數矩陣w為(3, 3)
# # ===========多元回歸=========== from import from import print print
linnerud = load_linnerud()
data=linnerud.data
target = linnerud.target
"係數矩陣:
"
載入樣本圖案
# 圖像樣本數據集 from import import as # 畫圖工具 "flower.jpg" # 載入sk自帶的花朵圖案
img=load_sample_image(
plt.imshow(img)
plt.show()
生成自定義分類數據
100 20 2 2 0 2 2 None 0.01 1.0 True 0.0 1.0 True Nonesklearn.datasets.make_classification(n_samples=
n_repeated=
flip_y=
shuffle=
通常用於分類演算法。
n_features :特徵個數= n_informative + n_redundant + n_repeated
n_informative:多信息特徵的個數
n_redundant:冗餘信息,informative特徵的隨機線性組合
n_repeated :重複信息,隨機提取n_informative和n_redundant 特徵
n_classes:分類類別
n_clusters_per_class :某一個類別是由幾個cluster構成的
# # ===========生成分類樣本數據集=========== from import import as # 畫圖工具 100 2 2 0 0 2 1 print print 0 1
data,target=datasets.make_classification(n_samples=
plt.scatter(data[:,
plt.show()
這裡生成的數據集圖如下,由於每次生成的數據都不一樣,所以讀者看到的圖片和這裡也不一樣的
其他生成分類樣本的函數
make_blobs函數會根據用戶指定的特徵數量、中心點數量、範圍等來生成幾類數據,這些數據可用於測試聚類演算法的效果。
其中:
n_samples是待生成的樣本的總數。
n_features是每個樣本的特徵數。
centers表示類別數。
cluster_std表示每個類別的方差,例如我們希望生成2類數據,其中一類比另一類具有更大的方差,可以將cluster_std設置為[1.0,3.0]。
None 1.0 100 2 3 True Nonesklearn.datasets.make_gaussian_quantiles(mean=
shuffle=
make_gaussian_quantiles函數利用高斯分位點區分不同數據
12000 Nonesklearn.datasets.make_hastie_10_2(n_samples=
make_hastie_10_2函數利用Hastie演算法,生成2分類數據
下面我們通過代碼的比較一下這些樣本數據的生成。
import as from import from import from import from import
plt.figure(figsize=(
10
,10
))plt.subplots_adjust(bottom=
.05
, top=.9
, left=.05
, right=.95
)plt.subplot(
421
)plt.title(
"One informative feature, one cluster per class"
, fontsize="small"
)X1, Y1 = make_classification(n_samples=
1000
, n_features=2
, n_redundant=0
, n_informative=1
,n_clusters_per_class=1
)plt.scatter(X1[:,
0
], X1[:,1
], marker="o"
, c=Y1)plt.subplot(
422
)plt.title(
"Two informative features, one cluster per class"
, fontsize="small"
)X1, Y1 = make_classification(n_samples=
1000
, n_features=2
, n_redundant=0
, n_informative=2
,n_clusters_per_class=1
)plt.scatter(X1[:,
0
], X1[:,1
], marker="o"
, c=Y1)plt.subplot(
423
)plt.title(
"Two informative features, two clusters per class"
, fontsize="small"
)X2, Y2 = make_classification(n_samples=
1000
, n_features=2
, n_redundant=0
, n_informative=2
)plt.scatter(X2[:,
0
], X2[:,1
], marker="o"
, c=Y2)plt.subplot(
424
)plt.title(
"Multi-class, two informative features, one cluster"
,fontsize="small"
)X1, Y1 = make_classification(n_samples=
1000
, n_features=2
, n_redundant=0
, n_informative=2
,n_clusters_per_class=1
, n_classes=3
)plt.scatter(X1[:,
0
], X1[:,1
], marker="o"
, c=Y1)plt.subplot(
425
)plt.title(
"Three blobs"
, fontsize="small"
)# 1000個樣本,2個屬性,3種類別,方差分別為1.0,3.0,2.0
X1, Y1 = make_blobs(n_samples=
1000
, n_features=2
, centers=3
,cluster_std=[1.0
,3.0
,2.0
])plt.scatter(X1[:,
0
], X1[:,1
], marker="o"
, c=Y1)plt.subplot(
426
)plt.title(
"Gaussian divided into four quantiles"
, fontsize="small"
)X1, Y1 = make_gaussian_quantiles(n_samples=
1000
, n_features=2
, n_classes=4
)plt.scatter(X1[:,
0
], X1[:,1
], marker="o"
, c=Y1)plt.subplot(
427
)plt.title(
"hastie data "
, fontsize="small"
)X1, Y1 = make_hastie_10_2(n_samples=
1000
)plt.scatter(X1[:,
0
], X1[:,1
], marker="o"
, c=Y1)plt.show()
自定義生成圓形和月牙形分類數據
100 True None None 0.8sklearn.datasets.make_circles(n_samples=
生成環形數據
factor :外圈與內圈的尺度因子<1
100 True None Nonesklearn.datasets.make_moons(n_samples=
生成半環形圖
from import from import import as
fig = plt.figure(
1
)x1, y1 = make_circles(n_samples=
1000
, factor=0.5
, noise=0.1
)plt.subplot(
121
)plt.title(
"make_circles function example"
)plt.scatter(x1[:,
0
], x1[:,1
], marker="o"
, c=y1)plt.subplot(
122
)x1, y1 = make_moons(n_samples=
1000
, noise=0.1
)plt.title(
"make_moons function example"
)plt.scatter(x1[:,
0
], x1[:,1
], marker="o"
, c=y1)plt.show()
自定義生成回歸樣本
from import
推薦↓↓↓
長
按
關
注
??
【
16個技術公眾號
】都在這裡!
涵蓋:程序員大咖、源碼共讀、程序員共讀、數據結構與演算法、黑客技術和網路安全、大數據科技、編程前端、Java、Python、Web編程開發、Android、iOS開發、Linux、資料庫研發、幽默程序員等。
※炸吊天!年薪80+萬的大數據開發【教程】都在這兒!
※別人的男朋友都挺帥的,而我的男朋友
TAG:Python開發 |