对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...
數據降維概述:數據降維是機器學習領域中重要的內容,所謂的降維就是采用某種映射方法,將高維空間中的數據點映射到低維的空間中。其本質是學習一個映射函數f: x->y。其中x是原始數據點的表述,目前多使用向量表達式;y是數據點映射后的低維向量表達;通常y的維度小于x的維度。映射函數可能是顯示的或者是隱式的,可能是線性的也可能是非線性的。
目前大部分降維算法是處理向量表達的數據,也有一些降維算法處理高階張量表達式數據,之所以使用降維后的數據表示是因為在原始的高維空間中,包含冗余信息以及噪聲信息,這些信息會對數據的預測產生誤差,降低了準確率;通過降維,我們可以減少噪聲或冗余數據帶來的誤差,提高預測精度,同時還可以通過該方法來尋找數據內部的本質結構。在很多算法中,降維算法成為了數據預處理的一部分,比如PCA算法(主成分分析)。
對于降維效果的評估,如果降維后性能有所提高,則說明降維起到了效果,如果將數據降維到二維或者三維,則可以通過可視化技術來直觀地判斷降維的效果。
主成分分析(PCA):主成分分析是一種常用的降維方法,其模型的原型為:
class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)
參數說明:
n_components:一個整數,指定降維后的維度(如果為None,則選擇它的值為min(n_samples, n_features)。如果為字符串‘mle’,則使用Minka's MLE算法來猜測降維后的維度。如果為大于0小于1的浮點數,則指定的是降維后的維數占原始維數的百分比)。
copy:一個布爾值,如果為False,則直接使用原始數據來訓練,結果會覆蓋原始數據所在的數組;如果為True,那么使用的是拷貝的數據來訓練,結果不會覆蓋原始數據所在的數組。
whiten:一個布爾值,如果為True,則會將特征向量除以n_samples倍的特征值,從而保證非相關輸出的方差為1(該白化操作可能會丟失部分信息,但是有時候在接下來的機器學習階段能夠活的更好的性能)。
屬性說明:
components_:主成分的數值
explained_variance_ratio_:一個數組,元素是每個主成分的explained variance的比例
mean_:一個數組,元素是每個特征的統計平均值
n_components_:一個整數,指示主成分有多少個元素
方法說明:
fit(x, y):訓練模型。
transform(x):執行降維
fit_transform(x, [, y]):訓練模型并降維
inverse_transform(x):逆向操作,執行升維,即將數據從低維空間逆向轉化成原始空間。
注意:
decomposition.PCA是基于scipy.linalg來實現的SVD分解,因此他不能應用于稀疏矩陣,并且無法使用與大規模的數據集(因為他要求所有的數據一次加載進內存)。
實例說明:
from sklearn.decomposition import PCA
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
#使用scikit-learn自帶的鳶尾花數據集
def load_data():
iris = load_iris()
return iris.data, iris.target
#注意:數據降維的話,其實沒有一個好壞的標準,所以這里只給出降維的一些結果即可視化之后的數據處理
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)
#將數據集降到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)
運行后的對應結果如下:
鳶尾花數據使用PCA降到二維后的結果
由上述運行結果可知,這里運行后的個數據點分類0和1、2有明顯的分辨出來,但是1和2則有部分數據重合。
總結
以上是生活随笔為你收集整理的对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两条信号之间加电容_上海贴片电阻电容厂家
- 下一篇: angular 字符串转换成数字_Pyt