很多东西很简单,但是用的少且又没反复去记忆又忘了。这里对最近遇到的做个记录,坦诚的面对菜菜的自己吧。
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/84997213和https://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直接根据训练集来调整自身获得更好的分类效果
验证集: 用于在训练过程中检验模型的状态,收敛情况。验证集通常用于调整超参数,根据几组模型验证集上的表现决定哪组超参数拥有最好的性能。同时验证集在训练过程中还可以用来监控模型是否发生过拟合,一般来说验证集表现稳定后,若继续训练,训练集表现还会继续上升,但是验证集会出现不升反降的情况,这样一般就发生了过拟合。所以验证集也用来判断何时停止训练。
形象上来说训练集就像是学生的课本,学生 根据课本里的内容来掌握知识,验证集就像是作业,通过作业可以知道 不同学生学习情况、进步的速度快慢,而最终的测试集就像是考试,考的题是平常都没有见过,考察学生举一反三的能力。