python新浪微博数据分析_使用python抓取新浪微博数据 大数据分析师证书

原标题:使用python抓取新浪微博数据 大数据分析师证书

点击进入数据分析学习官网

通过数据分析辨别可疑和虚假流量的方法我们在之前的文章中曾经介绍过。本篇文章我们对这个方法进行自动化,介绍如何通过随机森林分类预测模型对流量进行分类,从中发现可疑流量的影子。需要特殊说明的是本篇文章中的数据并非真实数据,我们只使用三个简单用户行为特征指标对方法和过程进行说明。真实世界中情况会更加复杂。

随机森林是一个包含多颗决策树的分类预测算法。通过随机抽样的方式从数据表中生成多张抽样的数据表,对每个抽样的数据表生成一棵决策树。将多颗决策树组成一个随机森林。当有一条新的数据产生时,让森林里的每一颗决策树分别进行判断,以投票最多的结果作为最终的判断结果。下面我们来介绍如何在python中使用机器学习库sklearn建立随机森林模型并进行分类和预测。

准备工作

首先导入需要使用的库文件,依次为数值计算库numpy,科学计算库pandas,交叉验证库cross_validation和随机森林分类算法库RandomForestClassifier。

#导入数值计算库

import numpy as np

#导入科学计算库

import pandas as pd

#导入交叉验证库

from sklearn import cross_validation

#导入随机森林算法库

from sklearn.ensemble import RandomForestClassifier

读取并查看数据表

读取流量数据表,其中包括流量的新访比例,跳出率和浏览深度三个关键指标。其中一部分已经被证明为可疑流量并进行了标注,另一部分则为正常流量。我们将使用这些数据对随机森林分类模型进行训练和测试。

#读取流量数据并创建名为traffic的数据表

traffic=pd.DataFrame(pd.read_excel('traffic_type.xlsx'))

#查看数据表内容

traffic.head()

#查看数据表列标题

traffic.columns

Index(['New_Sessions', 'Bounce_Rate', 'Pages_Session', 'Type'], dtype='object')

设置模型特征X及目标Y

将流量数据表中的新访占比,跳出率和浏览深度数据设置为特征值X。流量的类别是我们要进行分类预测的结果,因此将流量类别设置为目标值Y。

#设置特征值X

X = np.array(traffic[['New_Sessions','Bounce_Rate','Pages_Session']])

#设置目标值Y

Y = np.array(traffic['Type'])

#查看数据集的维度

X.shape,Y.shape

((100, 3), (100,))

将数据分割为训练集和测试集

采用随机的方式将数据表分割为训练集和测试集,其中60%的训练集数据用来训练模型,40%的测试集数据用来检验模型准确率。

X_train,X_test,y_train,y_test = cross_validation.train_test_split(X, Y, test_size=0.4, random_state=0)

60%的数据为训练数据集,用来对随机森林分类器进行训练。

#查看训练集的维度

X_train.shape, y_train.shape

((60, 3), (60,))

40%的数据为测试数据集,用来对随机森林模型的分类效果进行测试。

#查看测试集的维度

X_test.shape, y_test.shape

((40, 3), (40,))

建立随机森林模型并进行训练

设置好数据集后,开始建立随机森林模型,并使用测试数据集对模型进行训练,并使用测试数据集对模型的训练结果进行评估。

#建立模型

clf = RandomForestClassifier()

#对模型进行训练

clf = clf.fit(X_train, y_train)

#对模型进行测试

clf.score(X_test, y_test)

0.875

模型准确率为87.5%

检验并进行分类预测

我们可以使用随机森林模型对数据进行分类和预测,首先查看下模型的分类标签,这将帮助我们更好的理解后面的分类预测结果。使用clf.classes_获得两个分类标签的名称,第一个类别为doubt,第二个类别为normal。

clf.classes_

array(['doubt', 'normal'], dtype=object)

首先使用测试集数据对模型的分类结果做个检验,测试集数据是历史数据,因此我们已经知道了流量所属的类别结果。提取测试集数据的第一个流量类别,结果为normal。

y_test[0]

'normal'

将测试集数据代入到模型中进行拟合,获得的分类结果为normal,与正确的结果一致。

clf.predict(X_test[0])

array(['normal'], dtype=object)

进一步查看随机森林模型对流量数据分类的概率,第一个流量20%的概率为doubt类,80%的概率为normal类,因此将这条流量数据归为normal类别。

clf.predict_proba(X_test[0])

array([[ 0.2, 0.8]])

换一组数据进行预测,新访比例80%,跳出率60%,浏览深度1.3。通过模型预测这条流量数据为doubt类别的可疑流量。

clf.predict([[0.8,0.6,1.3]])

array(['doubt'], dtype=object)

这条流量数据被预测为doubt的概率为80%,预测为normal的概率为20%。因此被归为doubt分类。

clf.predict_proba([[0.8,0.6,1.3]])

array([[ 0.8, 0.2]])

首发:http://www.xmcpda.com

数据分析领军品牌云科数海(中云网胜),是中数委在福建省唯一的数据分析师培训授权中心,专注于大数据分析项目构建、企业数据分析技术内训、个人数据分析技术培训,致力于打造福建省最优秀的数据分析企业。返回搜狐,查看更多

责任编辑:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值