一、基於Sklearn的PCA代碼實現
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.decomposition import PCA 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) knn_clf = KNeighborsClassifier() knn_clf.fit(X_train, y_train) pca = PCA(n_components=2) pca.fit(X) X_reduction = pca.transform(X) for i in range(10): plt.scatter(X_reduction[y==i,0], X_reduction[y==i,1], alpha=0.8)
輸出結果:
二、運行過程中出現的問題。
初次運行時出現:No module named 'sklearn.model_selection'
代碼提示指向:
from sklearn.model_selection import train_test_split
仔細查看代碼,並無問題,問題出在Sklearn的版本過低,Sklearn 0.17.1的版本(及以前)是不包含model_selection庫的。
運行 Anaconda Prompt(編程使用Anaconda3),輸入conda list 可查看各種庫的版本,其中scikit-learn的版本顯示為:
這時就需要更新版本了,可輸入:conda update scikit-learn 進行版本更新。
若輸入:conda update scikit-learn 報錯,則可使用:pip install -U scikit-learn 。
成功安裝之后運行代碼,不報錯,問題解決。