深度之眼 百面機器學習 PCA降維

2021-10-11 10:23:13 字數 3453 閱讀 5284

**除了這些輸入引數外,有幾個pca類的成員值得關注。

fit()可以說是scikit-learn中通用的方法,每個需要訓練的演算法都會有fit()方法,它其實就是演算法中的「訓練」這一步驟。因為pca是無監督學習演算法,此處y自然等於none。

fit(x),表示用資料x來訓練pca模型。

函式返回值:呼叫fit方法的物件本身。比如pca.fit(x),表示用x對pca這個物件進行訓練。

用x來訓練pca模型,同時返回降維後的資料。

newx=pca.fit_transform(x),newx就是降維後的資料。

將降維後的資料轉換成原始資料,x=pca.inverse_transform(newx)

將資料x轉換成降維後的資料。當模型訓練好後,對於新輸入的資料,都可以用transform方法來降維。

import numpy as np

import matplotlib.pyplot as plt

from sklearn import datasets

from sklearn.metrics import classification_report

from sklearn.model_selection import train_test_split

# k近鄰分類器

from sklearn.neighbors import kneighborsclassifier

# pca

from sklearn.decomposition import pca

# k近鄰

knn_clf = kneighborsclassifier(

)knn_clf.fit(x_train, y_train)

acc = knn_clf.score(x_test, y_test)

print(

"knn acc is %s: " % acc)

# pca

pca = pca(n_components=2)

pca.fit(x_train, y_train)

x_train_reduction = pca.transform(x_train)

x_test_reduction = pca.transform(x_test)

knn_clf = kneighborsclassifier(

)knn_clf.fit(x_train_reduction, y_train)

acc = knn_clf.score(x_test_reduction, y_test)

print(

"after pca, knn acc is %s: " % acc)

# 顯示方差的改變曲線

plt.plot(

[i for i in range(x_train.shape[1])],

[np.sum(pca.explained_variance_ratio_[:i + 1]

)for i in range(x_train.shape[1])]

)plt.show(

)# 降維視覺化

pca = pca(n_components=2)

x_reduction = pca.fit_transform(x)

for i in range(10):

plt.scatter(x_reduction[y == i, 0], x_reduction[y == i, 1], alpha=0.8)

plt.show(

)

import numpy as np

import matplotlib.pyplot as plt

from sklearn import datasets

from sklearn.metrics import classification_report

from sklearn.model_selection import train_test_split

# k近鄰分類器

from sklearn.neighbors import kneighborsclassifier

# pca

from sklearn.decomposition import pca

if __name__ ==

'__main__'

: digits = datasets.load_digits(

) x = digits.data

y = digits.target

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=666)

# k近鄰

knn_clf = kneighborsclassifier(

) knn_clf.fit(x_train, y_train)

acc = knn_clf.score(x_test, y_test)

print(

"knn acc is %s: " % acc)

# pca

pca = pca(n_components=2)

pca.fit(x_train, y_train)

x_train_reduction = pca.transform(x_train)

x_test_reduction = pca.transform(x_test)

knn_clf = kneighborsclassifier(

) knn_clf.fit(x_train_reduction, y_train)

acc = knn_clf.score(x_test_reduction, y_test)

print(

"after pca, knn acc is %s: " % acc)

# 顯示方差的改變曲線

plt.plot(

[i for i in range(x_train.shape[1])],

[np.sum(pca.explained_variance_ratio_[:i + 1]

)for i in range(x_train.shape[1])]

) plt.show(

)# 降維視覺化

機器學習之PCA降維

1.前言 如果學習分類演算法,最好從線性的入手,線性分類器最簡單的就是lda,它可以看做是簡化版的svm,如果想理解svm這種分類器,那理解lda就是很有必要的了。2.線性判別分析 lda 1 lda思想 lda是一種監督學習的降維技術,也就是說它的資料集的每個樣本是有類別輸出的。這點和pca不同。...

機器學習(五)PCA資料降維

pca資料降維 一 pca 相關理論 pca演算法又稱主成分分析,是一種分析 簡化資料集的技術。主成分分析經常用於減少資料集的 維數,同時保持資料集中的對方差貢獻最大的特徵。pca 的數學定義是 乙個 正交化線性變換,把資料變換到乙個新的座標系統中,使得這一資料的任何投影的第一大方差在第乙個座標 稱...

《百面機器學習》讀書筆記(四) 降維

全部筆記的彙總貼 百面機器學習 讀書筆記彙總 在機器學習中,資料通常需要被表示成向量形式以輸入模型進行訓練。但眾所周知,對向維向量進行處理和分析時,會極大地消耗系統資源,甚至產生維度災難。因此,進行降維,即用乙個低維度的向量表示原始高維度的特徵就顯得尤為重要。常見的降維方法有主成分分析 線性判別分析...