আমি বুঝতে চেষ্টা করছি যে এই দুটি গ্রন্থাগারের লজিস্টিক রিগ্রেশন থেকে আউটপুট কেন বিভিন্ন ফলাফল দেয়।
আমি ইউসিএলএ ইড্রি টিউটোরিয়াল থেকে ডেটাसेट ব্যবহার করছি , এর admit
উপর ভিত্তি করে ভবিষ্যদ্বাণী করা gre
, gpa
এবং rank
। rank
শ্রেণীবদ্ধ ভেরিয়েবল হিসাবে বিবেচনা করা হয়, সুতরাং এটি প্রথমে rank_1
বাদ পড়ে দিয়ে ডামি ভেরিয়েবলে রূপান্তরিত হয় । একটি ইন্টারসেপ্ট কলামও যুক্ত করা হয়েছে।
df = pd.read_csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
y, X = dmatrices('admit ~ gre + gpa + C(rank)', df, return_type = 'dataframe')
X.head()
> Intercept C(rank)[T.2] C(rank)[T.3] C(rank)[T.4] gre gpa
0 1 0 1 0 380 3.61
1 1 0 1 0 660 3.67
2 1 0 0 0 800 4.00
3 1 0 0 1 640 3.19
4 1 0 0 1 520 2.93
# Output from scikit-learn
model = LogisticRegression(fit_intercept = False)
mdl = model.fit(X, y)
model.coef_
> array([[-1.35417783, -0.71628751, -1.26038726, -1.49762706, 0.00169198,
0.13992661]])
# corresponding to predictors [Intercept, rank_2, rank_3, rank_4, gre, gpa]
# Output from statsmodels
logit = sm.Logit(y, X)
logit.fit().params
> Optimization terminated successfully.
Current function value: 0.573147
Iterations 6
Intercept -3.989979
C(rank)[T.2] -0.675443
C(rank)[T.3] -1.340204
C(rank)[T.4] -1.551464
gre 0.002264
gpa 0.804038
dtype: float64
statsmodels
আইড্রে ওয়েবসাইটে প্রদর্শিত আউটপুটটি একই, তবে আমি নিশ্চিত নই যে কেন বিজ্ঞান-শিখা বিভিন্ন সহগের একটি সেট তৈরি করে। এটি কিছু পৃথক লোকসানের কার্যটি হ্রাস করে? এমন কোনও ডকুমেন্টেশন রয়েছে যা বাস্তবায়নের কথা বলে?
glmnet
আর-তে প্যাকেজটি ব্যবহার করে ফলাফলটি সদৃশ করার চেষ্টা করছিলাম , তবে একই সহগটি পাইনি। glmnet একটি কিছুটা ভিন্ন খরচ ফাংশন তুলনা করেছেন sklearn কিন্তু এমনকি যদি আমি সেটalpha=0
মধ্যেglmnet
(অর্থাত শুধুমাত্র L2-পেনাল্টি ব্যবহার করুন) এবং সেট1/(N*lambda)=C
, আমার এখনও একই ফলাফল পাই না?