近期函数积累:

很多东西很简单,但是用的少且又没反复去记忆又忘了。这里对最近遇到的做个记录,坦诚的面对菜菜的自己吧。 

pd.get_dummies(data[col], prefix=col) # get_dummies 是利用pandas实现one hot encode的方式。此处为对指定列进行one_hot编码。 这了指定的原因是只对类别型特征列进行one_hot编码。对于其中某一列,假设改类别列的取值个数为3,则进行one-hot后该列列数则由1变为了3  

参考: https://blog.csdn.net/bigdata_mining/article/details/104105384

df_train.drop(['Id'], axis=1, inplace=True) # dataframe的drop函数,axis=1 对列操作,删除id这列。inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换,如果inplace=False,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存位置. 

data.pop
df=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],index=['a','b','c'],columns=['A','B','C'])
#删除列
del df['B'] # 数据帧删除;原数据改变
df.pop('B') # 列弹出;原数据改变
df.drop(['A','B'],axis=1) #删除列; 原数据不变
df.drop(columns=['A','B'])#删除列; 原数据不变

#改变某一列的位置。如:先删除gender列,然后在原表data中第0列插入被删掉的列。 data.insert(0, '性别', data.pop('gender'))#pop返回删除的列,插入到第0列,并取新名为'性别'  

参考: https://blog.csdn.net/tcy23456/article/details/84997213https://blog.csdn.net/nuaadot/article/details/78304642

x_train, x_val, y_train, y_val = train_test_split(train, target, test_size=0.2, random_state=2018) # 
    # 此处即按 1-test_size的比例划分训练集和验证集,拿到训练集的训练数据,验证集的训练数据(都不含label),训练集的label,验证集的label 。  
参考官方案例
from sklearn.model_selection import train_test_split
>>> X, y = np.arange(10).reshape((5, 2)), range(5)
>>> X
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])
>>> list(y)
[0, 1, 2, 3, 4]
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.33, random_state=42)
...
>>> X_train
array([[4, 5],
       [0, 1],
       [6, 7]])
>>> y_train
[2, 0, 3]
>>> X_test
array([[2, 3],
       [8, 9]])
>>> y_test
[1, 4]

lgb.LGBMRegressor

 gbm = lgb.LGBMRegressor(objective='binary', # application:默认为regression。,也称objective, app这里指的是任务目标,binary log loss classification application ? 这个是二分类? 
                            subsample=0.8,
                            min_child_weight=0.5, # 又称为min_sum_hessian_in_leaf,指要想建立一个叶子,该叶子需要提供的最小hessian值。这两个参数都是对新建叶子设置了门槛,可以降低叶子数量,减小过拟合。
                            colsample_bytree=0.7, # 用来控制每棵随机采样的列数的占比(每一列是一个特征)。 调小可以防止过拟合,加快运算速度。典型值:0.5-1范围: (0,1]。一般设置成0.8左右。
                            num_leaves=100, #叶子节点数,也称num_leaf,新版lgb将这个默认值改成31,这代表的是一棵树上的叶子数
                            max_depth=12, # 树的层次深度
                            learning_rate=0.05,#也称shrinkage_rate,梯度下降的步长。默认设置成0.1,我们一般设置成0.05-0.2之间
                            n_estimators=10, # 基学习器的数量
                            )

参考: https://apachecn.gitee.io/lightgbm-doc-zh/#/docs/6

测试集: 测试集实际通常是不带label 的。 有的时候,提供的测试集里面是有标签的,这种测试集,我们可以理解为其实是验证集。测试集用来评价模型泛化能力,即之前模型使用验证集确定了超参数,使用训练集调整了参数,最后使用一个从没有见过的数据集来判断这个模型是否Work。

训练集: 用来训练模型内参数的数据集,Classfier直接根据训练集来调整自身获得更好的分类效果

验证集: 用于在训练过程中检验模型的状态,收敛情况。验证集通常用于调整超参数,根据几组模型验证集上的表现决定哪组超参数拥有最好的性能。同时验证集在训练过程中还可以用来监控模型是否发生过拟合,一般来说验证集表现稳定后,若继续训练,训练集表现还会继续上升,但是验证集会出现不升反降的情况,这样一般就发生了过拟合。所以验证集也用来判断何时停止训练。

形象上来说训练集就像是学生的课本,学生 根据课本里的内容来掌握知识,验证集就像是作业,通过作业可以知道 不同学生学习情况、进步的速度快慢,而最终的测试集就像是考试,考的题是平常都没有见过,考察学生举一反三的能力。

参考:https://zhuanlan.zhihu.com/p/35394638

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值