前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给女朋友买了只口红,结果她跟我说分手?掌握了机器学习再买买买吧!

给女朋友买了只口红,结果她跟我说分手?掌握了机器学习再买买买吧!

作者头像
养码场
发布2020-01-13 16:41:01
4170
发布2020-01-13 16:41:01
举报
文章被收录于专栏:养码场养码场

过完年,压岁钱到位,迟来的年终奖到账,钱包鼓起来但新的节日也不断跟上,情人节、元宵节、妇女节……

说到底,还不是要买买买?

淘宝上的店铺又多又杂乱,一旦买错了,面临的就是“女”朋友的“果真直男审美”的diss,或者人财两空的局面

接下去,来看看用机器学习技术如何甄别优质店铺,让你买到就是赚到!

分三步走:

第一步:找到阿里给出的店铺评价历史信息,分为训练集数据和测试集数据;

第二步:利用训练集数据构建机器学习模型;

第三步:使用测试集数据进行准确率判断并优化。

如此便可以建立一个相对科学的靠谱店铺预测模型。

首先,从阿里云天池开一份包含2000家店铺的评分,等级,评论等信息和数年交易记录的数据:

通过这份数据,我们可以构建一套模型,根据店铺的访问、购买信息等数据,来评测该店铺是否为优质店铺。

一部分数据将用来作为训练集,另一部分数据会用来测试已经训练好模型的精确度。但训练的时候并不是精确度越高越好,过拟合和欠拟合都不是好事情。

欠拟合指模型没有很好地捕捉到数据特征,不能够很好地拟合数据:

过拟合通俗一点地说就是模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确的分类,模型泛化能力太差:

随后,完成了清理整合等预处理工作,得到了一份适合建模使用的样本数据:

*完整代码可以在文末获取。考虑这份数据比较粗糙,我们仅使用0分店铺和4分店铺的数据

导入所需的包、填充数据空值,再拆分提取训练集和测试集数据,并将数据进行标准化,就为后续的模型构建做足了准备。

模型的构建及其效果——以决策树为例

我在常用模型中随意选了决策树模型来演示:

代码语言:javascript
复制
#决策树
max_depth_l = [2,3,4,5,6,7,8,9,10]
for max_depth in max_depth_l:
    dt_model = DecisionTreeClassifier(max_depth=max_depth)
    dt_model.fit(x_train_scaled,y_train)
    train_accuracy = dt_model.score(x_train_scaled,y_train)
    test_accuracy = dt_model.score(x_test_scaled,y_test)
    print('max depth',max_depth)
    print('训练集上的准确率:{:2f}%'.format(train_accuracy*100))
    print('测试集上的准确率:{:2f}%'.format(test_accuracy*100))

决策树,需要调节的主要参数是树的深度。深度越浅,容易造成欠拟合;而深度越深,则会过拟合。

其实使用这个模型很简单,我们建立一个列表,罗列不同的深度,建立模型进行尝试,最终选择在测试集上表现最好的模型就可以了。

当深度增加的时候,模型在训练集上的准确率越来越高,而在测试集上的准确率在降低,这个就是过拟合的表现。在深度为5的时候,测试集的准确率为最高的73.39%,所以这组模型为决策树的最佳模型。

模型的效果——用混淆矩阵查看

绘制一个混淆矩阵查看模型效果:

代码语言:javascript
复制
dt_model = DecisionTreeClassifier(max_depth=5)
dt_model.fit(x_train_scaled,y_train)
predictions = dt_model.predict(x_test_scaled)
test_accuracy = dt_model.score(x_test_scaled,y_test)
print(classification_report(y_test,predictions))
print('决策树的准确率:{:2f}%'.format(test_accuracy*100))

cnf_matrix = confusion_matrix(y_test,predictions)
plot_confusion_matrix(cnf_matrix, classes=[0,1],
                      title='Confusion matrix')

*横坐标是预测值,即“模型认为该店铺为差评/优质店铺”,纵坐标代表真实值,即“该店铺为差评/优质店铺”。0为差评,1为优质

模型在预测优质店铺上容易误杀,把优质店铺预测为差评店铺,错误达到43个,不过店铺茫茫多,错过这个还有下个,本着宁可错杀,不能放过的原则,模型还是可以的。

更强大的模型:随机森林

如果想要有更好的方案,那么我们就用许多模型组合在一起,强强联手,称之为集成模型。

这里我用随机森林,主要原理是构建多棵决策树,每棵决策树都会有一个结果,最后通过投票机制,选出最终结果。

代码语言:javascript
复制
from sklearn.ensemble import RandomForestClassifier
tree_param_grid = {'n_estimators':[10,20,30,50,80],
                   'min_samples_split':[2,8,10,20,30,50,60,70,80],
                   'min_samples_leaf':[2,5,10,20,30,50],
                   'random_state':[2]
                  }
grid = GridSearchCV(RandomForestClassifier(),param_grid=tree_param_grid,cv=5)
grid.fit(x_train_scaled,y_train)
best_model = grid.best_estimator_
acc1 = best_model.score(x_train_scaled,y_train)
acc2 = best_model.score(x_test_scaled,y_test)
print('随机森林模型训练准确率:{:2f}%'.format(acc1*100))
print('随机森林模型预测准确率:{:2f}%'.format(acc2*100))
print('随机森林模型最佳参数:{}'.format(grid.best_params_))

结果如下:

代码语言:javascript
复制
随机森林模型训练准确率:76.559140%
随机森林模型预测准确率:78.111588%
随机森林模型最佳参数:{'min_samples_leaf': 2, 'min_samples_split': 70, 'n_estimators': 50, 'random_state': 2}

新模型在预测集上达到了78.11%的准确率,对比前面有了较大提升~如果我们有更优质的数据、尝试更多的集成模型,还能再有进步。

接下去只要把目标店铺代入模型就能知道店铺到底好不好了,你的压岁钱保不保得住我就不知道了 ,但一定会得到最优利用。

如果对这方面感兴趣,送出相关的免费直播课程,内容有干货但是也不会太深奥,同时附赠免费答疑福利:

Part.1

免费直播课

直播主题:深度学习算法从理论到实践的应聘指南

<2月19日 周二 20:00>

直播大纲: 1.计算机视觉深度学习算法体系 2.教你选择适合的学习路线 3.技术细节讲解,以fasterrcnn为例 4.AI计算机视觉岗位招聘攻略

Part.2

《7天入门计算机视觉》免费课程

Day1 安装python环境 Day2 Python语言入门(一) Day3 Python语言入门(一) Day4 OpenCV图像处理(一) Day5 OpenCV图像处理(二) Day7 神经网络算法 Day8 猫狗分类演练

Part.3

文中数据和代码

更有数种不同模型对比代码

Part.4

7.6 G不可错过的AI入行秘籍

1. 6G Python入门资料:AI学习的必备帮手

2. 120+篇最新最全的AI报告:遍布政府、证券、咨询、IT等相关行业

3. 6门行业权威亲自授课的在线免费课程:160+篇涉及深度学习、计算机视觉各方向的论文(中英兼备,既泛且精

4. 20+部从小白到高手都能获益的人工智能PDF资料:含人工智能和机器学习领域国际权威学者吴恩达手稿

Part.5

领取方式

扫码加入QQ群

群号:929246020

席位有限,先到先得~

“养码场”

现有技术人80000+

覆盖JAVA/PHP/IOS/测试等领域

80%级别在P6及以上,含P9技术大咖30人

技术总监CTO 500余人

点击【阅读原文】,领取福利!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 养码场 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档