在學習機器學習算法的過程中蛀恩,我們經(jīng)常需要數(shù)據(jù)來驗證算法疫铜,調(diào)試參數(shù)。但是找到一組十分合適某種特定算法類型的數(shù)據(jù)樣本卻不那么容易双谆。還好numpy, scikit-learn都提供了隨機數(shù)據(jù)生成的功能壳咕,我們可以自己生成適合某一種模型的數(shù)據(jù)席揽,用隨機數(shù)據(jù)來做清洗,歸一化谓厘,轉(zhuǎn)換幌羞,然后選擇模型與算法做擬合和預測。下面對scikit-learn和numpy生成數(shù)據(jù)樣本的方法做一個總結(jié)竟稳。
1 回歸模型隨機數(shù)據(jù)
這里我們使用make_regression生成回歸模型數(shù)據(jù)属桦。幾個關鍵參數(shù)有n_samples(生成樣本數(shù)), n_features(樣本特征數(shù))他爸,noise(樣本隨機噪音)和coef(是否返回回歸系數(shù))地啰。例子代碼如下:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets.samples_generator import make_regression
# X為樣本特征,y為樣本輸出讲逛, coef為回歸系數(shù),共1000個樣本岭埠,每個樣本1個特征
X, y, coef =make_regression(n_samples=1000, n_features=1,noise=10, coef=True)
# 畫圖
plt.scatter(X, y, color='black')
plt.plot(X, X*coef, color='blue',
linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
輸出的圖如下:
- 分類模型隨機數(shù)據(jù)
這里我們用make_classification生成三元分類模型數(shù)據(jù)盏混。幾個關鍵參數(shù)有n_samples(生成樣本數(shù)), n_features(樣本特征數(shù))惜论, n_redundant(冗余特征數(shù))和n_classes(輸出的類別數(shù))许赃,例子代碼如下:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets.samples_generator import make_classification
# X1為樣本特征,Y1為樣本類別輸出馆类, 共400個樣本混聊,每個樣本2個特征,輸出有3個類別乾巧,沒有冗余特征句喜,每個類別一個簇
X1, Y1 = make_classification(n_samples=400, n_features=2, n_redundant=0,
n_clusters_per_class=1, n_classes=3)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1)
plt.show()
輸出的圖如下:
3 聚類模型隨機數(shù)據(jù)
這里我們用make_blobs生成聚類模型數(shù)據(jù)。幾個關鍵參數(shù)有n_samples(生成樣本數(shù))沟于, n_features(樣本特征數(shù))咳胃,centers(簇中心的個數(shù)或者自定義的簇中心)和cluster_std(簇數(shù)據(jù)方差,代表簇的聚合程度)旷太。例子如下:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets.samples_generator import make_blobs
# X為樣本特征展懈,Y為樣本簇類別, 共1000個樣本供璧,每個樣本2個特征存崖,共3個簇,簇中心在[-1,-1], [1,1], [2,2]睡毒, 簇方差分別為[0.4, 0.5, 0.2]
X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [1,1], [2,2]], cluster_std=[0.4, 0.5, 0.2])
plt.scatter(X[:, 0], X[:, 1], marker='o', c=y)
plt.show()
輸出的圖如下:
4 分組正態(tài)分布混合數(shù)據(jù)
我們用make_gaussian_quantiles生成分組多維正態(tài)分布的數(shù)據(jù)来惧。幾個關鍵參數(shù)有n_samples(生成樣本數(shù)), n_features(正態(tài)分布的維數(shù))吕嘀,mean(特征均值)违寞, cov(樣本協(xié)方差的系數(shù))贞瞒, n_classes(數(shù)據(jù)在正態(tài)分布中按分位數(shù)分配的組數(shù))。 例子如下
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets import make_gaussian_quantiles
#生成2維正態(tài)分布趁曼,生成的數(shù)據(jù)按分位數(shù)分成3組军浆,1000個樣本,2個樣本特征均值為1和2,協(xié)方差系數(shù)為2
X1, Y1 = make_gaussian_quantiles(n_samples=1000, n_features=2, n_classes=3, mean=[1,2],cov=2)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1)
輸出圖如下
以上就是生產(chǎn)隨機數(shù)據(jù)的一個總結(jié)挡闰,希望可以幫到學習機器學習算法的朋友們乒融。