对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...
數(shù)據(jù)降維概述:數(shù)據(jù)降維是機(jī)器學(xué)習(xí)領(lǐng)域中重要的內(nèi)容,所謂的降維就是采用某種映射方法,將高維空間中的數(shù)據(jù)點(diǎn)映射到低維的空間中。其本質(zhì)是學(xué)習(xí)一個(gè)映射函數(shù)f: x->y。其中x是原始數(shù)據(jù)點(diǎn)的表述,目前多使用向量表達(dá)式;y是數(shù)據(jù)點(diǎn)映射后的低維向量表達(dá);通常y的維度小于x的維度。映射函數(shù)可能是顯示的或者是隱式的,可能是線(xiàn)性的也可能是非線(xiàn)性的。
目前大部分降維算法是處理向量表達(dá)的數(shù)據(jù),也有一些降維算法處理高階張量表達(dá)式數(shù)據(jù),之所以使用降維后的數(shù)據(jù)表示是因?yàn)樵谠嫉母呔S空間中,包含冗余信息以及噪聲信息,這些信息會(huì)對(duì)數(shù)據(jù)的預(yù)測(cè)產(chǎn)生誤差,降低了準(zhǔn)確率;通過(guò)降維,我們可以減少噪聲或冗余數(shù)據(jù)帶來(lái)的誤差,提高預(yù)測(cè)精度,同時(shí)還可以通過(guò)該方法來(lái)尋找數(shù)據(jù)內(nèi)部的本質(zhì)結(jié)構(gòu)。在很多算法中,降維算法成為了數(shù)據(jù)預(yù)處理的一部分,比如PCA算法(主成分分析)。
對(duì)于降維效果的評(píng)估,如果降維后性能有所提高,則說(shuō)明降維起到了效果,如果將數(shù)據(jù)降維到二維或者三維,則可以通過(guò)可視化技術(shù)來(lái)直觀地判斷降維的效果。
主成分分析(PCA):主成分分析是一種常用的降維方法,其模型的原型為:
class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)
參數(shù)說(shuō)明:
n_components:一個(gè)整數(shù),指定降維后的維度(如果為None,則選擇它的值為min(n_samples, n_features)。如果為字符串‘mle’,則使用Minka's MLE算法來(lái)猜測(cè)降維后的維度。如果為大于0小于1的浮點(diǎn)數(shù),則指定的是降維后的維數(shù)占原始維數(shù)的百分比)。
copy:一個(gè)布爾值,如果為False,則直接使用原始數(shù)據(jù)來(lái)訓(xùn)練,結(jié)果會(huì)覆蓋原始數(shù)據(jù)所在的數(shù)組;如果為T(mén)rue,那么使用的是拷貝的數(shù)據(jù)來(lái)訓(xùn)練,結(jié)果不會(huì)覆蓋原始數(shù)據(jù)所在的數(shù)組。
whiten:一個(gè)布爾值,如果為T(mén)rue,則會(huì)將特征向量除以n_samples倍的特征值,從而保證非相關(guān)輸出的方差為1(該白化操作可能會(huì)丟失部分信息,但是有時(shí)候在接下來(lái)的機(jī)器學(xué)習(xí)階段能夠活的更好的性能)。
屬性說(shuō)明:
components_:主成分的數(shù)值
explained_variance_ratio_:一個(gè)數(shù)組,元素是每個(gè)主成分的explained variance的比例
mean_:一個(gè)數(shù)組,元素是每個(gè)特征的統(tǒng)計(jì)平均值
n_components_:一個(gè)整數(shù),指示主成分有多少個(gè)元素
方法說(shuō)明:
fit(x, y):訓(xùn)練模型。
transform(x):執(zhí)行降維
fit_transform(x, [, y]):訓(xùn)練模型并降維
inverse_transform(x):逆向操作,執(zhí)行升維,即將數(shù)據(jù)從低維空間逆向轉(zhuǎn)化成原始空間。
注意:
decomposition.PCA是基于scipy.linalg來(lái)實(shí)現(xiàn)的SVD分解,因此他不能應(yīng)用于稀疏矩陣,并且無(wú)法使用與大規(guī)模的數(shù)據(jù)集(因?yàn)樗笏械臄?shù)據(jù)一次加載進(jìn)內(nèi)存)。
實(shí)例說(shuō)明:
from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
#使用scikit-learn自帶的鳶尾花數(shù)據(jù)集
def load_data():
iris = load_iris()
return iris.data, iris.target
#注意:數(shù)據(jù)降維的話(huà),其實(shí)沒(méi)有一個(gè)好壞的標(biāo)準(zhǔn),所以這里只給出降維的一些結(jié)果即可視化之后的數(shù)據(jù)處理
def test_PCA(*data):
x, y = data
pca = PCA(n_components=None)
pca.fit(x)
print("explained variance ratio:{}".format(pca.explained_variance_ratio_))
x, y = load_data()
test_PCA(x, y)
#將數(shù)據(jù)集降到2維
def plot_PCA(*data):
x, y = data
pca = PCA(n_components=2)
pca.fit(x)
x_pca = pca.transform(x)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
colors = ((1,0,0),(0,1,0),(0,0,1),(0.5,0.5,0),(0.5,1,0.5),(0.1,1,0.9))
for label, color in zip(np.unique(y), colors):
position = y == label
ax.scatter(x_pca[position, 0], x_pca[position, 1], label="target=%d"%label, color=color)
#繪圖
ax.set_xlabel("x[0]")
ax.set_ylabel("y[0]")
ax.legend(loc="best")
ax.set_title("PCA decomposition")
plt.show()
x, y = load_data()
plot_PCA(x, y)
運(yùn)行后的對(duì)應(yīng)結(jié)果如下:
鳶尾花數(shù)據(jù)使用PCA降到二維后的結(jié)果
由上述運(yùn)行結(jié)果可知,這里運(yùn)行后的個(gè)數(shù)據(jù)點(diǎn)分類(lèi)0和1、2有明顯的分辨出來(lái),但是1和2則有部分?jǐn)?shù)據(jù)重合。
總結(jié)
以上是生活随笔為你收集整理的对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 两条信号之间加电容_上海贴片电阻电容厂家
- 下一篇: angular 字符串转换成数字_Pyt