▌概述
本文主要介紹一種降維方法,PCA(Principal Component Analysis,主成分分析)。降維致力于解決三類問(wèn)題:
1.降維可以緩解維度災(zāi)難問(wèn)題;
2.降維可以在壓縮數(shù)據(jù)的同時(shí)讓信息損失最小化;
3.理解幾百個(gè)維度的數(shù)據(jù)結(jié)構(gòu)很困難,兩三個(gè)維度的數(shù)據(jù)通過(guò)可視化更容易理解。
下面,將從簡(jiǎn)介、計(jì)算步驟、應(yīng)用三方面進(jìn)行理解PCA的降維作用。
▌PCA簡(jiǎn)介
在理解特征提取與處理時(shí),涉及高維特征向量的問(wèn)題往往容易陷入維度災(zāi)難。隨著數(shù)據(jù)集維度的增加,算法學(xué)習(xí)需要的樣本數(shù)量呈指數(shù)級(jí)增加。有些應(yīng)用中,遇到這樣的大數(shù)據(jù)是非常不利的,而且從大數(shù)據(jù)集中學(xué)習(xí)需要更多的內(nèi)存和處理能力。另外,隨著維度的增加,數(shù)據(jù)的稀疏性會(huì)越來(lái)越高。在高維向量空間中探索同樣的數(shù)據(jù)集比在同樣稀疏的數(shù)據(jù)集中探索更加困難。
主成分分析也稱為卡爾胡寧-勒夫變換(Karhunen-Loeve Transform),是一種用于探索高維數(shù)據(jù)結(jié)構(gòu)的技術(shù)。PCA通常用于高維數(shù)據(jù)集的探索與可視化。還可以用于數(shù)據(jù)壓縮,數(shù)據(jù)預(yù)處理等。PCA可以把可能具有相關(guān)性的高維變量合成線性無(wú)關(guān)的低維變量,稱為主成分( principal components)。新的低維數(shù)據(jù)集會(huì)盡可能的保留原始數(shù)據(jù)的變量。
PCA將數(shù)據(jù)投射到一個(gè)低維子空間實(shí)現(xiàn)降維。例如,二維數(shù)據(jù)集降維就是把點(diǎn)投射成一條線,數(shù)據(jù)集的每個(gè)樣本都可以用一個(gè)值表示,不需要兩個(gè)值。三維數(shù)據(jù)集可以降成二維,就是把變量映射成一個(gè)平面。一般情況下,nn維數(shù)據(jù)集可以通過(guò)映射降成kk維子空間,其中k≤n。
假如你是一本養(yǎng)花工具宣傳冊(cè)的攝影師,你正在拍攝一個(gè)水壺。水壺是三維的,但是照片是二維的,為了更全面的把水壺展示給客戶,你需要從不同角度拍幾張圖片。下圖是你從四個(gè)方向拍的照片:
第一張圖里水壺的背面可以看到,但是看不到前面。第二張圖是拍前面,可以看到壺嘴,這張圖可以提供了第一張圖缺失的信息,但是壺把看不到了。從第三張俯視圖里無(wú)法看出壺的高度。第四張圖是你真正想要的,水壺的高度,頂部,壺嘴和壺把都清晰可見(jiàn)。
PCA的設(shè)計(jì)理念與此類似,它可以將高維數(shù)據(jù)集映射到低維空間的同時(shí),盡可能的保留更多變量。PCA旋轉(zhuǎn)數(shù)據(jù)集與其主成分對(duì)齊,將最多的變量保留到第一主成分中。假設(shè)我們有下圖所示的數(shù)據(jù)集:
數(shù)據(jù)集看起來(lái)像一個(gè)從原點(diǎn)到右上角延伸的細(xì)長(zhǎng)扁平的橢圓。要降低整個(gè)數(shù)據(jù)集的維度,我們必須把點(diǎn)映射成一條線。下圖中的兩條線都是數(shù)據(jù)集可以映射的,映射到哪條線樣本變化最大?
顯然,樣本映射到黑色虛線的變化比映射到紅色點(diǎn)線的變化要大的多。實(shí)際上,這條黑色虛線就是第一主成分。第二主成分必須與第一主成分正交,也就是說(shuō)第二主成分必須是在統(tǒng)計(jì)學(xué)上獨(dú)立的,會(huì)出現(xiàn)在與第一主成分垂直的方向,如下圖所示:
后面的每個(gè)主成分也會(huì)盡量多的保留剩下的變量,唯一的要求就是每一個(gè)主成分需要和前面的主成分正交。 現(xiàn)在假設(shè)數(shù)據(jù)集是三維的,散點(diǎn)圖看起來(lái)像是沿著一個(gè)軸旋轉(zhuǎn)的圓盤。
這些點(diǎn)可以通過(guò)旋轉(zhuǎn)和變換使圓盤完全變成二維的。現(xiàn)在這些點(diǎn)看著像一個(gè)橢圓,第三維上基本沒(méi)有變量,可以被忽略。當(dāng)數(shù)據(jù)集不同維度上的方差分布不均勻的時(shí)候,PCA最有用。(如果是一個(gè)球殼形數(shù)據(jù)集,PCA不能有效的發(fā)揮作用,因?yàn)楦鱾€(gè)方向上的方差都相等;沒(méi)有丟失大量的信息維度一個(gè)都不能忽略)。
▌PCA的計(jì)算步驟
在介紹PCA的運(yùn)行步驟之前,有一些術(shù)語(yǔ)需要說(shuō)明一下。
方差,協(xié)方差和協(xié)方差矩陣(對(duì)此概念不是很理解可以參考附錄鏈接)
如何通俗易懂地解釋「協(xié)方差」與「相關(guān)系數(shù)」的概念?中“GRAYLAMB”的回答。 (https://www.zhihu.com/question/20852004)
方差(Variance)是度量一組數(shù)據(jù)的分散程度。方差是各個(gè)樣本與樣本均值的差的平方和的均值:
協(xié)方差(Covariance)是度量?jī)蓚€(gè)變量的變動(dòng)的同步程度,也就是度量?jī)蓚€(gè)變量線性相關(guān)性程度。
如果兩個(gè)變量的協(xié)方差為0,則統(tǒng)計(jì)學(xué)上認(rèn)為二者線性無(wú)關(guān)。注意兩個(gè)無(wú)關(guān)的變量并非完全獨(dú)立,只是沒(méi)有線性相關(guān)性而已。計(jì)算公式如下:
如果協(xié)方差大于0表示一個(gè)變量增大是另一個(gè)變量也會(huì)增大,即正相關(guān),協(xié)方差小于0表示一個(gè)變量增大是另一個(gè)變量會(huì)減小,即負(fù)相關(guān)。
協(xié)方差矩陣(Covariance matrix)由數(shù)據(jù)集中兩兩變量的協(xié)方差組成。矩陣的第(i,j)(i,j)個(gè)元素是數(shù)據(jù)集中第ii和第jj個(gè)元素的協(xié)方差。例如,三維數(shù)據(jù)的協(xié)方差矩陣如下所示:
讓我們計(jì)算下表數(shù)據(jù)的協(xié)方差矩陣:
可以有python中的numpy包計(jì)算均值和協(xié)方差:
importnumpyasnpX=[[2,0,-1.4],[2.2,0.2,-1.5],[2.4,0.1,-1],[1.9,0,-1.2]]print(np.mean(X,axis=0))print(np.cov(np.array(X).T))
得到三個(gè)變量的樣本均值分別是2.125,0.075和-1.275;協(xié)方差矩陣為:
▌特征向量和特征值
(可以直觀的理解:“特征向量是坐標(biāo)軸,特征值是坐標(biāo)”)
向量是具有大?。╩agnitude)和方向(direction)的幾何概念。
特征向量(eigenvector)是由滿足如下公式的矩陣得到的一個(gè)非零向量:
其中,是特征向量,A是方陣,λ是特征值。經(jīng)過(guò)A變換之后,特征向量的方向保持不變,只是其大小發(fā)生了特征值倍數(shù)的變化。也就是說(shuō),一個(gè)特征向量左乘一個(gè)矩陣之后等于等比例放縮(scaling)特征向量。德語(yǔ)單詞eigen的意思是“屬于…或…專有( belonging to or peculiar to)”;矩陣的特征向量是屬于并描述數(shù)據(jù)集結(jié)構(gòu)的向量。
特征向量和特征值只能由方陣得出,且并非所有方陣都有特征向量和特征值。如果一個(gè)矩陣有特征向量和特征值,那么它的每個(gè)維度都有一對(duì)特征向量和特征值。矩陣的主成分是由其協(xié)方差矩陣的特征向量,按照對(duì)應(yīng)的特征值大小排序得到的。最大的特征值就是第一主成分,第二大的特征值就是第二主成分,以此類推。
讓我們來(lái)計(jì)算下面矩陣的特征向量和特征值:
根據(jù)前面的公式AA乘以特征向量,必然等于特征值乘以特征向量。我們建立特征方程求解:
從特征方程可以看出,矩陣與單位矩陣和特征值乘積的矩陣行列式為0,即:
矩陣的兩個(gè)特征值都等于-1。現(xiàn)在再用特征值來(lái)解特征向量。 把λ=?1帶入:
得:
所以有:
任何滿足方程的非零向量(取
)都可以作為特征向量:?
PCA需要單位特征向量,也就是L2范數(shù)等于1的特征向量。?
于是單位特征向量是:
于是單位特征向量是:
這里可以通過(guò)numpy檢驗(yàn)手算的特征向量是否正確。eig函數(shù)返回特征值和特征向量的元組:
importnumpyasnpw,v=np.linalg.eig(np.array([[1,-2],[2,-3]]))print('特征值:{} 特征向量:{}'.format(w,v))
輸出(這里特征值不同為1,是由于python編譯器對(duì)浮點(diǎn)數(shù)據(jù)精度要求所致):
特征值:[-0.99999998 -1.00000002]
特征向量:[[ 0.70710678 0.70710678] [ 0.70710678 0.70710678]]
▌?dòng)肞CA降維
讓我們用PCA方法把下表二維數(shù)據(jù)降成一維:
PCA第一步是用樣本數(shù)據(jù)減去樣本均值:
然后,我們計(jì)算數(shù)據(jù)的主成分。前面介紹過(guò),矩陣的主成分是其協(xié)方差矩陣的特征向量按照對(duì)應(yīng)的特征值大小排序得到的。主成分可以通過(guò)兩種方法計(jì)算:第一種方法是計(jì)算數(shù)據(jù)協(xié)方差矩陣。因?yàn)閰f(xié)方差矩陣是方陣,所以我們可以用前面的方法計(jì)算特征值和特征向量。第二種方法是用數(shù)據(jù)矩陣的奇異值分解(singular value decomposition)來(lái)找協(xié)方差矩陣的特征向量和特征值的平方根。我們先介紹第一種方法,然后介紹scikit-learn的PCA實(shí)現(xiàn),也就是第二種方法。上述數(shù)據(jù)集的解釋變量協(xié)方差矩陣如下:
用前面介紹過(guò)的方法,特征值是1.25057433和0.03398123,單位特征向量是:
下面我們把數(shù)據(jù)映射到主成分上。第一主成分是最大特征值對(duì)應(yīng)的特征向量,因此我們要建一個(gè)轉(zhuǎn)換矩陣,它的每一列都是主成分的特征向量。如果我們要把5維數(shù)據(jù)降成3維,那么我們就要用一個(gè)3維矩陣做轉(zhuǎn)換矩陣。在本例中,我們將把我們的二維數(shù)據(jù)映射成一維,因此我們只需要用特征向量中的第一主成分作為轉(zhuǎn)換矩陣。最后,我們用數(shù)據(jù)矩陣右乘轉(zhuǎn)換矩陣。下面就是第一主成分映射的結(jié)果:
通過(guò)numpy包中的矩陣調(diào)用實(shí)現(xiàn)過(guò)程如下:
importnumpyasnpx=np.mat([[0.9,2.4,1.2,0.5,0.3,1.8,0.5,0.3,2.5,1.3],[1,2.6,1.7,0.7,0.7,1.4,0.6,0.6,2.6,1.1]])x=x.TT=x-x.mean(axis=0)C=np.cov(x.T)w,v=np.linalg.eig(C)v_=np.mat(v[:,0])#每個(gè)特征值對(duì)應(yīng)的是特征矩陣的每個(gè)列向量v_=v_.T#默認(rèn)以行向量保存,轉(zhuǎn)換成公式中的列向量形式y(tǒng)=T*v_print(y)
分割線==================
▌PCA的運(yùn)用
高維數(shù)據(jù)可視化
二維或三維數(shù)據(jù)更容易通過(guò)可視化發(fā)現(xiàn)模式。一個(gè)高維數(shù)據(jù)集是無(wú)法用圖形表示的,但是我們可以通過(guò)降維方法把它降成二維或三維數(shù)據(jù)來(lái)可視化。 Fisher1936年收集了三種鳶尾花分別50個(gè)樣本數(shù)據(jù)(Iris Data):Setosa、Virginica、Versicolour。解釋變量是花瓣(petals)和萼片(sepals)長(zhǎng)度和寬度的測(cè)量值,響應(yīng)變量是花的種類。鳶尾花數(shù)據(jù)集經(jīng)常用于分類模型測(cè)試,scikit-learn中也有。讓我們把iris數(shù)據(jù)集降成方便可視化的二維數(shù)據(jù):
%matplotlibinlineimportmatplotlib.pyplotaspltfromsklearn.decompositionimportPCAfromsklearn.datasetsimportload_iris
首先,我們導(dǎo)入鳶尾花數(shù)據(jù)集和PCA估計(jì)器。PCA類把主成分的數(shù)量作為超參數(shù),和其他估計(jì)器一樣,PCA也用fit_transform()返回降維的數(shù)據(jù)矩陣:
data=load_iris()y=data.targetX=data.datapca=PCA(n_components=2)reduced_X=pca.fit_transform(X)
最后,我們把圖形畫出來(lái):
red_x,red_y=[],[]blue_x,blue_y=[],[]green_x,green_y=[],[]foriinrange(len(reduced_X)):ify[i]==0:red_x.append(reduced_X[i][0])red_y.append(reduced_X[i][1])elify[i]==1:blue_x.append(reduced_X[i][0])blue_y.append(reduced_X[i][1])else:green_x.append(reduced_X[i][0])green_y.append(reduced_X[i][1])plt.scatter(red_x,red_y,c='r',marker='x')plt.scatter(blue_x,blue_y,c='b',marker='D')plt.scatter(green_x,green_y,c='g',marker='.')plt.show()
降維的數(shù)據(jù)如上圖所示。每個(gè)數(shù)據(jù)集中三個(gè)類都用不同的符號(hào)標(biāo)記。從這個(gè)二維數(shù)據(jù)圖中可以明顯看出,有一個(gè)類與其他兩個(gè)重疊的類完全分離。這個(gè)結(jié)果可以幫助我們選擇分類模型。
臉部識(shí)別
現(xiàn)在讓我們用PCA來(lái)解決一個(gè)臉部識(shí)別問(wèn)題。臉部識(shí)別是一個(gè)監(jiān)督分類任務(wù),用于從照片中認(rèn)出某個(gè)人。本例中,我們用劍橋大學(xué)AT&T實(shí)驗(yàn)室的Our Database of Faces數(shù)據(jù)集(http://www.cl.cam.ac.uk/Research/DTG/attarchive/pub/data/att_faces.zip),這個(gè)數(shù)據(jù)集包含40個(gè)人每個(gè)人10張照片。這些照片是在不同的光照條件下拍攝的,每張照片的表情也不同。照片都是黑白的,尺寸為92 x 112像素。雖然這些圖片都不大,但是每張圖片的按像素強(qiáng)度排列的特征向量也有(92 x 112=)10304維。這些高維數(shù)據(jù)的訓(xùn)練可能需要很多樣本才能避免擬合過(guò)度。而我們樣本量并不大,所有我們用PCA計(jì)算一些主成分來(lái)表示這些照片。
我們可以把照片的像素強(qiáng)度矩陣轉(zhuǎn)換成向量,然后用所有的訓(xùn)練照片的向量建一個(gè)矩陣。每個(gè)照片都是數(shù)據(jù)集主成分的線性組合。在臉部識(shí)別理論中,這些主成分稱為特征臉(eigenfaces)。特征臉可以看成是臉部的標(biāo)準(zhǔn)化組成部分。數(shù)據(jù)集中的每張臉都可以通過(guò)一些標(biāo)準(zhǔn)臉的組合生成出來(lái),或者說(shuō)是最重要的特征臉線性組合的近似值。
fromosimportwalk,pathimportnumpyasnpimportmahotasasmhfromsklearn.cross_validationimporttrain_test_splitfromsklearn.cross_validationimportcross_val_scorefromsklearn.preprocessingimportscalefromsklearn.decompositionimportPCAfromsklearn.linear_modelimportLogisticRegressionfromsklearn.metricsimportclassification_reportX=[]y=[]
下面我們把照片導(dǎo)入Numpy數(shù)組,然后把它們的像素矩陣轉(zhuǎn)換成向量:
fordir_path,dir_names,file_namesinwalk('C:/Users/HLB/Desktop/firstblog/att_faces/'):#walk()函數(shù)內(nèi)存放的是數(shù)據(jù)的絕對(duì)路徑,同時(shí)注意斜杠的方向。forfninfile_names:iffn[-3:]=='pgm':image_filename=path.join(dir_path,fn)X.append(scale(mh.imread(image_filename,as_grey=True).reshape(10304).astype('float32')))y.append(dir_path)X=np.array(X)
然后,我們用交叉檢驗(yàn)建立訓(xùn)練集和測(cè)試集,在訓(xùn)練集上用PCA:
X_train,X_test,y_train,y_test=train_test_split(X,y)pca=PCA(n_components=150)
我們把所有樣本降到150維,然后訓(xùn)練一個(gè)邏輯回歸分類器。數(shù)據(jù)集包括40個(gè)類;scikit-learn底層會(huì)自動(dòng)用one versus all策略創(chuàng)建二元分類器:
X_train_reduced=pca.fit_transform(X_train)X_test_reduced=pca.transform(X_test)print('訓(xùn)練集數(shù)據(jù)的原始維度是:{}'.format(X_train.shape))print('PCA降維后訓(xùn)練集數(shù)據(jù)是:{}'.format(X_train_reduced.shape))classifier=LogisticRegression()accuracies=cross_val_score(classifier,X_train_reduced,y_train)
訓(xùn)練集數(shù)據(jù)的原始維度是:(300, 10304) PCA降維后訓(xùn)練集數(shù)據(jù)是:(300, 150)
最后,我們用交叉驗(yàn)證和測(cè)試集評(píng)估分類器的性能。分類器的平均綜合評(píng)價(jià)指標(biāo)(F1 score)是0.88,但是需要花費(fèi)更多的時(shí)間訓(xùn)練,在更多訓(xùn)練實(shí)例的應(yīng)用中可能會(huì)更慢。
print('交叉驗(yàn)證準(zhǔn)確率是:{} {}'.format(np.mean(accuracies),accuracies))classifier.fit(X_train_reduced,y_train)predictions=classifier.predict(X_test_reduced)print(classification_report(y_test,predictions))
最終的分析結(jié)果:
交叉驗(yàn)證準(zhǔn)確率是:0.829757290513[0.830357140.833333330.8255814]precisionrecallf1-scoresupportC:/Users/HLB/Desktop/firstblog/att_faces/s11.001.001.001C:/Users/HLB/Desktop/firstblog/att_faces/s101.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s111.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s121.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s131.001.001.004C:/Users/HLB/Desktop/firstblog/att_faces/s141.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s151.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s161.000.750.864C:/Users/HLB/Desktop/firstblog/att_faces/s171.001.001.004C:/Users/HLB/Desktop/firstblog/att_faces/s181.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s191.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s21.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s201.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s211.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s221.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s231.001.001.004C:/Users/HLB/Desktop/firstblog/att_faces/s241.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s251.001.001.004C:/Users/HLB/Desktop/firstblog/att_faces/s261.001.001.005C:/Users/HLB/Desktop/firstblog/att_faces/s270.501.000.671C:/Users/HLB/Desktop/firstblog/att_faces/s281.000.670.803C:/Users/HLB/Desktop/firstblog/att_faces/s291.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s31.001.001.001C:/Users/HLB/Desktop/firstblog/att_faces/s301.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s311.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s321.001.001.001C:/Users/HLB/Desktop/firstblog/att_faces/s331.001.001.001C:/Users/HLB/Desktop/firstblog/att_faces/s341.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s351.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s360.671.000.802C:/Users/HLB/Desktop/firstblog/att_faces/s370.501.000.671C:/Users/HLB/Desktop/firstblog/att_faces/s381.001.001.005C:/Users/HLB/Desktop/firstblog/att_faces/s391.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s41.001.001.001C:/Users/HLB/Desktop/firstblog/att_faces/s401.001.001.001C:/Users/HLB/Desktop/firstblog/att_faces/s51.000.830.916C:/Users/HLB/Desktop/firstblog/att_faces/s61.001.001.003C:/Users/HLB/Desktop/firstblog/att_faces/s71.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s81.001.001.002C:/Users/HLB/Desktop/firstblog/att_faces/s91.001.001.001avg/total0.980.970.97100
▌總結(jié)
本文主要介紹PCA降維問(wèn)題。高維數(shù)據(jù)不能輕易可視化。估計(jì)器訓(xùn)練高維數(shù)據(jù)集時(shí),也可能出現(xiàn)維度災(zāi)難。通過(guò)主成分分析法緩解這些問(wèn)題,將可能解釋變量具有相關(guān)性的高維數(shù)據(jù)集,通過(guò)將數(shù)據(jù)映射到一個(gè)低維子空間,降維成一個(gè)線性無(wú)關(guān)的低維數(shù)據(jù)集。最后拓展用PCA將四維的鳶尾花數(shù)據(jù)集降成二維數(shù)據(jù)進(jìn)行可視化;并將PCA用在一個(gè)臉部識(shí)別系統(tǒng)。
-
PCA
+關(guān)注
關(guān)注
0文章
90瀏覽量
29713 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1209瀏覽量
24851
原文標(biāo)題:通俗理解PCA降維作用
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
求助,SVM分類時(shí)要不要先進(jìn)行PCA降維呢?
增量型拉繩編碼器的安裝三方面注意要求
從分層、布局及布線三方面,詳解EMC的PCB設(shè)計(jì)技術(shù)
繼電器產(chǎn)業(yè)升級(jí)需從三方面入手
MES系統(tǒng)無(wú)紙化操作可以從這三方面節(jié)省
工信部將從三方面著手加大新能源汽車的監(jiān)管力度
騰訊區(qū)塊鏈平臺(tái),功能、性能以及穩(wěn)定性評(píng)測(cè)三方面均實(shí)現(xiàn)突破
教育機(jī)器人公司獲百萬(wàn)元天使輪融資 將主要用于以下三方面
中國(guó)移動(dòng)5G+計(jì)劃將具體體現(xiàn)在三方面
工信部要求三大運(yùn)營(yíng)商今年提速降費(fèi)還要做好三方面工作
realme研發(fā)自家UI將助其實(shí)現(xiàn)這三方面的提升
小尋兒童手表完成適配及相關(guān)測(cè)試,三方面能力有顯著改善
一文解析電源分配結(jié)構(gòu)三方面的轉(zhuǎn)變
watchOS 9將在三方面帶來(lái)新功能
![watchOS 9將在<b class='flag-5'>三方面</b>帶來(lái)新功能](https://file.elecfans.com/web2/M00/47/D1/pYYBAGKe8YaAF3DLAA2vrJMZwa0368.png)
評(píng)論