পিসিএ একটি মাত্রা হ্রাস সরঞ্জাম, শ্রেণিবদ্ধ নয়। সাইকিট-লার্নে, সমস্ত শ্রেণিবদ্ধ এবং অনুমানকারীদের একটি predict
পদ্ধতি থাকে যা পিসিএ করে না । আপনার পিসিএ-ট্রান্সফর্মড ডেটাতে একটি শ্রেণিবদ্ধ ফিট করতে হবে। সাইকিট-লার্নের অনেক শ্রেণিবদ্ধ রয়েছে। এখানে পিসিএ-ট্রান্সফর্মড ডেটাতে সিদ্ধান্ত গাছ ব্যবহারের উদাহরণ । আমি সিদ্ধান্তের গাছের শ্রেণিবদ্ধকে বেছে নিয়েছি কারণ এটি দুটিরও বেশি ক্লাসের ডেটার জন্য ভাল কাজ করে যা আইরিস ডেটাসেটের ক্ষেত্রে।
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)
সাইকিট শিখার জন্য পাইপলাইন নামে একটি সুবিধাজনক সরঞ্জাম রয়েছে যা আপনাকে ট্রান্সফর্মার এবং একটি চূড়ান্ত শ্রেণিবদ্ধের একসাথে চেইন করতে দেয়:
# 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. ]
যাইহোক, ভাল শ্রেণিবিন্যাসের ফলাফল পেতে আপনার পিসিএ ব্যবহার করার প্রয়োজনও পড়তে পারে না। আইরিস ডেটাসেটের অনেকগুলি মাত্রা নেই এবং সিদ্ধান্তের গাছগুলি ইতিমধ্যে অপরিকল্পিত ডেটাতে ভাল সম্পাদন করবে।