PCA เป็นเครื่องมือลดขนาดไม่ใช่ตัวแยกประเภท ใน Scikit เรียนรู้, ลักษณนามและประมาณค่าทุกคนมีpredict
วิธีการที่PCA ไม่ คุณต้องจัดให้มีลักษณนามบนข้อมูลที่แปลง PCA Scikit-Learn มีตัวแยกประเภทมากมาย นี่คือตัวอย่างของการใช้แผนผังการตัดสินใจบนข้อมูลที่แปลงโดย PCA ฉันเลือกลักษณนามต้นไม้ตัดสินใจเพราะมันทำงานได้ดีสำหรับข้อมูลที่มีมากกว่าสองคลาสซึ่งเป็นกรณีที่มีชุดข้อมูลของม่านตา
from sklearn.decomposition import PCA
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
# load data
iris = load_iris()
# initiate PCA and classifier
pca = PCA()
classifier = DecisionTreeClassifier()
# transform / fit
X_transformed = pca.fit_transform(iris.data)
classifier.fit(X_transformed, iris.target)
# predict "new" data
# (I'm faking it here by using the original data)
newdata = iris.data
# transform new data using already fitted pca
# (don't re-fit the pca)
newdata_transformed = pca.transform(newdata)
# predict labels using the trained classifier
pred_labels = classifier.predict(newdata_transformed)
SciKit เรียนรู้มีเครื่องมือที่สะดวกเรียกว่าPipelineซึ่งให้คุณเชื่อมโยงหม้อแปลงและตัวแยกประเภทสุดท้ายเข้าด้วยกัน:
# you can make this a lot easier using Pipeline
from sklearn.pipeline import Pipeline
# fits PCA, transforms data and fits the decision tree classifier
# on the transformed data
pipe = Pipeline([('pca', PCA()),
('tree', DecisionTreeClassifier())])
pipe.fit(iris.data, iris.target)
pipe.predict(newdata)
สิ่งนี้มีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อทำการตรวจสอบข้ามซึ่งจะป้องกันคุณจากการปรับขั้นตอนใด ๆ ของท่อในชุดทดสอบของคุณอีกครั้งโดยไม่ได้ตั้งใจ:
from sklearn.cross_validation import cross_val_score
print cross_val_score(pipe, iris.data, iris.target)
# [ 0.96078431 0.90196078 1. ]
อย่างไรก็ตามคุณอาจไม่จำเป็นต้องใช้ PCA เพื่อให้ได้ผลลัพธ์การจำแนกที่ดี ชุดข้อมูลม่านตามีหลายมิติและต้นไม้การตัดสินใจจะทำงานได้ดีกับข้อมูลที่ไม่ได้รับการแปล