import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#使用pandas分別讀取訓練資料和測試資料
digits_train = pd.read_csv('',header=none)
digits_test = pd.read_csv('',header=none)
#從訓練與測試數字集上都分離出64維度的畫素特徵與1維度的數字目標
x_digits = digits_train[np.arange(64)]
y_digits = digits_train[64]
'''#匯入pca
from sklearn.decomposition import pca
#初始化乙個將高緯度特徵向量壓縮至兩個維度的pca
estimator = pca(n_components=2)
x_pca = estimator.fit_transform(x_digits)
#顯示10類手寫體數字經pca壓縮後的2維空間分布
def plot_pca_scatter():
colors = ['black','blue','purple','yellow','white','red','lime','cyan','orange','gray']
for i in range(len(colors)):
px = x_pca[:,0][y_digits.as_matrix()==i]
py = x_pca[:,1][y_digits.as_matrix()==i]
plt.scatter(px, py, c = colors[i])
plt.legend(np.arange(0,10).astype(str))
plt.xlabel('first principal component')
plt.ylabel('second principal component')
plot_pca_scatter()
'''#從訓練與測試數字集上都分離出64維度的畫素特徵與1維度的數字目標
x_train = digits_train[np.arange(64)] #訓練集
y_train = digits_train[64]
x_test = digits_test[np.arange(64)] #測試集
y_test = digits_test[64]
#匯入基於線性核的支援向量機分類器
from sklearn.svm import linearsvc
svc = linearsvc()
svc.fit(x_train, y_train)
y_predict = svc.predict(x_test)
#將原始資料壓縮到20維度
from sklearn.decomposition import pca
estimator = pca(n_components=20) #64維度降維到20維度
pca_x_train = estimator.fit_transform(x_train)
pca_x_test = estimator.transform(x_test)
pca_svc = linearsvc()
pca_svc.fit(x_train, y_train)
pca_y_predict = pca_svc.predict(x_test)
#效能分析
from sklearn.metrics import classification_report
print('the high dimension score is :', svc.score(x_test, y_test))
print(classification_report(y_test, y_predict))
print('the low dimension score is :', pca_svc.score(x_test, y_test))
print(classification_report(y_test, pca_y_predict))
輸出:
分析:儘管經過pca特徵壓縮和重建之後的特徵資料會損失2%左右的**準確度,但是相比於原始資料六十四維度的特徵而言
卻使用pca壓縮並且降低了68.75%的維度。
有監督學習和無監督學習 無監督學習
一.無監督學習包含的演算法 聚類 kmeans聚類演算法 降維 pca 之所以叫無監督學習 是因為模型是從無標籤的資料開始學習,沒有目標值。二.kmeans聚類 1.聚類演算法步驟 定義 將高維資料轉化為低維資料的過程,在此過程中可能會捨棄原有資料,創造新的變數 作用 降低原始資料的維數 複雜度 損...
無監督學習與監督學習
1.無監督和有監督的理解方法有很多,主要可以從以下幾方面來理解 1 無監督與監督學習的區別在於乙個無教學值,乙個有教學值。但是,個人認為他們的區別在於無監督學習一般是採用聚簇等演算法來分類不同樣本。而監督學習一般是利用教學值與實際輸出值產生的誤差,進行誤差反向傳播修改權值來完成網路修正的。但是無監督...
監督學習和無監督學習
機器學習要解決的第一類問題是分類問題。機器學習的另一項任務是回歸,它主要用於 數值型資料。大多數人可能都見過回歸的例子 資料擬合曲線 通過給定資料點的最優擬合曲線。分類和回歸都屬於監督學習,之所以稱之為監督學習,是因為這類演算法必須知道 什麼,即目標變數的分類資訊。與監督學習對應的是無監督學習,此時...