购物数据意淫分析(2)

在淘宝的大数据比赛中,我又一次提高了自己的思维方式,

前前后后代码写了六个版本,但是最好的结果竟然是我第2次的代码,这个让我很是诧异,

但是也说明了一个问题,当你的对于一面语言比较熟悉时候,你所缺少的就是其他方面的知识了,

  1. 首先是我的数学知识,在分析用户行为时,我们知道浏览次数和购买次数是由一定规律的,这个方面找了数学系的同学问了一些,得到的结论是:你可以进行线性拟合,这是最简单的,但是得到的结果不一定真实,于是推荐我使用高斯分布来做,但是由于自己单枪匹马,所以选了比较简单的线性拟合
  2. 心理学,我们可以从数据中发现,那些经常在淘宝买东西的如果是时间间隔一段就买了同一种商品的,那说明这个人的属于死宅之类的,因为这些东西一般我们旁边就有,还有,就是浏览次数和购买之间的关系,用数学来解答,心理学来分析;多天浏览和购买的关系,

先意淫这些吧,下来上三个版本的代码:

第一版本,简单猜测浏览十五次购买一次:

import time

u_id=[]
b_id=[]
t_id=[]
b_time=[]
t_num0=0
t_num1=0
t_num2=0
t_num3=0
a=True
i=0
j=0
fileread=open(‘t_alibaba_data.csv‘,‘r‘)
while True:
    fileline=fileread.readline()
  #  print  type(fileline)
  #  print fileline,
  #  print  i
    filedian =fileline.find(r‘,‘)
    filedian1=fileline.rfind(r‘,‘)

    b_id1=fileline[filedian+1:filedian1-2]
    b_id.append(b_id1)

    u_id1=fileline[:filedian]
    u_id.append(u_id1)

    t_id1=fileline[filedian1-1:filedian1]
    t_id.append(t_id1)

    b_time1=fileline[filedian1:-2]
    b_time.append(b_time1)

    if not fileline:
        break
output=open(‘taobao.txt‘,‘a‘)
#print u_id
#print b_id
#print t_id
print b_time

ff=0
while True:
    if u_id[i]==u_id[i+1]:

        if ff==0:

            output.write(u_id[i])
            output.write(‘   ‘)
        ff=ff+1
        if b_id[i]==b_id[i+1]:

            if int(t_id[i])==0:
                    t_num0=t_num0+1
            elif int(t_id[i])==1:
                t_num1=t_num1+1
            elif int(t_id[i])==2:
                t_num2=t_num2+1
            else:
                t_num3=t_num3+1
        else:
            j=j+1
            print  u_id[i],b_id[i],t_num0,t_num1,t_num2,t_num3
            if t_num0>=15 or t_num1>=1 :
                output.write(b_id[i])
                output.write(",")
#            else:
#                output.write(b_id[i])
#                output.write(‘,‘)
            t_num0=0
            t_num1=0
            t_num2=0
            t_num3=0

#    else:
    else:
        output.write(‘\n‘)
        ff=0
#        print  u_id[i],b_id[i],t_num0,t_num1,t_num2,t_num3
    i=i+1
    

第二版本,观察时间和购买行为

#coding:utf-8
import time

u_id=[]
b_id=[]
t_id=[]
b_time=[]
t_num0=0
t_num1=0
t_num2=0
t_num3=0
b_num1=0
b_time4=0
a=True
i=0
j=0
fileread=open(‘t_alibaba_data.csv‘,‘r‘)
while True:
    fileline=fileread.readline()
  #  print  type(fileline)
  #  print fileline,
  #  print  i
    filedian =fileline.find(r‘,‘)
    filedian1=fileline.rfind(r‘,‘)

    b_id1=fileline[filedian+1:filedian1-2]
    b_id.append(b_id1)

    u_id1=fileline[:filedian]
    u_id.append(u_id1)

    t_id1=fileline[filedian1-1:filedian1]
    t_id.append(t_id1)

    b_time1=fileline[filedian1:-2]
    b_time.append(b_time1)

    if not fileline:
        break
output=open(‘taobao.txt‘,‘a‘)
#print u_id
#print b_id
#print t_id
#print b_time

ff=0
while True:
    if u_id[i]==u_id[i+1]:

        if ff==0:

            output.write(u_id[i])
            output.write(‘   ‘)
        ff=ff+1
        if b_id[i]==b_id[i+1]:

            if int(t_id[i])==0:
                    t_num0=t_num0+1
            elif int(t_id[i])==1:
                t_num1=t_num1+1
            elif int(t_id[i])==2:
                t_num2=t_num2+1
            elif b_time[i]!=b_time[i+1]:
                b_time4=b_time4+1
            else:
                t_num3=t_num3+1
        else:
            j=j+1
            b_num1=b_num1+1
            print  u_id[i],b_id[i],t_num0,t_num1,t_num2,t_num3,b_time4
            if t_num0>=15 and t_num1==0:
                output.write(b_id[i])
                output.write(",")
            if b_time4>=2 and t_num1==0:
                output.write(b_id[i])
                output.write(‘,‘)
            if t_num0>15 and t_num1>=2:
                output.write(b_id[i])
                output.write(‘,‘)
            if t_num2>=1 and t_num1==0:
                output.write(b_id[i])
                output.write(‘,‘)
            if len(b_id)<=3:
                output.write(b_id[i])
                output.write(‘,‘) 

#            if b_num1<=3:
#                output.write(b_id[i])
#                output.write(‘,‘)
#
#
            t_num0=0
            t_num1=0
            t_num2=0
            t_num3=0
            b_time4=0

#    else:
    else:
        output.write(‘\n‘)
        b_num1=b_num1+1
#        print  u_id[i],b_id[i],t_num0,t_num1,t_num2,t_num3
    i=i+1
    b_num1=0

第三版本,使用数学分析

#coding:utf-8
import time
import numpy as np
from scipy import optimize
from math import sqrt

u_id=[]
b_id=[]
t_id=[]
b_time=[]
t_num0=0        #类型
t_num1=0
t_num2=0
t_num3=0
b_num1=0        #品牌个数
b_time4=0       #时间
a=True
i=0
j=0
fileread=open(‘t_alibaba_data.csv‘,‘r‘)
while True:
    fileline=fileread.readline()
  #  print  type(fileline)
  #  print fileline,
  #  print  i
    filedian =fileline.find(r‘,‘)
    filedian1=fileline.rfind(r‘,‘)

    b_id1=fileline[filedian+1:filedian1-2]
    b_id.append(b_id1)

    u_id1=fileline[:filedian]
    u_id.append(u_id1)

    t_id1=fileline[filedian1-1:filedian1]
    t_id.append(t_id1)

    b_time1=fileline[filedian1:-2]
    b_time.append(b_time1)

    if not fileline:
        break
output=open(‘taobao.txt‘,‘a‘)
#print u_id
#print b_id
#print t_id
#print b_time
t_num00=[]
t_num11=[]
t_num22=[]
t_num33=[]
t_time44=[]
cc=0
ff=0
pp=0
while True:
    if u_id[i]==u_id[i+1]:

        if ff==0:

            output.write(u_id[i])
            output.write(‘   ‘)
        ff=ff+1
        if b_id[i]==b_id[i+1]:
#            cc=cc+1
            if int(t_id[i])==0:
                    t_num0=t_num0+1
            elif int(t_id[i])==1:
                t_num1=t_num1+1
            elif int(t_id[i])==2:
                t_num2=t_num2+1
            else:
                t_num3=t_num3+1
            if b_time[i]!=b_time[i+1]:
               # print b_time4
                b_time4=b_time4+1
        else:
            j=j+1
        #    b_num1=b_num1+1
#            print  u_id[i],b_id[i],t_num0,t_num1,t_num2,t_num3,b_time4
#            if b_time4>=3:
#                print b_time4
#                pp=pp+1
#       数据拟合分析部分

            t_num00.append(t_num0)
            t_num11.append(t_num1)
            t_num22.append(t_num2)
            t_num33.append(t_num3)
            t_time44.append(b_time4)

#            if t_num0>=10 :
#                output.write(b_id[i])           #看了15次的没有买的
#                output.write(",")
#            elif b_time4>=3 :
#                output.write(b_id[i])           #多天看的,没有买
#                output.write(‘,‘)
#           # if t_num0>15 and t_num1>=2:
#           #     output.write(b_id[i])
#           #     output.write(‘,‘)
#            elif t_num2>=1 :
#                output.write(b_id[i])           #收藏出但是没有买
#                output.write(‘,‘)
#            elif t_num3>=1 :         #放进购物车但是没有买
#                output.write(b_id[i])
#                output.write(‘,‘)
#          #  if b_time4>=2 and t_num1>=2:
#          #      output.write(b_id[i])
#          #      output.write(‘,‘)
#          #
#            elif t_num1>=1:
#                output.write(b_id[i])           #买过两次
#                output.write(‘,‘)
#                

#            if len(b_id)<=3:
#                output.write(b_id[i])
#                output.write(‘,‘) 

#            if b_num1<=3:
#                output.write(b_id[i])
#                output.write(‘,‘)
#
#
            t_num0=0
            t_num1=0
            t_num2=0
            t_num3=0
            b_time4=0
#    elif b_num1<=3 and ff!=0:
#        print b_id[i]
#        output.write(b_id[i])
#        output.write(‘\n‘)
#        ff=0
##    else:
    elif not u_id[i+1]:
        break
#    else:
#
#        output.write(‘\n‘)
#        ff=0
#        print  u_id[i],b_id[i],t_num0,t_num1,t_num2,t_num3
    i=i+1
    b_num1=0

#分析浏览次数和购买的关系
y=np.array(t_num00)
x=np.array(t_num11)

def residuals(p):
    k,b=p
    return y-(k*x-b)

r=optimize.leastsq(residuals,[1,0])
k,b=r[0]
print "K=",k,"b=",b

#分析收藏和购买的关系
x22=np.array(t_num22)

def residuals(p):
    k,b=p
    return y-(k*x22-b)

r=optimize.leastsq(residuals,[1,0])
k22,b22=r[0]
print "Kt_num22=",k22,"b22=",b22

#分析购物车和购买的关系
x33=np.array(t_num33)

def residuals(p):
    k,b=p
    return y-(k*x33-b)

r=optimize.leastsq(residuals,[1,0])
k33,b33=r[0]
print "kt_num33=",k33,"b33=",b33
#查看天数和购物关系
x44=np.array(t_time44)

def residuals(p):
    k,b=p
    return y-(k*x44-b)

r=optimize.leastsq(residuals,[1,0])
k44,b44=r[0]
print "ktime=",k44,"b44=",b44

print pp
#def sim_pearson()

时间: 2024-08-07 04:32:37

购物数据意淫分析(2)的相关文章

【数据分析 R语言实战】学习笔记 第五章 数据的描述性分析(上)

5.1R内置的分布 分布是描述一个样本数据最核心.最重要的方式.R内嵌了很多常用的统计分布,提供了四类函数:概率密度函数(density),累积分布函数(probability).分位数(quantile)和伪随机数(random).在R中分别用d,p,q,r表示这4个项目,后面接分布的英文名称或缩写. 5.2集中趋势的分析 5.2.1集中趋势的测度 描述统计分布集中趋势的指标主要是平均数.中位数.众数,也称为“平均指标”.这些指标的主要作用包括: 反映总体各单位变量分布的集中趋势和一般水平;

消费大数据公司“重分析-强应用”引领企业大数据营销

近日,消费大数据公司信柏科技树立"大数据-重分析-强应用"理念发布新一代大数据业务平台,以大数据为基础.软硬件结合的方案来辅助企业进行经营决策与精准营销.该大数据业务平台定位于"人群 ."内容"."行业 "与"地域"精准分析与挖掘,覆盖到企业营销中较为关注的用户特征画像.精准人群标定.定向数据采集内容监听 .采集内容的关联分析.行业报告与市场动态.竞品分析.新店开张选址报告.指定地区常驻人群特征分析等业务,致力于成为

单域MPLS vpn数据转发实验分析

MPLS VPN数据详细转发流程示意图: 配置思路: 在自治系统AS100中配置IGP,使得两台PE路由器的lo 0接口路由可达: 两台PE路由器路由可达后,在两台PE路由器之间建立MP-iBGP邻居关系,用来传输VPNV4路由: AS100中所有P路由器和PE路由器运行MPLS,并使用LDP来给非BGP路由分发标签: 在PE路由器和CE路由器之间运行ospf路由协议,使得PE路由器的VRF路由表可以学习到CE路由器的路由: 将PE路由器VRF学习到的路由重分发进BGP,使得对端PE路由器可以通

不再意淫情怀的罗永浩和锤子 要和阿里耍什么花枪

情怀不再是出品人自己的意淫,而是先实现了大家的理想,赚到了钱再慢慢用心的产品. 文/张书乐 10月18日的晚间,锤子在上海举办了新品发布会.讲完了相声之后,罗永浩立马赎回了质押给阿里的股权. 这件事要从6月说起,一直不被看好的锤子,一直在折腾.这不,据数据显示,截至到2016年6月30日,锤子手机资产总额为2.96亿元,所有者权益为20.9万元,净亏损为1.92亿元.锤子手机的总资产缩减至去年的1/3. 也在6月,锤子科技CEO罗永浩将205.38176万股质押给阿里巴巴,其在锤子科技的占股比例

【收集和分析】网站用户行为数据收集和分析方法

为改善网站的可用性, 一般采用可用性工程方法, 其核心是以用户为中心的设计方法论(UCD).综合介绍了目前国内外对于用户行为数据收集和分析方法所进行的研究, 各种方法的特点, 并介绍一些利用相应方法所开发出的工具实例, 使得建设的网站更加符合用户的需要, 以保障用户与网站之间沟通的顺畅. 随着In ternet 的不断发展, 各种各样的网站如雨后春笋般成倍增长, 各个商业网站之间的竞争越来越激烈, 随之而来的是, 网站的建设不可避免的出现了很多问题.从最近一次国外对15 个大型网站进行统计分析表

PySpark处理数据并图表分析

PySpark处理数据并图表分析 PySpark简介 官方对PySpark的释义为:"PySpark is the Python API for Spark". 也就是说pyspark为Spark提供的Python编程接口. Spark使用py4j来实现python与java的互操作,从而实现使用python编写Spark程序.Spark也同样提供了pyspark,一个Spark的python shell,可以以交互式的方式使用Python编写Spark程序. 如: from pysp

Android Content Provider在应用程序之间共享数据的原理分析

本文参考Android应用程序组件Content Provider在应用程序之间共享数据的原理分析http://blog.csdn.net/luoshengyang/article/details/6967204和<Android系统源代码情景分析>,作者罗升阳. 0.总图流程图如下: 总体类图: 1.MainActivity进程向AriticlesProvider进程发送IContentProvider.QUERY_TRANSACTION 如图:第一步 ~/Android/framework

Wireshark数据抓包分析——网络协议篇

Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wireshark提供功能强大的数据抓包功能.使用它,可以以各种方式抓取用户所需要的网络数据包. 但是用户往往无法从数据包中直接获取所需要的数据.这是由于所有的信息在传输过程中,都会被按照各种网络协议进行封装.用户想要从海量的数据抓包中获取的有用的信息,必须了解各种常见的网络协议.为了方便用户对数据包的分析,本书详细介绍了常用的各种网络协议,如ARP.IP

.NET批量大数据插入性能分析及比较

原文:.NET批量大数据插入性能分析及比较 数据插入使用了以下几种方式 1. 逐条数据插入2. 拼接sql语句批量插入3. 拼接sql语句并使用Transaction4. 拼接sql语句并使用SqlTransaction5. 使用DataAdapter6. 使用TransactionScope及SqlBulkCopy7. 使用表值参数 数据库使用SQL Server,脚本如下 create table TestTable(Id int ,Name nvarchar(20)) 程序中生成测试Dat