如果我们在 SGD 分类器上使用校准后的 cv 作为线性核,如何获得特征权重
Posted
技术标签:
【中文标题】如果我们在 SGD 分类器上使用校准后的 cv 作为线性核,如何获得特征权重【英文标题】:how to get the feature weight if we use calibrated cv for linear kernal on SGD classifier 【发布时间】:2019-07-16 20:27:42 【问题描述】:我在 SGD 分类器上为我的线性内核使用校准的 cv,因为我的损失是铰链损失。但是现在我想获得前 10 名的特性或类,那么该怎么做,我尝试使用 .coef_ 但它没有给我带来错误。
linear_svm_sgd=SGDClassifier(penalty=penalty,alpha=i,max_iter=1000,class_weight='balanced')
calibrated_clf= CalibratedClassifierCV(linear_svm_sgd,cv=3, method='sigmoid')
#fit the model on train and predict its probability
clf_model=calibrated_clf.fit(xtrain_bow,ytrain_bow)
predictl1=clf_model.predict_proba(xtrain_bow)
fp_rate, tp_rate, thresholds = roc_curve(ytrain_bow, predictl1[:,1])
#fit the model on cv & predict its probablity
clf_model=calibrated_clf.fit(xcv_bow,ycv_bow)
fp_rate_cv, tp_rate_cv, thresholds = roc_curve(ycv_bow,clf_model.predict_proba(xcv_bow)[:,1])
#saving the value for hyperparamater foe each penalty l1 & l2
if penalty=="l1":
auc_valuel1_train.append(auc(fp_rate,tp_rate))
auc_valuel1_cv.append(auc(fp_rate_cv,tp_rate_cv))
else:
auc_valuel2_train.append(auc(fp_rate,tp_rate))
auc_valuel2_cv.append(auc(fp_rate_cv,tp_rate_cv))
它给了我以下错误
Top10_features=linear_svm_sgd.coef_
AttributeError: 'SGDClassifier' 对象没有属性 'coef_'
【问题讨论】:
AttributeError: LinearRegression object has no attribute 'coef_'的可能重复 【参考方案1】:在校准您的模型之前,只需 .fit
SGDClassifier。
linear_svm_sgd.fit(xtrain_bow, ytrain_bow)
calibrated_clf= CalibratedClassifierCV(linear_svm_sgd,cv=3, method='sigmoid')
#fit the model on train and predict its probability
clf_model=calibrated_clf.fit(xtrain_bow,ytrain_bow)
predictl1=clf_model.predict_proba(xtrain_bow)
然后您将可以访问系数。
【讨论】:
以上是关于如果我们在 SGD 分类器上使用校准后的 cv 作为线性核,如何获得特征权重的主要内容,如果未能解决你的问题,请参考以下文章
使用 openCV 进行相机校准 - cv2.getOptimalNewCameraMatrix 导致 roi 为零
SKlearn SGD Partial Fit 错误:特征数 378 与之前的数据不匹配 4598
我在 Python 中的数据(朴素贝叶斯、神经网络等)在每个分类器上出现错误