鱼C论坛

 找回密码
 立即注册
查看: 2378|回复: 2

[已解决]有关pd.DataFrame的问题请教下各位

[复制链接]
发表于 2019-12-17 19:29:59 | 显示全部楼层 |阅读模式
20鱼币
问题源于学习时常见的那个信用卡欺诈,
pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score'])
这个里面index=range(len(c_param_range),2)不是特别懂,index不是应该写成range(len(c_param_range))即可吗,那2是干嘛用的?

==================================================================================================

  1. def print_kfold_scores(x_train_data,y_train_data):
  2.     fold = KFold(5,shuffle=False)#数据数目,交叉折叠次数5次,不进行洗牌
  3.     c_param_range = [0.01,0.1,1,10,100] #待选的模型参数
  4.     #新建一个dataframe类型,列名是参数取值、平均召回率
  5.    [color=Red] result_table = pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score'])[/color]
  6.     result_table['C_parameter']=c_param_range
  7.     j=0
  8.     for c_param in c_param_range:
  9.         print "=============================="
  10.         print "C parameter:",c_param
  11.         print "------------------------------"
  12.         recall_accs = []
  13.         for iteration,indices in enumerate(fold.split(x_train_data)):
  14.             lr = LogisticRegression(C=c_param,penalty='l1')   #实例化逻辑回归模型
  15.             lr.fit(x_train_data.iloc[indices[0],:],y_train_data.iloc[indices[0],:].values.ravel())
  16.             y_pred_undersample = lr.predict(x_train_data.iloc[indices[1],:].values)
  17.             recall_acc = recall_score(y_train_data.iloc[indices[1],:].values,y_pred_undersample)
  18.             recall_accs.append(recall_acc)
  19.             print "recall score=", recall_acc
  20.         #the mean value of the recall scores is the metric we want to save and fet hold of.
  21.         result_table.ix[j,'Mean Recall score'] = np.mean(recall_accs)
  22.         j=+1
  23.         print ''
  24.         print "Mean Recall score:",np.mean(recall_accs)
  25.     best_c = result_table.loc[result_table['Mean Recall score'].astype('float64').idxmax()]['C_parameter']
  26.     #finally,we can check which C parameter is the best amongst the chosen
  27.     print "**************************"
  28.     print "Best model to choose from cross validation is with parameter= ",best_c
  29.     print "**************************"
  30.     return best_c
复制代码
最佳答案
2019-12-17 19:30:00
本帖最后由 彩虹七号 于 2019-12-20 09:05 编辑

>>> c_param_range = [0.01]
>>> result_table = pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score'])
>>> result_table
  C_parameter Mean Recall score
1         NaN               NaN
>>> result_table['C_parameter']=c_param_range
>>> result_table
   C_parameter Mean Recall score
1         0.01               NaN
***************************************************************
>>> c_param_range = [0.01,0.1]
>>> result_table = pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score'])
>>> result_table
Empty DataFrame
Columns: [C_parameter, Mean Recall score]
Index: []
>>> result_table['C_parameter']=c_param_range
>>> result_table
   C_parameter Mean Recall score
0         0.01               NaN
1         0.10               NaN

当待选的模型参数中只有一个的时候 index设置为1,当大于1 的时候index设置从0开始 ,估计是这个意思,感觉没什么意义

最佳答案

查看完整内容

>>> c_param_range = [0.01] >>> result_table = pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score']) >>> result_table C_parameter Mean Recall score 1 NaN NaN >>> result_table['C_parameter']=c_param_range >>> result_table C_parameter Mean Recall score 1 0.01 NaN ******************************************* ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-17 19:30:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 彩虹七号 于 2019-12-20 09:05 编辑

>>> c_param_range = [0.01]
>>> result_table = pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score'])
>>> result_table
  C_parameter Mean Recall score
1         NaN               NaN
>>> result_table['C_parameter']=c_param_range
>>> result_table
   C_parameter Mean Recall score
1         0.01               NaN
***************************************************************
>>> c_param_range = [0.01,0.1]
>>> result_table = pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score'])
>>> result_table
Empty DataFrame
Columns: [C_parameter, Mean Recall score]
Index: []
>>> result_table['C_parameter']=c_param_range
>>> result_table
   C_parameter Mean Recall score
0         0.01               NaN
1         0.10               NaN

当待选的模型参数中只有一个的时候 index设置为1,当大于1 的时候index设置从0开始 ,估计是这个意思,感觉没什么意义
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-17 19:31:18 | 显示全部楼层
  1. def print_kfold_scores(x_train_data,y_train_data):
  2.     fold = KFold(5,shuffle=False)#数据数目,交叉折叠次数5次,不进行洗牌
  3.     c_param_range = [0.01,0.1,1,10,100] #待选的模型参数
  4.     #新建一个dataframe类型,列名是参数取值、平均召回率
  5.     result_table = pd.DataFrame(index=range(len(c_param_range),2),columns=['C_parameter','Mean Recall score'])
  6.     result_table['C_parameter']=c_param_range
  7.     j=0
  8.     for c_param in c_param_range:
  9.         print "=============================="
  10.         print "C parameter:",c_param
  11.         print "------------------------------"
  12.         recall_accs = []
  13.         for iteration,indices in enumerate(fold.split(x_train_data)):
  14.             lr = LogisticRegression(C=c_param,penalty='l1')   #实例化逻辑回归模型
  15.             lr.fit(x_train_data.iloc[indices[0],:],y_train_data.iloc[indices[0],:].values.ravel())
  16.             y_pred_undersample = lr.predict(x_train_data.iloc[indices[1],:].values)
  17.             recall_acc = recall_score(y_train_data.iloc[indices[1],:].values,y_pred_undersample)
  18.             recall_accs.append(recall_acc)
  19.             print "recall score=", recall_acc
  20.         #the mean value of the recall scores is the metric we want to save and fet hold of.
  21.         result_table.ix[j,'Mean Recall score'] = np.mean(recall_accs)
  22.         j=+1
  23.         print ''
  24.         print "Mean Recall score:",np.mean(recall_accs)
  25.     best_c = result_table.loc[result_table['Mean Recall score'].astype('float64').idxmax()]['C_parameter']
  26.     #finally,we can check which C parameter is the best amongst the chosen
  27.     print "**************************"
  28.     print "Best model to choose from cross validation is with parameter= ",best_c
  29.     print "**************************"
  30.     return best_c
复制代码


代码修改下,里面不小心添加了点东西
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 01:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表