清华镜像源安装 NGboost XGboost Catboost

清华镜像源安装 NGboost XGboost Catboost

pip install catboost -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install ngboost -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install xgboost -i https://pypi.tuna.tsinghua.edu.cn/simple

数据比赛常用预测模型:LGB、XGB与ANN

LGB

lightgbm:由于现在的比赛数据越来越大,想要获得一个比较高的预测精度,同时又要减少内存占用以及提升训练速度,lightgbm是一个非常不错的选择,其可达到与xgboost相似的预测效果。

def LGB_predict(train_x,train_y,test_x,res,index):print("LGB test")clf = lgb.LGBMClassifier(boosting_type='gbdt', num_leaves=31, reg_alpha=0.0, reg_lambda=1,max_depth=-1, n_estimators=5000, objective='binary',subsample=0.7, colsample_bytree=0.7, subsample_freq=1,learning_rate=0.05, min_child_weight=50, random_state=2018, n_jobs=-1)clf.fit(train_x, train_y, eval_set=[(train_x, train_y)], eval_metric='auc',early_stopping_rounds=100)res['score'+str(index)] = clf.predict_proba(test_x)[:,1]res['score'+str(index)] = res['score'+str(index)].apply(lambda x: float('%.6f' % x))print(str(index)+' predict finish!')gc.collect()res=res.reset_index(drop=True)return res['score'+str(index)]

XGB

xgboost:在lightgbm出来之前,是打比赛的不二之选,现在由于需要做模型融合以提高预测精度,所以也需要使用到xgboost。

def XGB_predict(train_x,train_y,val_X,val_Y,test_x,res):print("XGB test")# create dataset for lightgbmxgb_val = xgb.DMatrix(val_X, label=val_Y)xgb_train = xgb.DMatrix(X_train, label=y_train)xgb_test = xgb.DMatrix(test_x)# specify your configurations as a dictparams = {'booster': 'gbtree',# 'objective': 'multi:softmax', # 多分类的问题、# 'objective': 'multi:softprob', # 多分类概率'objective': 'binary:logistic','eval_metric': 'auc',# 'num_class': 9, # 类别数,与 multisoftmax 并用'gamma': 0.1, # 用于控制是否后剪枝的参数,越大越保守,一般0.1、0.2这样子。'max_depth': 8, # 构建树的深度,越大越容易过拟合'alpha': 0, # L1正则化系数'lambda': 10, # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。'subsample': 0.7, # 随机采样训练样本'colsample_bytree': 0.5, # 生成树时进行的列采样'min_child_weight': 3,# 这个参数默认是 1,是每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言# ,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。# 这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。'silent': 0, # 设置成1则没有运行信息输出,最好是设置为0.'eta': 0.03, # 如同学习率'seed': 1000,'nthread': -1, # cpu 线程数'missing': 1,'scale_pos_weight': (np.sum(y==0)/np.sum(y==1)) # 用来处理正负样本不均衡的问题,通常取:sum(negative cases) / sum(positive cases)# 'eval_metric': 'auc'}
plst = list(params.items())num_rounds = 5000 # 迭代次数watchlist = [(xgb_train, 'train'), (xgb_val, 'val')]# 交叉验证# result = xgb.cv(plst, xgb_train, num_boost_round=200, nfold=4, early_stopping_rounds=200, verbose_eval=True, folds=StratifiedKFold(n_splits=4).split(X, y))# 训练模型并保存# early_stopping_rounds 当设置的迭代次数较大时,early_stopping_rounds 可在一定的迭代次数内准确率没有提升就停止训练model = xgb.train(plst, xgb_train, num_rounds, watchlist, early_stopping_rounds=200)res['score'] = model.predict(xgb_test)res['score'] = res['score'].apply(lambda x: float('%.6f' % x))return res

ANN

ANN:得益于现在的计算机技术的高度发展,以及GPU性能的提高,还有Keras,tensorflow,pytorch等多重工具的使用,人工神经网络也可以作为最后模型融合的子模型之一,可以有效地提升最终的预测结果。

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
X_train = imp.fit_transform(X_train)
sc = StandardScaler(with_mean=False)
sc.fit(X_train)
X_train = sc.transform(X_train)
val_X = sc.transform(val_X)
X_test = sc.transform(X_test)
ann_scale = 1
from keras.layers import Embedding
model = Sequential()
model.add(Embedding(X_train.shape[1] + 1,EMBEDDING_DIM,input_length=MAX_SEQUENCE_LENGTH))
#model.add(Dense(int(256 / ann_scale), input_shape=(X_train.shape[1],)))
model.add(Dense(int(256 / ann_scale)))
model.add(Activation('tanh'))
model.add(Dropout(0.3))
model.add(Dense(int(512 / ann_scale)))
model.add(Activation('relu'))
model.add(Dropout(0.3))
model.add(Dense(int(512 / ann_scale)))
model.add(Activation('tanh'))
model.add(Dropout(0.3))
model.add(Dense(int(256 / ann_scale)))
model.add(Activation('linear'))
model.add(Dense(1)) 
model.add(Activation('sigmoid'))
# For a multi-class classification problem
model.summary()
class_weight1 = class_weight.compute_class_weight('balanced',np.unique(y),y)
#-----------------------------------------------------------------------------------------------------------------------------------------------------  
# AUC for a binary classifier  
def auc(y_true, y_pred):  ptas = tf.stack([binary_PTA(y_true,y_pred,k) for k in np.linspace(0, 1, 1000)],axis=0)  pfas = tf.stack([binary_PFA(y_true,y_pred,k) for k in np.linspace(0, 1, 1000)],axis=0)  pfas = tf.concat([tf.ones((1,)) ,pfas],axis=0)  binSizes = -(pfas[1:]-pfas[:-1])  s = ptas*binSizes  return K.sum(s, axis=0)  
# PFA, prob false alert for binary classifier  
def binary_PFA(y_true, y_pred, threshold=K.variable(value=0.5)):  y_pred = K.cast(y_pred >= threshold, 'float32')  # N = total number of negative labels  N = K.sum(1 - y_true)  # FP = total number of false alerts, alerts from the negative class labels  FP = K.sum(y_pred - y_pred * y_true)  return FP/N  
# P_TA prob true alerts for binary classifier  
def binary_PTA(y_true, y_pred, threshold=K.variable(value=0.5)):  y_pred = K.cast(y_pred >= threshold, 'float32')  # P = total number of positive labels  P = K.sum(y_true)  # TP = total number of correct alerts, alerts from the positive class labels  TP = K.sum(y_pred * y_true)  return TP/P  
#---------------------------------------------------------------------------------------------------------------------------------------------------
model.compile(loss='binary_crossentropy',optimizer='rmsprop',
#              metrics=['accuracy'],metrics=[auc])
epochs = 100
model.fit(X_train, y, epochs=epochs, batch_size=2000, validation_data=(val_X, val_y), shuffle=True,class_weight = class_weight1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode MySQL 619. 只出现一次的最大数字

文章目录1. 题目2. 解题1. 题目 表 my_numbers 的 num 字段包含很多数字,其中包括很多重复的数字。 你能写一个 SQL 查询语句,找到只出现过一次的数字中,最大的一个数字吗? --- |num| --- | 8 | | 8 | | 3 | | 3 | | 1 | | 4 |…

幸福感数据分析与预测

文章目录分析目的一、数据采集1、 数据来源2、 数据说明二、数据传输三、数据处理1、查看数据2、缺失值处理3、合并数据集4、时间数据处理5、分组及One-hot编码处理四、数据分析1、描述性统计2、探索性分析1 是否与所在地是城市or农村有关2 是否与性别有关3 是否与年龄有关4 是…

LeetCode MySQL 1142. 过去30天的用户活动 II

文章目录1. 题目2. 解题1. 题目 Table: Activity ------------------------ | Column Name | Type | ------------------------ | user_id | int | | session_id | int | | activity_date | date | | activity_type | enum | ------------------…

mysql replace into用法详细说明

REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。 注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则…

MYSQL练习题

MYSQL练习题 数据表建立代码及题目解答 提取码:e6lk

LeetCode MySQL 1280. 学生们参加各科测试的次数

文章目录1. 题目2. 解题1. 题目 学生表: Students ------------------------ | Column Name | Type | ------------------------ | student_id | int | | student_name | varchar | ------------------------主键为 student_id(学生ID)&a…

【记录】有关parseInt的讨论

问题由来,某群的一个讨论: parseInt(1/0, 19) 18; parseInt的用法: parseInt(string [, radix]) 注意,第一个参数是String类型,当radix未指定的时候,那么默认基地是10。转换规则:1、首先查看位…

LeetCode MySQL 597. 好友申请 I :总体通过率

文章目录1. 题目2. 解题1. 题目 在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。现在给如下两个表: 表: friend_request | sender_id | send_to_id |request_date| |-----------|------------…

贷款利润最大化——利用随机森林和逻辑回归

文章目录分析目的一、数据采集1、数据来源2、数据说明二、数据传输三、数据处理1、查看数据2、清理无用特征值3、标签列分析4、清理只单一值的列5、空值处理6、数据类型转换四、数据挖掘1、构建模型2、导入算法五、总结分析目的 本文针对某信贷网站提供的2007-2011年贷款申请人…

ios学习之UITabBar(标签栏)

自定义TabBar的高度:(无论横屏还是竖屏都以竖屏为准,之前就改为横屏的设置出错,找了好久才找到这个问题) tabBar [[UITabBarController alloc] init];// 改变tabBarController高度 tabBar.tabBar.frameCGRectMake(0,…

LeetCode MySQL 512. 游戏玩法分析 II

文章目录1. 题目2. 解题1. 题目 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | ----------------------- (…

Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”(转)

Gtk-WARNING**:无法在模块路径中找到主题引擎:“pixmap”的解决如果终端中提示:(gvim:2353): Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”解决方法是运行: sudo apt-get install gtk2-engines-pixbuf 转载于:https://www.cnbl…

机器学习算法优缺点对比及选择

文章目录偏差&方差常见算法优缺点朴素贝叶斯Logistic Regression(逻辑回归)线性回归最近邻算法——KNN决策树ID3、C4.5算法CART分类与回归树AdaboostingSVM支持向量机人工神经网络K-Means聚类EM最大期望算法集成算法(AdaBoost算法&#x…

LeetCode MySQL 1076. 项目员工II

文章目录1. 题目2. 解题1. 题目 Table: Project ---------------------- | Column Name | Type | ---------------------- | project_id | int | | employee_id | int | ---------------------- 主键为 (project_id, employee_id)。 employee_id 是员工表 Employ…

CouchDB与Couchbase:区别何在,Membase又将如何?

CouchDB与Couchbase:区别何在,Membase又将如何? 2012-05-23 02:05 682人阅读 评论(1) 收藏 举报 本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/couchdb-vs-couchbase-memba…

Sklearn.metrics评估方法

文章目录混淆矩阵分类准确率 accuracy精确率Precision召回率 recallF1值Roc曲线、AUC混淆矩阵 混淆矩阵又称误差矩阵,针对预测值和真实值之间的关系,我们可以将样本分为四个部分,分别是: 真正例(True Positive&#x…

HDU 1492 The number of divisors(约数) about Humble Numbers

The number of divisors(约数) about Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1741 Accepted Submission(s): 852 Problem DescriptionA number whose only prime factors are 2,3,5 or …

LeetCode MySQL 1083. 销售分析 II

文章目录1. 题目2. 解题1. 题目 Table: Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是这张表的主键Tabl…

常见的几种流失预警模型

建立预警模型的目的是提前识别潜在流失用户,为挽留用户赢得时间。 流失预警模型,不应该只是单一的模型,而应该是一系列模型。预警模型的优劣通常用准确率、召回率来衡量。准确率:预测为流失的用户中,有多少真的流失。召…

WP7 网络请求之WebClient

WebClient运行于UI线程,支持编码方式的设定、支持POST/GET方式提交、不支持同步请求、不支持超时设定。WP7会缓存URL链 接,所以两次请求,尽管网络端数据发生了变化,得到的还会是同样的数据,这点要特别注意,…