日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...

發布時間:2024/4/11 python 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对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: 数据降维及主成分分析...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。