শ্রেণিবিন্যাসের জন্য ডেটা পরীক্ষার জন্য পিসিএ প্রয়োগ করা


10

আমি সম্প্রতি দুর্দান্ত পিসিএ সম্পর্কে শিখেছি এবং বিজ্ঞান-শিখার ডকুমেন্টেশনে বর্ণিত উদাহরণটি করেছি ।

শ্রেণিবিন্যাসের উদ্দেশ্যে আমি কীভাবে নতুন ডেটা পয়েন্টগুলিতে পিসিএ প্রয়োগ করতে পারি তা জানতে আগ্রহী।

একটি 2 মাত্রিক প্লেনে (এক্স, ওয়াই অক্ষ) পিসিএ দেখার পরে, আমি দেখতে পাচ্ছি যে আমি সম্ভবত ডেটার পয়েন্টগুলি পৃথক করার জন্য একটি লাইন আঁকতে পারি যাতে এক দিকটি একটি শ্রেণিবদ্ধের এবং অন্য শ্রেণীর শ্রেণীর হয়ে থাকে। আমি কীভাবে এই "সীমানা" আঁকব এবং এটি নতুন ডেটা পয়েন্টগুলিতে প্রয়োগ করব?


3
পিসিএ কোনও শ্রেণিবদ্ধকারী নয়, তবে পিসিএটিকে "ফিট" করার জন্য একই ভেরিয়েবলগুলি নতুন পয়েন্টগুলিতে পরিমাপ করা হয় তা ধরে নিয়ে পিসিএতে নতুন পর্যবেক্ষণ স্থাপন করা সম্ভব। তারপরে আপনি কেবলমাত্র ভেরিয়েবল স্কোর (লোডিংস), ডেটা দ্বারা প্রদত্ত ওজনের ভার্সেট সমষ্টিতে নতুন পয়েন্টগুলি স্থাপন করেন। এটি বলেছিল, আপনার পিসিএর মাধ্যমে নির্বিচারে একটি লাইন আঁকানো আমার কাছে শ্রেণিবদ্ধের পছন্দ মতো ভাল লাগে না ...
গ্যাভিন সিম্পসন

উত্তর:


16

পিসিএ একটি মাত্রা হ্রাস সরঞ্জাম, শ্রেণিবদ্ধ নয়। সাইকিট-লার্নে, সমস্ত শ্রেণিবদ্ধ এবং অনুমানকারীদের একটি 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.        ]

যাইহোক, ভাল শ্রেণিবিন্যাসের ফলাফল পেতে আপনার পিসিএ ব্যবহার করার প্রয়োজনও পড়তে পারে না। আইরিস ডেটাসেটের অনেকগুলি মাত্রা নেই এবং সিদ্ধান্তের গাছগুলি ইতিমধ্যে অপরিকল্পিত ডেটাতে ভাল সম্পাদন করবে।


6
সম্ভবত এটি লক্ষ করা গুরুত্বপূর্ণ যে পিসিএটি মাত্রিকতা হ্রাস না করা সত্ত্বেও দরকারী হতে পারে। আপনার মাত্রিকতার এর একটি ডেটাসেট থাকতে পারে এবং বৈষম্যমূলক দিকগুলি সর্বাধিক বৈকল্পিকের সাথে মিলে যায়। আপনি মাত্রা রাখুন কিন্তু ভিত্তি আলাদা different এই নতুন ভিত্তিতে আপনার ডেটা ম্যাপিং মূল ভিত্তির চেয়ে শ্রেণিগুলিকে আরও ভাল বৈষম্যমূলক করতে সহায়তা করবে।
ভ্লাদিস্লাভস ডোভগ্যালিক্স

@xeon আমি এটি জানতাম না।
অস্টিন রিচার্ডসন

সম্ভবত আপনি পিসিএকে ঘূর্ণন হিসাবে কল্পনা করেন কিনা এটি আরও ভাল। যদি এটি ঘটে থাকে যে আপনার ডেটাসেটের এমন সম্পত্তি রয়েছে যা ক্লাসগুলি বৈচিত্রের দ্বারা বৈষম্যমূলক হতে পারে, তবে এই ঘূর্ণনটি আপনার প্রয়োজন হবে।
ভ্লাদিস্লাভস ডভগ্লেলেকস

2
@ এক্সিয়ন: যখন সমস্ত মাত্রা রাখা হয়, তখন পিসিএ দ্বারা প্রাপ্ত একমাত্র জিনিসটি ডেটাসেটকে সজ্জিত করে। এটি প্রকৃতপক্ষে কিছু শ্রেণিবদ্ধীদের জন্য উপকারী হতে পারে , তবে বিশাল সংখ্যাগরিষ্ঠতা তাদের যত্ন করে না।
অ্যামিবা

1
@ আমেবা আমি সম্পূর্ণরূপে একমত, এটি কেবল একটি ছোট্ট বিবরণ। আমাকে এই জাতীয় নির্দিষ্ট ডেটাসেটের সাথে ডিল করতে হয়েছিল এবং সর্বদা সেই পাঠটি মনে রাখে।
ভ্লাদিস্লাভস ডভগ্লেলেকস

0

আপনি যদি নতুন ডেটাতে পিসিএ প্রয়োগ করতে চান তবে আপনাকে অবশ্যই কিছু প্রশিক্ষণ ডেটাসেটে প্রথমে একটি মডেল ফিট করতে হবে। আপনি কি মডেল জিজ্ঞাসা করবে? এটি ডেটাসেট থেকে বিয়োগকৃত গড় ভেক্টর, আপনি প্রতিটি ডেটা ভেক্টর এবং শিখানো ম্যাপিং ম্যাট্রিক্সকে "সাদা" করার জন্য যে রূপগুলি ব্যবহার করেছিলেন তা। সুতরাং প্রশিক্ষণের ডেটা হিসাবে একই জায়গায় নতুন ডেটাसेट ম্যাপ করার জন্য, আপনি প্রথমে গড়টি বিয়োগ করুন, এটি সাদা করুন এবং ম্যাপিং ম্যাট্রিক্সের সাথে এটি মানচিত্র করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.