**除了這些輸入引數外,有幾個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 的數學定義是 乙個 正交化線性變換,把資料變換到乙個新的座標系統中,使得這一資料的任何投影的第一大方差在第乙個座標 稱...
《百面機器學習》讀書筆記(四) 降維
全部筆記的彙總貼 百面機器學習 讀書筆記彙總 在機器學習中,資料通常需要被表示成向量形式以輸入模型進行訓練。但眾所周知,對向維向量進行處理和分析時,會極大地消耗系統資源,甚至產生維度災難。因此,進行降維,即用乙個低維度的向量表示原始高維度的特徵就顯得尤為重要。常見的降維方法有主成分分析 線性判別分析...