分类期望反射
expectation-reflection的Python项目详细描述
期望反射(ER)是一种乘法优化方法,它根据目标观测值与其相应模型期望值的比值来训练特征与目标之间的交互权重。停止迭代作为一种度量模型的有效性的方法,可以将其作为一个成本最小化的函数。在
这种方法的优点: (1) 即使在小样本的情况下,工作也相对良好; (2) 只使用一个超参数; (3) 能够演示系统机制。在
在当前版本中,ER classification
可以作为分类器(用于二进制和多项式任务)。regression
的扩展将很快出现。在
安装
来自PyPI
pip install expectation-reflection
来自存储库
^{pr2}$使用
ER的实现与sklearn
中其他分类器的实现非常相似,基本上包括以下步骤。在
- 将
expectation_reflection
包导入python脚本:
fromexpectation_reflectionimportclassificationasER
- 选择模型:
model=ER.model(max_iter=100,reg=0.01,random_state=1)
- 将您的
dataset.txt
导入python脚本。在
Xy=np.loadtxt('dataset.txt')
- 从数据集中选择功能和目标。如果目标是最后一列,则
X,y=Xy[:,:-1],Xy[:,-1]
- 从
sklearn
导入train_test_split
,将数据拆分为训练集和测试集:
fromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.5,random_state=1)
- 使用
(X_train, y_train)
集训练模型:
model.fit(X_train,y_train)
- 预测新数据集
y_pred
的输出类及其概率p_pred
:
y_pred=model.predict(X_test)print('predicted output:',y_pred)p_pred=model.predict_proba(X_test)print('predicted probability:',p_pred)
- 截距和相互作用权重:
print('intercept:',model.intercept_)print('interaction weights:',model.coef_)
超参数优化
ER只有一个超参数reg
,可以通过使用sklearn
中的GridSearchCV
对其进行优化:
fromsklearn.model_selectionimportGridSearchCVmodel=ER.model(max_iter=100,random_state=1)reg=[0.0001,0.001,0.01,0.1,0.5,1.]hyper_parameters=dict(reg=reg)clf=GridSearchCV(model,hyper_parameters,cv=4,n_jobs=-1,iid='deprecated')best_model=clf.fit(X_train,y_train)
- 最佳超参数:
print('best_hyper_parameters:',best_model.best_params_)
- 预测输出
y_pred
及其概率p_pred
:
y_pred=best_model.best_estimator_.predict(X_test)print('predicted output:',y_pred)p_pred=best_model.best_estimator_.predict_proba(X_test)print('predicted probability:',p_pred)
性能评估
我们可以使用metrics
中的metrics
来衡量模型性能:
fromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_score,\ roc_auc_score,roc_curve,aucacc=accuracy_score(y_test,y_pred)print('accuracy:',acc)precision=precision_score(y_test,y_pred)print('precision:',precision)recall=recall_score(y_test,y_pred)print('recall:',recall)f1score=f1_score(y_test,y_pred)print('f1score:',f1score)roc_auc=roc_auc_score(y_test,p_pred)## note: it is p_pred, not y_predprint('roc auc:',roc_auc)
ROC AUC也可计算为
fp,tp,thresholds=roc_curve(y_test,p_pred,drop_intermediate=False)roc_auc=auc(fp,tp)print('roc auc:',roc_auc)
引文
如果您在工作中使用此软件包,请引用以下文件:
- 在 在
- 在 在
- 项目
标签: