আমি আর-তে প্যাকেজ sklearn
ব্যবহার করে লজিস্টিক রিগ্রেশন লাইব্রেরি থেকে ফলাফলগুলি নকল করার চেষ্টা করছি glmnet
।
থেকে sklearn
পণ্য সরবরাহ সংশ্লেষণ ডকুমেন্টেশন , এটা L2 শাস্তির অধীনে খরচ ফাংশন কমানোর জন্য চেষ্টা করছে
এর ভিগনেটগুলি থেকে glmnet
, এর প্রয়োগটি কিছুটা আলাদা ব্যয় ফাংশন হ্রাস করে
দ্বিতীয় সমীকরণে কিছুটা টুইটের সাথে এবং ,
যা sklearn
কেবলমাত্র set frac1 {N \ lambda} = C সেট করা থাকলে function ল্যাম্বডএর একটি ফ্যাক্টর দ্বারা ব্যয় ফাংশন থেকে পৃথক , তাই আমি দুটি প্যাকেজ থেকে একই গুণমানের অনুমান আশা করছিলাম। তবে এগুলি আলাদা। আমি ইউসিএলএ ইড্রি টিউটোরিয়াল থেকে ডেটাसेट ব্যবহার করছি , এর উপর ভিত্তি করে ভবিষ্যদ্বাণী করা , এবং । 400 টি পর্যবেক্ষণ রয়েছে, সুতরাং সি = 1 , \ ল্যাম্বদা = 0.0025 সহ ।admit
gre
gpa
rank
#python sklearn
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
model = LogisticRegression(fit_intercept = False, C = 1)
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]
> # R glmnet
> df = fread("https://stats.idre.ucla.edu/stat/data/binary.csv")
> X = as.matrix(model.matrix(admit~gre+gpa+as.factor(rank), data=df))[,2:6]
> y = df[, admit]
> mylogit <- glmnet(X, y, family = "binomial", alpha = 0)
> coef(mylogit, s = 0.0025)
6 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -3.984226893
gre 0.002216795
gpa 0.772048342
as.factor(rank)2 -0.530731081
as.factor(rank)3 -1.164306231
as.factor(rank)4 -1.354160642
R
হিসেবে দেখা যেতে পারে আউটপুট, একরকম নিয়মিতকরণ ছাড়া লজিস্টিক রিগ্রেশন পাসে হবে এখানে । আমি কি কিছু মিস করছি বা স্পষ্টতই কিছু ভুল করছি?
আপডেট: একই প্রক্রিয়াটি পরিচালনা করতে আমি LiblineaR
প্যাকেজটি ব্যবহার করার চেষ্টাও করেছি R
, এবং তবুও আরও একটি পৃথক অনুমান পেয়েছি ( liblinear
এছাড়াও এটি সমাধানকারীও sklearn
):
> fit = LiblineaR(X, y, type = 0, cost = 1)
> print(fit)
$TypeDetail
[1] "L2-regularized logistic regression primal (L2R_LR)"
$Type
[1] 0
$W
gre gpa as.factor(rank)2 as.factor(rank)3 as.factor(rank)4 Bias
[1,] 0.00113215 7.321421e-06 5.354841e-07 1.353818e-06 9.59564e-07 2.395513e-06
আপডেট 2: মানায় মান বন্ধ করে glmnet
দেওয়া:
> mylogit <- glmnet(X, y, family = "binomial", alpha = 0, standardize = F)
> coef(mylogit, s = 0.0025)
6 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -2.8180677693
gre 0.0034434192
gpa 0.0001882333
as.factor(rank)2 0.0001268816
as.factor(rank)3 -0.0002259491
as.factor(rank)4 -0.0002028832