import pandas as pd
import numpy as np
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
submission = pd.read_csv("submission.csv")
data = pd.concat([train, test], axis=0, ignore_index=True)
# 把所有的相同类别的特征编码为同一个值
numerical_features = [x for x in data.columns if data[x].dtype != object]
category_features = [x for x in data.columns if data[x].dtype == object]
def get_mapfunction(x):
mapp = dict(zip(x.unique().tolist(), range(len(x.unique().tolist()))))
def mapfunction(y):
if y in mapp:
return mapp[y]
else:
return -1
return mapfunction
for i in category_features:
data[i] = data[i].apply(get_mapfunction(data[i]))
y_train_ = data["subscribe"][:train.shape[0]]
data = data.drop(["id"], axis=1)
data = data.drop(["subscribe"], axis=1)
x_train_ = data[:train.shape[0]]
x_test_ = data[train.shape[0]:]
x_train = np.array(x_train_)
y_train = np.array(y_train_)
x_test = np.array(x_test_)
# 定义 XGBoost模型
from xgboost.sklearn import XGBClassifier
clf1 = XGBClassifier(colsample_bytree=0.8, learning_rate=0.1, max_depth=5, subsample=1) # 最优的
# 在训练集上训练XGBoost模型
clf1.fit(x_train, y_train)
# 在训练集和测试集上分布利用训练好的模型进行预测
train_predict1 = clf1.predict(x_train)
test_predict1 = clf1.predict(x_test)
result_xgb = list(test_predict1)
from lightgbm.sklearn import LGBMClassifier
clf2 = LGBMClassifier(feature_fraction=0.5, learning_rate=0.1, max_depth=-1, num_leaves=16)
clf2.fit(x_train, y_train)
# 在训练集和测试集上分布利用训练好的模型进行预测
train_predict2 = clf2.predict(x_train)
test_predict2 = clf2.predict(x_test)
result_lgb = list(test_predict2)
from catboost import CatBoostClassifier
clf3 = CatBoostClassifier(depth=5, learning_rate=0.05, iterations=250)
clf3.fit(x_train, y_train)
# 在训练集和测试集上分布利用训练好的模型进行预测
train_predict3 = clf3.predict(x_train)
test_predict3 = clf3.predict(x_test)
result_ctb = list(test_predict3)
from sklearn.metrics import accuracy_score
print('acc_xgb=', accuracy_score(train_predict1, y_train))
print('acc_lgb=', accuracy_score(train_predict2, y_train))
print('acc_ctb=', accuracy_score(train_predict3, y_train))
result_all = list(test_predict1+test_predict2+test_predict3)
submission['subscribe'] = result_all
submission['subscribe'] = submission['subscribe'].map(lambda x: 'no' if x < 1.5 else 'yes')
submission.to_csv("submit4.csv", index=False)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
银行客户认购产品预测.zip (7个子文件)
银行客户认购产品预测
lgb.py 2KB
xgb.py 2KB
ctb.py 2KB
train.csv 2.7MB
submission.csv 73KB
融合.py 3KB
test.csv 901KB
共 7 条
- 1
资源评论
- qq8253168962024-01-14非常有用的资源,可以直接使用,对我很有用,果断支持!
- wubin19972023-12-19资源太好了,解决了我当下遇到的难题,抱紧大佬的大腿~
- ·M·ᰔᩚ2024-01-18发现一个宝藏资源,资源有很高的参考价值,赶紧学起来~
- m0_752269432023-12-28这个资源值得下载,资源内容详细全面,与描述一致,受益匪浅。
- 2301_801083342023-12-29非常有用的资源,有一定的参考价值,受益匪浅,值得下载。
程序员柳
- 粉丝: 6091
- 资源: 1185
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功