机器学习 | 分类评估指标
文章目錄
- 1. 分類評(píng)估指標(biāo)
- 1.1 混淆矩陣 Confusion Matrix
- 1.1.1 scikit-learn 混淆矩陣函數(shù)接口
- 1.2 真陽性TP、假陽性FP、真陰性TN、假陰性FN
- 1.2.1 衍生評(píng)估指標(biāo)
- 1.3 準(zhǔn)確率 Accuracy
- 1.3.1 準(zhǔn)確率不適用的情形:信用卡欺詐檢測模型(不平衡數(shù)據(jù))
- 1.4 精確率 Precision
- 1.4.1 精確率適用情形:垃圾郵件分類(高精度模型)
- 1.5 召回率 Recall
- 1.5.1 召回率適用情形:醫(yī)療模型
- 1.6 F_1 Score
- 1.7 F_beta Score
- 1.8 ROC 曲線
- 1.8.1 AUC
- 1.8.2 PR 曲線
- 2. Sklearn 計(jì)算分類器性能指標(biāo)
- 參考資料
相關(guān)文章:
機(jī)器學(xué)習(xí) | 目錄
機(jī)器學(xué)習(xí) | 回歸評(píng)估指標(biāo)
1. 分類評(píng)估指標(biāo)
評(píng)估指標(biāo)(Evaluation Matrix):在建立模型后,我們想要知道它的性能如何,因此我們將通過一系列指標(biāo)來判斷一個(gè)模型的好壞。
1.1 混淆矩陣 Confusion Matrix
混淆矩陣也稱誤差矩陣,是表示精度評(píng)價(jià)的一種標(biāo)準(zhǔn)格式,用nnn行nnn列的矩陣形式來表示。在人工智能中,混淆矩陣(Confusion Matrix)是誤差可視化工具,特別用于監(jiān)督學(xué)習(xí);在無監(jiān)督學(xué)習(xí)一般叫做匹配矩陣。
混淆矩陣
每一列代表了預(yù)測類別,每一列的總數(shù)表示預(yù)測為該類別的數(shù)據(jù)的數(shù)目
每一行代表了數(shù)據(jù)的真實(shí)歸屬類別,每一行的數(shù)據(jù)總數(shù)表示該類別的數(shù)據(jù)實(shí)例的數(shù)目。每一列中的數(shù)值表示真實(shí)數(shù)據(jù)被預(yù)測為該類的數(shù)目
每一行之和表示該類別的真實(shí)樣本數(shù)量,每一列之和表示被預(yù)測為該類別的樣本數(shù)量
如下圖,第一行第一列中的43表示有43個(gè)實(shí)際歸屬第一類的實(shí)例被預(yù)測為第一類,同理,第一行第二列的2表示有2個(gè)實(shí)際歸屬為第一類的實(shí)例被錯(cuò)誤預(yù)測為第二類。
1.1.1 scikit-learn 混淆矩陣函數(shù)接口
skearn.metrics.confusion_matrix(y_true, # array, Gound true (correct) target valuesy_pred, # array, Estimated targets as returned by a classifierlabels=None, # array, List of labels to index the matrix.sample_weight=None # array-like of shape = [n_samples], Optional sample weights )參數(shù)設(shè)置:
y_true : array, shape = [n_samples]
Ground truth (correct) target values.y_pred : array, shape = [n_samples]
Estimated targets as returned by a classifier.labels : array, shape = [n_classes], optional
List of labels to index the matrix. This may be used to reorder or select a subset of labels. If none is given, those that appear at least once in y_true or y_pred are used in sorted order.sample_weight : array-like of shape = [n_samples], optional
Sample weights.返回值:
array, shape = [n_classes, n_classes]
Confusion matrix在 scikit-learn 中, 計(jì)算混淆矩陣用來評(píng)估分類的準(zhǔn)確度。
按照定義, 混淆矩陣CCC中的元素Ci,jC_{i,j}Ci,j?為真實(shí)值的為組iii, 而預(yù)測為組jjj的觀測數(shù)(the number of observations)。
對(duì)于二分類任務(wù), 預(yù)測結(jié)果中:
- 真陽數(shù)(True Positives, TP)為C1,1C_{1,1}C1,1?
- 真陰數(shù)(True Negatives, TN)為C0,0C_{0,0}C0,0?
- 假陽數(shù)(False Posiives, FN)為C1,0C_{1,0}C1,0?
- 假陰數(shù)(False Negatives, FN)為C1,0C_{1,0}C1,0?
如果 labels 為 None, scikit-learn 會(huì)把在出現(xiàn)在 y_true 或 y_pred 中的所有值添加到標(biāo)記列表 labels 中, 并排好序。[1]
sklearn.metrics.confusion_matrix 官方文檔
1.2 真陽性TP、假陽性FP、真陰性TN、假陰性FN
對(duì)于二分類任務(wù):
- 真陽性(True Positives, TP)為真實(shí)值為1,預(yù)測值為1,即正確預(yù)測出的正樣本個(gè)數(shù)
- 真陰性(True Negatives, TN)為真實(shí)值為0,預(yù)測值為0,即正確預(yù)測出的負(fù)樣本個(gè)數(shù)
- 假陽性(False Posiives, FP)為真實(shí)值為0,預(yù)測值為1,即錯(cuò)誤預(yù)測出的正樣本個(gè)數(shù)(即數(shù)理統(tǒng)計(jì)的第一類錯(cuò)誤)
- 假陰性(False Negatives, FN)為真實(shí)值為1,預(yù)測值為0,即錯(cuò)誤預(yù)測出的負(fù)樣本個(gè)數(shù)(即數(shù)理統(tǒng)計(jì)的第二類錯(cuò)誤)
概括地來說:
- 當(dāng)預(yù)測值為1時(shí),體現(xiàn)為陽性;當(dāng)預(yù)測值為0時(shí),體現(xiàn)為陰性
- 當(dāng)預(yù)測值與真實(shí)值相符時(shí),為真;當(dāng)預(yù)測值與真實(shí)值相反時(shí),為假
陽性、陰性由來:這兩個(gè)概念是從醫(yī)學(xué)上引進(jìn)的,一般來說,陽性(+)是表示疾病或體內(nèi)生理的變化有一定的結(jié)果。相反,化驗(yàn)單或報(bào)告單上的陰性(-),則多數(shù)基本上否定或排除某種病變的可能性。
例1. 計(jì)算真陽性、假陽性、真陰性、假陰性:
如圖所示,藍(lán)色為陽性,紅色為陰性;我們訓(xùn)練的模型是一條直線來劃分這個(gè)區(qū)域,陽性區(qū)域在上,陰性區(qū)域在下。
因此直線上方的點(diǎn)預(yù)測值為1,其中6個(gè)藍(lán)點(diǎn)的真實(shí)值為1,2個(gè)兩紅點(diǎn)的真實(shí)值為0,因此真陽性個(gè)數(shù)為6,假陽性個(gè)數(shù)為2;直線下方的點(diǎn)預(yù)測值為0,其中5個(gè)紅點(diǎn)真實(shí)值為0,1個(gè)藍(lán)點(diǎn)真實(shí)值為1,因此真陰性個(gè)數(shù)為5,假陰性個(gè)數(shù)為1。最終混淆矩陣如下所示:
1.2.1 衍生評(píng)估指標(biāo)
由TP、FP、TN、FN四個(gè)指標(biāo),可以進(jìn)一步衍生出其他三個(gè)常用的評(píng)價(jià)分類器性能的指標(biāo):
(1)Accuracy=TP+TNTP+FP+TN+FNAccuracy=\frac{TP+TN}{TP+FP+TN+FN}\tag{1}Accuracy=TP+FP+TN+FNTP+TN?(1)
(2)Precision=TPTP+FPPrecision=\frac{TP}{TP+FP}\tag{2}Precision=TP+FPTP?(2)
(3)Recall=TPTP+FNRecall=\frac{TP}{TP+FN}\tag{3}Recall=TP+FNTP?(3)
我們將會(huì)在后面對(duì)這些指標(biāo)進(jìn)行說明。
這是所有的衍生指標(biāo):
1.3 準(zhǔn)確率 Accuracy
準(zhǔn)確率(Accuracy):分類器預(yù)測出的正樣本中,真實(shí)正樣本的比例,計(jì)算公式如下:
(4)Accuracy=TP+TNTP+FP+TN+FNAccuracy=\frac{TP+TN}{TP+FP+TN+FN}\tag{4}Accuracy=TP+FP+TN+FNTP+TN?(4)
例2. 假設(shè)一個(gè)垃圾郵件過濾器模型,在270封垃圾郵件中,正確分類100封,錯(cuò)誤分類170封;在730封正常郵件中,正確分類700封,錯(cuò)誤分類30封,計(jì)算該分類器的準(zhǔn)確率:
Accuracy=TP+TNTP+FP+TN+FN=100+700100+30+700+170=80%Accuracy=\frac{TP+TN}{TP+FP+TN+FN}=\frac{100+700}{100+30+700+170}=80\%Accuracy=TP+FP+TN+FNTP+TN?=100+30+700+170100+700?=80%
1.3.1 準(zhǔn)確率不適用的情形:信用卡欺詐檢測模型(不平衡數(shù)據(jù))
不平衡數(shù)據(jù):一個(gè)類別比另一個(gè)類別出現(xiàn)次數(shù)多得多的數(shù)據(jù)集,對(duì)于不平衡數(shù)據(jù),不適合使用準(zhǔn)確流來評(píng)估模型。
我們來看一個(gè)準(zhǔn)確率不適用的情形,假設(shè)我們建立一個(gè)檢測信用卡欺詐行為的模型,數(shù)據(jù)中有284,335條良好交易記錄、472條欺詐性交易數(shù)據(jù),假設(shè)我們的模型預(yù)測結(jié)果如下:
這個(gè)模型的準(zhǔn)確率為:
Accuracy=TP+TNTP+FP+TN+FN=284335+0284335+472+0+0=99.83%Accuracy=\frac{TP+TN}{TP+FP+TN+FN}=\frac{284335+0}{284335+472+0+0}=99.83\%Accuracy=TP+FP+TN+FNTP+TN?=284335+472+0+0284335+0?=99.83%
準(zhǔn)確率很高,達(dá)到了99.83%99.83\%99.83%,但這并不說明這是一個(gè)好的模型,因?yàn)槲覀兊哪P褪菫榱藱z測出欺詐數(shù)據(jù),但這個(gè)模型一條欺詐數(shù)據(jù)也沒有檢測出來。因此在這個(gè)情形下,我們需要選擇其他的評(píng)價(jià)指標(biāo)來評(píng)價(jià)我們的模型。
1.4 精確率 Precision
精確率(Precision):又稱精度,體現(xiàn)分類器對(duì)整體的判斷能力,即正確預(yù)測的比例(在所有預(yù)測為陽性的點(diǎn)中,真陽性的比例),計(jì)算公式如下:
(5)Precision=TPTP+FPPrecision=\frac{TP}{TP+FP}\tag{5}Precision=TP+FPTP?(5)
1.4.1 精確率適用情形:垃圾郵件分類(高精度模型)
在垃圾郵件分類模型中,檢測假陽性更重要:
假陰性意味著垃圾郵件將發(fā)到你的收件箱中。有點(diǎn)不太方便,但是可接受。而 假陽性意味著漏掉了重要的郵件,這是需要避免的。
例3. 以下面的圖為例,
精確率為100100+30=76.9%\frac{100}{100+30}=76.9\%100+30100?=76.9%,
召回率為100100+170=37.0\frac{100}{100+170}=37.0%100+170100?=37.0,
因此即使召回率只有37.0%37.0\%37.0%,但是精確率有76.9%76.9\%76.9%,所以我們?nèi)苑Q這是一個(gè)好的模型。
1.5 召回率 Recall
召回率(Recall):又稱靈敏度、真陽性率,為所有真實(shí)正樣本中,分類器中能找到多少,計(jì)算公式如下:
(6)Recall=TPTP+FNRecall=\frac{TP}{TP+FN}\tag{6}Recall=TP+FNTP?(6)
1.5.1 召回率適用情形:醫(yī)療模型
在醫(yī)療模型中,檢測假陰性更重要:
假陽性意味著讓健康人接受進(jìn)一步檢查,即使這意味會(huì)帶來不便,但是可以接受。而假陰性以為著讓病人錯(cuò)過治療,這是更需要避免的。
例4. 以下面的圖為例,精確率為10001000+800=55.6%\frac{1000}{1000+800}=55.6\%1000+8001000?=55.6%,召回率為10001000+200=83.3\frac{1000}{1000+200}=83.3%1000+2001000?=83.3,因此即使精確率只有55.6%55.6\%55.6%,但是召回率有83.3%83.3\%83.3%,所以我們?nèi)苑Q這是一個(gè)好的模型。
1.6 F_1 Score
F1F_1F1? 得分是統(tǒng)計(jì)學(xué)中用來衡量二分類模型精確度的一種指標(biāo)。它同時(shí)兼顧了分類模型的精確率和召回率。
F1F_1F1?得分是精確率和召回率的一種調(diào)和平均,當(dāng)精確率或召回率其中一個(gè)較小時(shí),F1F_1F1? 得分將會(huì)較小;只有當(dāng)兩者都較大時(shí),F1F_1F1? 得分才會(huì)接近1。
(7)F1=2×Precision×RecallPrecision+RecallF_1 = 2 \times \frac{Precision\times Recall}{Precision+Recall}\tag{7}F1?=2×Precision+RecallPrecision×Recall?(7)
F1F_1F1? 得分的取值域?yàn)?span id="ozvdkddzhkzd" class="katex--inline">[0,1][0,1][0,1]。
1.7 F_beta Score
FβF_\betaFβ?的物理意義就是將準(zhǔn)確率和召回率這兩個(gè)分值合并為一個(gè)分值,在合并的過程中,召回率的權(quán)重是準(zhǔn)確率的β\betaβ倍。F1F_1F1?分?jǐn)?shù)認(rèn)為召回率和準(zhǔn)確率同等重要,F2F_2F2?分?jǐn)?shù)認(rèn)為召回率的重要程度是準(zhǔn)確率的2倍,而F0.5F_{0.5}F0.5?分?jǐn)?shù)認(rèn)為召回率的重要程度是準(zhǔn)確率的一半。
(8)Fβ=(1+β2)Precision×Recallβ2×Precision+Recallβ∈[0,+∞)F_{\beta}=(1+\beta^2)\frac{Precision \times Recall} {\beta^2 \times Precision+Recall}\quad \beta\in[0,+\infty) \tag{8}Fβ?=(1+β2)β2×Precision+RecallPrecision×Recall?β∈[0,+∞)(8)
FβF_\betaFβ? 得分的取值域?yàn)?span id="ozvdkddzhkzd" class="katex--inline">[0,1][0,1][0,1]。
-
當(dāng)β=1\beta=1β=1時(shí),即為 F1 得分:
Fβ=1=(1+1)Precision×RecallPrecision+Recall=2×Precision×RecallPrecision+Recall=F1F_{\beta=1}=(1+1)\frac{Precision \times Recall} {Precision+Recall}= 2 \times \frac{Precision\times Recall}{Precision+Recall}=F_1Fβ=1?=(1+1)Precision+RecallPrecision×Recall?=2×Precision+RecallPrecision×Recall?=F1?
-
當(dāng)β=0\beta=0β=0時(shí),即為精確度:
Fβ=0=(1+0)Precision×Recall0×Precision+Recall=PrecisionF_{\beta=0}=(1+0)\frac{Precision \times Recall} {0\times Precision+Recall}=PrecisionFβ=0?=(1+0)0×Precision+RecallPrecision×Recall?=Precision
-
當(dāng)β=∞\beta=\inftyβ=∞時(shí),即為召回率:
Fβ=N=(1+N2)Precision×RecallN2×Precision+Recall=Precision×RecallN21+N2Precision+11+N2RecallF_{\beta=N}=(1+N^2)\frac{Precision \times Recall} {N^2\times Precision+Recall} =\frac{Precision \times Recall} {\frac{N^2}{1+N^2}Precision+\frac{1}{1+N^2}Recall}Fβ=N?=(1+N2)N2×Precision+RecallPrecision×Recall?=1+N2N2?Precision+1+N21?RecallPrecision×Recall?
令N→∞N \rightarrow \inftyN→∞,有:
lim?N→∞FN=Precision×Recall1×Precision+Recall=Recall\lim \limits_{N \to \infty}F_N = \frac{Precision \times Recall}{1 \times Precision+Recall} = RecallN→∞lim?FN?=1×Precision+RecallPrecision×Recall?=Recall
1.8 ROC 曲線
ROC 曲線:接受者操作特征曲線(Receiver Operating Characterostoc Curve ),roc曲線上每個(gè)點(diǎn)反映著對(duì)同一信號(hào)刺激的感受性。[2]
x 軸:FPR 假陽性率(誤診率)TPFP+TN\frac{TP}{FP+TN}FP+TNTP?
y 軸:TPR 真陽性率(召回率、靈敏度) TPTP+FN\frac{TP}{TP+FN}TP+FNTP?
一般認(rèn)為,如果 ROC 曲線是光滑的,那么基本可以判斷沒有太大的過擬合,AUC 面積越大一般認(rèn)為模型更好。
ROC 曲線由來:ROC曲線,首先是由二戰(zhàn)中的電子工程師和雷達(dá)工程師發(fā)明的,用來偵測戰(zhàn)場上的敵軍載具(飛機(jī)、船艦),也就是信號(hào)檢測理論。之后很快就被引入了心理學(xué)來進(jìn)行信號(hào)的知覺檢測。此后被引入機(jī)器學(xué)習(xí)領(lǐng)域,用來評(píng)判分類、檢測結(jié)果的好壞。因此,ROC曲線是非常重要和常見的統(tǒng)計(jì)分析方法。
以疾病檢測為例,這是一個(gè)有監(jiān)督的二分類模型,模型對(duì)每個(gè)樣本的預(yù)測結(jié)果為一個(gè)概率值,我們需要從中選取一個(gè)閾值來判斷健康與否。
定好一個(gè)閾值之后,超過此閾值定義為不健康,低于此閾值定義為健康,就可以得出混淆矩陣。
而如果在上述模型中我們沒有定好閾值,而是將模型預(yù)測結(jié)果從高到低排序,將每次概率值依次作為閾值,那么就可以得到多個(gè)混淆矩陣。對(duì)于每個(gè)混淆矩陣,我們計(jì)算兩個(gè)指標(biāo) TPR 和 FPR ,以 FPR 為 x 軸,TPR 為 y 軸畫圖,就得到了 ROC 曲線。
1.8.1 AUC
AUC 被定義為ROC曲線下的面積,取值范圍一般在0.5和1之間。使用AUC值作為評(píng)價(jià)標(biāo)準(zhǔn)是因?yàn)楹芏鄷r(shí)候ROC曲線并不能清晰的說明哪個(gè)分類器的效果更好,而作為一個(gè)數(shù)值,對(duì)應(yīng)AUC更大的分類器效果更好。
非參數(shù)法:(兩種方法實(shí)際證明是一致的)
(1) 梯形法則:早期由于測試樣本有限,我們得到的AUC曲線呈階梯狀。曲線上的每個(gè)點(diǎn)向X軸做垂線,得到若干梯形,這些梯形面積之和也就是AUC 。
(2) Mann-Whitney統(tǒng)計(jì)量: 統(tǒng)計(jì)正負(fù)樣本對(duì)中,有多少個(gè)組中的正樣本的概率大于負(fù)樣本的概率。這種估計(jì)隨著樣本規(guī)模的擴(kuò)大而逐漸逼近真實(shí)值。
參數(shù)法:
(3) 主要適用于二項(xiàng)分布的數(shù)據(jù),即正反樣本分布符合正態(tài)分布,可以通過均值和方差來計(jì)算。
(1) AUC = 1,是完美分類器,采用這個(gè)預(yù)測模型時(shí),存在至少一個(gè)閾值能得出完美預(yù)測。絕大多數(shù)預(yù)測的場合,不存在完美分類器。
(2) 0.5 < AUC < 1,優(yōu)于隨機(jī)猜測。這個(gè)分類器(模型)妥善設(shè)定閾值的話,能有預(yù)測價(jià)值。
(3) AUC = 0.5,跟隨機(jī)猜測一樣(例:丟銅板),模型沒有預(yù)測價(jià)值。
(4) AUC < 0.5,比隨機(jī)猜測還差;但只要總是反預(yù)測而行,就優(yōu)于隨機(jī)猜測。
三種 AUC 值的實(shí)例:
總的來說,AUC值越大,模型的分類效果越好,疾病檢測越準(zhǔn)確;不過兩個(gè)模型AUC值相等并不代表模型效果相同,如下圖中有三條ROC曲線,A模型比B和C都要好:
而下面兩幅圖中兩條ROC曲線相交于一點(diǎn),AUC值幾乎一樣:當(dāng)需要高Sensitivity(TPR)時(shí),模型A比B好;當(dāng)需要高Speciticity(TNR)時(shí),模型B比A好。
1.8.2 PR 曲線
x 軸:Recall(TPR,與 ROC 曲線的 y 軸相同)
y 軸:Precision 精確率
相對(duì)來講ROC曲線會(huì)穩(wěn)定很多,在正負(fù)樣本量都足夠的情況下,ROC曲線足夠反映模型的判斷能力。因此,對(duì)于同一模型,PRC和ROC曲線都可以說明一定的問題,而且二者有一定的相關(guān)性,如果想評(píng)測模型效果,也可以把兩條曲線都畫出來綜合評(píng)價(jià)。對(duì)于有監(jiān)督的二分類問題,在正負(fù)樣本都足夠的情況下,可以直接用ROC曲線、AUC、KS評(píng)價(jià)模型效果。在確定閾值過程中,可以根據(jù)Precision、Recall或者F1來評(píng)價(jià)模型的分類效果。對(duì)于多分類問題,可以對(duì)每一類分別計(jì)算Precision、Recall和F1,綜合作為模型評(píng)價(jià)指標(biāo)。
在上圖中,(a)和?為ROC曲線,(b)和(d)為Precision-Recall曲線。(a)和(b)展示的是分類其在原始測試集(正負(fù)樣本分布平衡)的結(jié)果,?和(d)是將測試集中負(fù)樣本的數(shù)量增加到原來的10倍后,分類器的結(jié)果。可以明顯的看出,ROC曲線基本保持原貌,而Precision-Recall曲線則變化較大。
2. Sklearn 計(jì)算分類器性能指標(biāo)
sklearn.metrics 官方文檔
from sklearn.metrics import accuracy_scorey_pred = [0, 2, 1, 3] y_true = [0, 1, 2, 3] accuracy_score(y_true, y_pred) 0.5-
分類報(bào)告,同時(shí)返回Precision、Recall、F1F_1F1? Score
classification_report(y_true, y_pred[, …]) Build a text report showing the main classification metrics
-
混淆矩陣 Confusion Matrix
metrics.confusion_matrix(y_true, y_pred[, …]) Compute confusion matrix to evaluate the accuracy of a classification
-
準(zhǔn)確率 Accuracy
metrics.accuracy_score(y_true, y_pred[, …]) Accuracy classification score.
-
平均準(zhǔn)確率 average accuracy (TPR+TNR)/2
metrics.balanced_accuracy_score(y_true, y_pred) Compute the balanced accuracy
-
精確率 Precision
metrics.precision_score(y_true, y_pred[, …]) Compute the precision
-
召回率 Recall
metrics.recall_score(y_true, y_pred[, …]) Compute the recall
-
F1F_1F1? Score
metrics.f1_score(y_true, y_pred[, labels, …]) Compute the F1 score, also known as balanced F-score or F-measure
-
FβF_\betaFβ? Score
metrics.fbeta_score(y_true, y_pred, beta[, …]) Compute the F-beta score
-
ROC 曲線
metrics.roc_curve(y_true, y_score[, …]) Compute Receiver operating characteristic (ROC)
-
AUC (梯型法)
metrics.auc(x, y[, reorder]) Compute Area Under the Curve (AUC) using the trapezoidal rule
-
AUC (Mann-Whitney統(tǒng)計(jì)量法)
metrics.roc_auc_score(y_true, y_score[, …]) Compute Area Under the Receiver Operating Characteristic Curve (ROC AUC) from prediction scores.
-
PR 曲線
metrics.precision_recall_curve(y_true, …) Compute precision-recall pairs for different probability thresholds
參考資料
[1] klchang.混淆矩陣(Confusion matrix)的原理及使用(scikit-learn 和 tensorflow)[EB/OL].https://www.cnblogs.com/klchang/p/9608412.html, 2018-09-08.
[2] dzl_ML.分類器性能指標(biāo)之ROC曲線、AUC值[EB/OL].https://www.cnblogs.com/dlml/p/4403482.html, 2015-04-08.
總結(jié)
以上是生活随笔為你收集整理的机器学习 | 分类评估指标的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Synergy工具 共享Windows系
- 下一篇: Adobe illustrator 显示