苏州网站建设思创,网站做微信支付接口,中山网站制作费用,专业做图片制作网站文章目录1. 读取数据2. 处理label3. 添加特征4. 数据集切片5. 训练6. 预测learn from
https://www.kaggle.com/learn/feature-engineering下一篇#xff1a;Feature Engineering 特征工程 2. Categorical Encodings 1. 读取数据
预测任务#xff1a;用户是否会下载APP…
文章目录1. 读取数据2. 处理label3. 添加特征4. 数据集切片5. 训练6. 预测learn from
https://www.kaggle.com/learn/feature-engineering下一篇Feature Engineering 特征工程 2. Categorical Encodings 1. 读取数据
预测任务用户是否会下载APP当其点击广告以后 数据集ks-projects-201801.csv
读取数据指定两个特征deadline,launchedparse_dates解析为时间
ks pd.read_csv(ks-projects-201801.csv,parse_dates[deadline,launched])预测Kickstarter项目是否会成功。state作为结果label 可以使用类别category货币currency资金目标funding goal国家country以及启动时间launched等特征
2. 处理label
准备标签列看看有哪些值转换成可用的数字格式
pd.unique(ks.state)有6种数值
array([failed, canceled, successful, live, undefined,suspended], dtypeobject)每种多少个按state分组每组中ID行数有多少
ks.groupby(state)[ID].count()state
canceled 38779
failed 197719
live 2799
successful 133956
suspended 1846
undefined 3562
Name: ID, dtype: int64简单处理下标签列正在进行的项目live丢弃successful的标记为1其余的为0
ks ks.query(state ! live) # live行不要
ks ks.assign(outcome(ks[state]successful).astype(int))
# label 转成1,0int型3. 添加特征
把launched时间拆分成年月日小时作为新的特征
ks ks.assign(hourks.launched.dt.hour,dayks.launched.dt.day,monthks.launched.dt.month,yearks.launched.dt.year)
ks.head()转换文字特征category, currency, country为数字
from sklearn.preprocessing import LabelEncodercat_features [category,currency,country]
encoder LabelEncoder()encoded ks[cat_features].apply(encoder.fit_transform)
encoded.head(10)将选择使用的特征合并在一个数据里
X ks[[goal, hour, day, month, year, outcome]].join(encoded)
X.head()4. 数据集切片
数据切片按比例分成训练集、验证集、测试集0.80.10.1更高级的简单做法sklearn.model_selection.StratifiedShuffleSplit
valid_ratio 0.1
valid_size int(len(X)*valid_ratio)
train X[ : -2*valid_size]
valid X[-2*valid_size : -valid_size]
test X[-valid_size : ]需要关注下label 在每个数据集中的占比是否接近
for each in [train, valid, test]:print(Outcome fraction {:.4f}.format(each.outcome.mean()))Outcome fraction 0.3570
Outcome fraction 0.3539
Outcome fraction 0.35425. 训练
使用LightGBM模型进行训练
机器学习算法之LightGBM
feature_cols train.columns.drop(outcome)dtrain lgb.Dataset(train[feature_cols], labeltrain[outcome])
dvalid lgb.Dataset(valid[feature_cols], labelvalid[outcome])param {num_leaves: 64, objective: binary}
param[metric] auc
num_round 1000
bst lgb.train(param, dtrain, num_round, valid_sets[dvalid],early_stopping_rounds10, verbose_evalFalse)6. 预测
对测试集进行预测
from sklearn import metrics
ypred bst.predict(test[feature_cols])
score metrics.roc_auc_score(test[outcome], ypred)print(fTest AUC score: {score})下一篇Feature Engineering 特征工程 2. Categorical Encodings