Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何使用循环将数字输入表中?_Loops_Prettytable - Fatal编程技术网

Loops 如何使用循环将数字输入表中?

Loops 如何使用循环将数字输入表中?,loops,prettytable,Loops,Prettytable,我同时有6个模型的分类质量评估表。代码占用了这么多空间,这让我很恼火。这就是为什么我想问,是否有人可以通过一个循环来介绍这一点 from prettytable import PrettyTable from sklearn.naive_bayes import GaussianNB from sklearn.linear_model import LogisticRegression from sklearn.ensemble import GradientBoostingClassifie

我同时有6个模型的分类质量评估表。代码占用了这么多空间,这让我很恼火。这就是为什么我想问,是否有人可以通过一个循环来介绍这一点

from prettytable import PrettyTable

from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import RandomForestClassifier
from lightgbm import LGBMClassifier
from sklearn.ensemble import RandomForestClassifier

NBC = GaussianNB() 
LRE = LogisticRegression(solver='lbfgs')
GBC = GradientBoostingClassifier()
RFC = RandomForestClassifier()
LGBM = LGBMClassifier()
CBC = CatBoostClassifier(verbose=0, n_estimators=100)


classifiers = [NBC,LRE,GBC,RFC,LGBM,CBC]


for cls in classifiers:
    cls.fit(X_train, y_train)


AUC_A1 = np.round(metrics.roc_auc_score(y_train,NBC.predict_proba(X_train)[:,1]),decimals=3)
AUC_B1 = np.round(metrics.roc_auc_score(y_test,NBC.predict_proba(X_test)[:,1]),decimals=3)

AUC_A2 = np.round(metrics.roc_auc_score(y_train,LRE.predict_proba(X_train)[:,1]),decimals=3)
AUC_B2 = np.round(metrics.roc_auc_score(y_test,LRE.predict_proba(X_test)[:,1]),decimals=3)

AUC_A3 = np.round(metrics.roc_auc_score(y_train,GBC.predict_proba(X_train)[:,1]),decimals=3)
AUC_B3 = np.round(metrics.roc_auc_score(y_test,GBC.predict_proba(X_test)[:,1]),decimals=3)

AUC_A4 = np.round(metrics.roc_auc_score(y_train,RFC.predict_proba(X_train)[:,1]),decimals=3)
AUC_B4 = np.round(metrics.roc_auc_score(y_test,RFC.predict_proba(X_test)[:,1]),decimals=3)

AUC_A5 = np.round(metrics.roc_auc_score(y_train,LGBM.predict_proba(X_train)[:,1]),decimals=3)
AUC_B5 = np.round(metrics.roc_auc_score(y_test,LGBM.predict_proba(X_test)[:,1]),decimals=3)

AUC_A6 = np.round(metrics.roc_auc_score(y_train,CBC.predict_proba(X_train)[:,1]),decimals=3)
AUC_B6 = np.round(metrics.roc_auc_score(y_test,CBC.predict_proba(X_test)[:,1]),decimals=3)


t = PrettyTable(['Name', 'GN','LogReg','GradBoos','RandFor','LGBM','CatBoost'])
t.add_row(['AUC_train: ', AUC_A1,AUC_A2,AUC_A3,AUC_A4,AUC_A5,AUC_A6])
t.add_row(['AUC_test: ', AUC_B1,AUC_B2,AUC_B3,AUC_B4,AUC_A5,AUC_A6])

print(t)

尝试定义一个函数并使用for循环进行迭代

from prettytable import PrettyTable
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier
from lightgbm import LGBMClassifier

NBC = GaussianNB() 
LRE = LogisticRegression(solver='lbfgs')
GBC = GradientBoostingClassifier()
RFC = RandomForestClassifier()
LGBM = LGBMClassifier()
CBC = CatBoostClassifier(verbose=0, n_estimators=100)


classifiers = [NBC,LRE,GBC,RFC,LGBM,CBC]
AUC_train = ['AUC_train: ']
AUC_test = ['AUC_test: ']

def compute_metric(model):

    auc_train = np.round(metrics.roc_auc_score(y_train,model.predict_proba(X_train)[:,1]),decimals=3)
    auc_test = np.round(metrics.roc_auc_score(y_test,model.predict_proba(X_test)[:,1]),decimals=3)

    return auc_train, auc_test

for cls in classifiers:

    cls.fit(X_train, y_train)
    results = compute_metric(cls)
    AUC_train.append(results[0])
    AUC_test.append(results[1])


t = PrettyTable(['Name', 'GN','LogReg','GradBoos','RandFor','LGBM','CatBoost'])
t.add_row(AUC_train)
t.add_row(AUC_test)

print(t)

如果有问题,请告诉我。非常感谢你——它奏效了,我认为这是不可能的!。你真的帮了我!等等