4.5

1、创建空列表

#创建一个长度为3000,初始值都为0的列表:
PD_pre=[0 for x in range(0,3000)]

cols=list()
for i,(name,m) in enumerate(model_list.items()):
cols.append(name)
P.columns=cols

2、数据框添加两列、并加变量名

#方法1:
validationset['PD_pre']=PD_pre
validationset['PD_prediction']=PD_prediction
#方法2
#第一步定义字典
c={"PD_pre" : PD_pre,
  "PD_prediction" : PD_prediction}
#第二步字典转数据框
c=pd.DataFrame(c)
#第三步两数据框合并(横向/增加列)
d=pd.concat([validationset,c])#不对 .concat默认axis=0(纵向/行增加)
f = pd.concat( [validationset, c], axis=1 )#对√
f.head()

3、数据框挑选列

y_test=validation[['PD']]#还是数据框类型

4、创建空数据框

# 创建一个空的 DataFrame
df_empty = pd.DataFrame(columns=['A', 'B', 'C', 'D'])

或者

P=np.zeros((y_test.shape[0],len(model_list)))
P=pd.DataFrame(P)
P.columns=cols
#并用【.iloc[:,i]】填充
model_list={'dt' : dt,
            'svm' : svc,
            'knn' : knn,
            'naive bayes' : nb,
            'mlp-nn' : nn,
            'random forest' : rf,
            'gbm' : gb,
            'logistic' : lr,
            'xgboost' : xgb}
for i,(name,m) in enumerate(model_list.items()):
        m.fit(X_train,y_train)
        P.iloc[:,i]=m.predict_proba(X_test)[:,1]

5、数据框拼接(.concat函数,默认纵向拼接)

df_empty = pd.DataFrame(columns=['PD', 'EAD.', 'LGD', 'EL.', 'age', 'gender', 'marriage', 'officeDomain',
       'officeScale', 'officeType', 'salary', 'workYears', 'graduation',
       'hasHouse', 'houseLoan', 'hasCar', 'carLoan', 'credit', 'work',
       'incomeDuty', 'identification', 'borrowType', 'amount', 'interest',
       'months', 'jobType', 'dti'])
for a in range(1,6):
    #导入每一折的训练集、验证集
    trainset=pd.read_csv("E:/anaconda3/DATA/trainset%d.csv" %a)
    df_empty=pd.concat([df_empty,trainset])

6、数据框选变量用. 或[’ '] 或.loc 可以进行计算

valid_predefault['EL_prediction']=valid_predefault.PD_prediction*valid_predefault.EAD_prediction*valid_predefault.LGD_prediction
或valid_predefault['EL_prediction']=valid_predefault['PD_prediction']*valid_predefault['EAD_prediction']*valid_predefault['LGD_prediction']

#提取某一列成列表能运算
#方法1
y_pred=PD_valid_result.loc[:,'PD_prediction']
#方法2
y_pred=PD_valid_result['PD_prediction']
#方法3
y_pred=PD_valid_result.PD_prediction

7、数据框条件赋值

# 使用apply函数, 如果city字段包含'ing'关键词,则'判断'这一列赋值为1,否则为0
frame['panduan'] = frame.city.apply(lambda x: 1 if 'ing' in x else 0)#函数方式
def fun(x):
    if x >= 30:
        return 1
    else:
        return 0
 
values= feature['values'].apply(lambda x: fun(x))
#若需要将改动赋值给原始的feature的列中的话,可以进行一次赋值
feature['values']=values
#或者直接一次修改后赋值。
feature['values']= feature['values'].apply(lambda x: fun(x))

8、写函数、传参

#PD_valid_result为数据框
def get_TP(a, b):
    if a == 0 and b == 0:PD_valid_result
        return 1
    else:
        return 0

TP = PD_valid_result.apply(lambda x: get_TP(x.PD, x.PD_prediction), axis = 1)
TP = len(TP[TP==1])
print(TP)
def get_prediction(x):
    if x > T:
        return 1
    else:
        return 0
c['PD_prediction']=c['PD_pre'].apply(lambda x: get_prediction(x))

9、关于F1值
要计算每个类别下的precision和recall,从而计算每个类别下的f1-score;
再求均值
如果是二分类问题则选择参数‘binary’;如果考虑类别的不平衡性,需要计算类别的加权平均,则使用‘weighted’;如果不考虑类别的不平衡性,计算宏平均,则使用‘macro’

print(f1_score(y_true, y_pred, average='macro'))  
print(f1_score(y_true, y_pred, average='weighted')) 

参考来源:机器学习中的F1-score

10.print函数

print('文字 : %.4f' %)
#如:
print('f1_score: %.4f' % f1_score)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值