আমি পাইথনে কীভাবে পুনরায় উত্পাদন করতে পারি সে জন্য আমি এসএএস-এর কাজ করেছি work এই ডেটাসেটটি ব্যবহার করে , যেখানে বহুবিধ লাইনারিটি সমস্যা, আমি পাইথনে মূল উপাদান বিশ্লেষণ করতে চাই। আমি সাইকিট-লার্ন এবং স্ট্যাটাসমডেলগুলি দেখেছি, তবে আমি কীভাবে তাদের আউটপুট নেব এবং এটি এসএএস হিসাবে একই ফলাফলের কাঠামোতে রূপান্তর করব তা সম্পর্কে আমি অনিশ্চিত। একটি জিনিস হিসাবে, এসএএস আপনি ব্যবহার করার সময় পারস্পরিক সম্পর্ক মেট্রিক্সে পিসিএ সঞ্চালনের জন্য উপস্থিত হয় PROC PRINCOMP
তবে পাইথন লাইব্রেরির বেশিরভাগ (সমস্ত?) এসভিডি ব্যবহার করতে দেখা যায়।
ইন ডেটা সেটটি , প্রথম কলামে প্রতিক্রিয়া পরিবর্তনশীল এবং পরবর্তী 5 ভবিষ্যদ্বাণীপূর্ণ ভেরিয়েবল, pred1-pred5 ডাকতাম।
এসএএস-এ, সাধারণ কর্মপ্রবাহটি হ'ল:
/* Get the PCs */
proc princomp data=indata out=pcdata;
var pred1 pred2 pred3 pred4 pred5;
run;
/* Standardize the response variable */
proc standard data=pcdata mean=0 std=1 out=pcdata2;
var response;
run;
/* Compare some models */
proc reg data=pcdata2;
Reg: model response = pred1 pred2 pred3 pred4 pred5 / vif;
PCa: model response = prin1-prin5 / vif;
PCfinal: model response = prin1 prin2 / vif;
run;
quit;
/* Use Proc PLS to to PCR Replacement - dropping pred5 */
/* This gets me my parameter estimates for the original data */
proc pls data=indata method=pcr nfac=2;
model response = pred1 pred2 pred3 pred4 / solution;
run;
quit;
আমি জানি যে শেষ পদক্ষেপটি কেবলমাত্র কাজ করে কারণ আমি কেবলমাত্র পিসি 1 এবং পিসি 2 বেছে নিচ্ছি।
পাইথনে, আমি যতটা পেয়েছি এটি এখানে প্রায়:
import pandas as pd
import numpy as np
from sklearn.decomposition.pca import PCA
source = pd.read_csv('C:/sourcedata.csv')
# Create a pandas DataFrame object
frame = pd.DataFrame(source)
# Make sure we are working with the proper data -- drop the response variable
cols = [col for col in frame.columns if col not in ['response']]
frame2 = frame[cols]
pca = PCA(n_components=5)
pca.fit(frame2)
প্রতিটি পিসি ব্যাখ্যার পরিমাণের পরিমাণ কী?
print pca.explained_variance_ratio_
Out[190]:
array([ 9.99997603e-01, 2.01265023e-06, 2.70712663e-07,
1.11512302e-07, 2.40310191e-09])
এগুলো কি? Eigenvectors?
print pca.components_
Out[179]:
array([[ -4.32840645e-04, -7.18123771e-04, -9.99989955e-01,
-4.40303223e-03, -2.46115129e-05],
[ 1.00991662e-01, 8.75383248e-02, -4.46418880e-03,
9.89353169e-01, 5.74291257e-02],
[ -1.04223303e-02, 9.96159390e-01, -3.28435046e-04,
-8.68305757e-02, -4.26467920e-03],
[ -7.04377522e-03, 7.60168675e-04, -2.30933755e-04,
5.85966587e-02, -9.98256573e-01],
[ -9.94807648e-01, -1.55477793e-03, -1.30274879e-05,
1.00934650e-01, 1.29430210e-02]])
এগুলো কি এগেনভ্যালু?
print pca.explained_variance_
Out[180]:
array([ 8.07640319e+09, 1.62550137e+04, 2.18638986e+03,
9.00620474e+02, 1.94084664e+01])
পাইথনের ফলাফলগুলি থেকে কীভাবে প্রকৃত উপাদান প্রতিরোধের (পাইথনে) সঞ্চালন করা যায় সে সম্পর্কে আমি কিছুটা ক্ষতির মধ্যে আছি। পাইথন লাইব্রেরির কোনও কি এসএএস-এর মতো শূন্যস্থান পূরণ করে?
কোনও টিপস প্রশংসা করা হয়। আমি এসএএস আউটপুটে লেবেলগুলি ব্যবহার করে কিছুটা নষ্ট হয়ে গিয়েছি এবং আমি পান্ডাস, নপু, স্কিপি বা সাইকিট-লার্নের সাথে খুব বেশি পরিচিত নই।
সম্পাদনা:
সুতরাং, দেখে মনে হচ্ছে স্কেলারান সরাসরি কোনও পান্ডাস ডেটা ফ্রেমে কাজ করবে না। আসুন বলি যে আমি এটিকে একটি অদ্ভুত অ্যারে রূপান্তর করি:
npa = frame2.values
npa
আমি যা পাই তা এখানে:
Out[52]:
array([[ 8.45300000e+01, 4.20730000e+02, 1.99443000e+05,
7.94000000e+02, 1.21100000e+02],
[ 2.12500000e+01, 2.73810000e+02, 4.31180000e+04,
1.69000000e+02, 6.28500000e+01],
[ 3.38200000e+01, 3.73870000e+02, 7.07290000e+04,
2.79000000e+02, 3.53600000e+01],
...,
[ 4.71400000e+01, 3.55890000e+02, 1.02597000e+05,
4.07000000e+02, 3.25200000e+01],
[ 1.40100000e+01, 3.04970000e+02, 2.56270000e+04,
9.90000000e+01, 7.32200000e+01],
[ 3.85300000e+01, 3.73230000e+02, 8.02200000e+04,
3.17000000e+02, 4.32300000e+01]])
আমি যদি তারপর copy
স্কেলেরানের পিসিএ এর প্যারামিটারটিকে পরিবর্তন করে False,
এটি নীচে দেওয়া মন্তব্য অনুসারে সরাসরি অ্যারেতে চালিত হয়।
pca = PCA(n_components=5,copy=False)
pca.fit(npa)
npa
আউটপুট প্রতি, দেখে মনে হচ্ছে এটি npa
অ্যারেতে কিছু যুক্ত করার পরিবর্তে সমস্ত মানকে প্রতিস্থাপন করেছে। npa
এখন মান কি ? মূল অ্যারের জন্য মূল উপাদান স্কোর?
Out[64]:
array([[ 3.91846649e+01, 5.32456568e+01, 1.03614689e+05,
4.06726542e+02, 6.59830027e+01],
[ -2.40953351e+01, -9.36743432e+01, -5.27103110e+04,
-2.18273458e+02, 7.73300268e+00],
[ -1.15253351e+01, 6.38565684e+00, -2.50993110e+04,
-1.08273458e+02, -1.97569973e+01],
...,
[ 1.79466488e+00, -1.15943432e+01, 6.76868901e+03,
1.97265416e+01, -2.25969973e+01],
[ -3.13353351e+01, -6.25143432e+01, -7.02013110e+04,
-2.88273458e+02, 1.81030027e+01],
[ -6.81533512e+00, 5.74565684e+00, -1.56083110e+04,
-7.02734584e+01, -1.18869973e+01]])
copy=False
, আমি নতুন মান পাই। সেগুলি কি মূল উপাদানগুলির স্কোর?