計算機畢業設計hadoop+spark微博輿情大數據分析 微博爬蟲可視化 微博數據分析 微博采集分析平臺 機器學習(大屏+LSTM情感分析+爬蟲)

電商數據建模

一、分析背景與目的

1.1 背景介紹

電商平臺數據分析是最為典型的一個數據分析賽道,且電商數據分析有著比較成熟的數據分析模型,比如:人貨場模型。此文中我將通過分析國內最大的電商平臺——淘寶的用戶行為,來鞏固數據分析技能以及思維。通過分析用戶行為,以此來實現精準營銷,總結現有問題,獲得業務增長

1.2 數據說明

該數據包含了20230523用戶一天購物行為的所有數據,主要包括人貨場三個維度信息。用戶維度、商品維度、地區維度構成一個用戶下單的行為事實表。

1.3數據分析流程

提出業務問題—確認粒度—數據處理和清洗—構建模型—數據可視化——根據數據可視化分析解決問題

業務問題:

1.如何提高品牌銷售力度?

2.如何刺激地區市場消費潛力?

3.如何刺激用戶消費?

4.如何減少產品成本?

確認粒度:

用戶信息表、訂單表、訂單明細表

商品信息表、品牌信息表、一二三級分類信息表

省份信息表、地區信息表

核心算法代碼分享如下:

import sysimport numpy as np
from torch.utils.data import DataLoader
from torch import nn
import torch.nn.functional as F
import torch
from sklearn.metrics import precision_score,recall_score,accuracy_scoreimport dataloaderclass ALS_MLP (nn.Module):def __init__(self, n_users, n_items, dim):super(ALS_MLP, self).__init__()''':param n_users: 用戶數量:param n_items: 物品數量:param dim: 向量維度'''# 隨機初始化用戶的向量,self.users = nn.Embedding( n_users, dim, max_norm=1 )# 隨機初始化物品的向量self.items = nn.Embedding( n_items, dim, max_norm=1 )#初始化用戶向量的隱層self.u_hidden_layer1 = self.dense_layer(dim, dim // 2)self.u_hidden_layer2 = self.dense_layer(dim//2, dim // 4)#初始化物品向量的隱層self.i_hidden_layer1 = self.dense_layer(dim, dim // 2)self.i_hidden_layer2 = self.dense_layer(dim//2, dim // 4)self.sigmoid = nn.Sigmoid()def dense_layer(self,in_features,out_features):#每一個mlp單元包含一個線性層和激活層,當前代碼中激活層采取Tanh雙曲正切函數。return nn.Sequential(nn.Linear(in_features, out_features),nn.Tanh())def forward(self, u, v, isTrain=True):''':param u: 用戶索引id shape:[batch_size]:param i: 用戶索引id shape:[batch_size]:return: 用戶向量與物品向量的內積 shape:[batch_size]'''u = self.users(u)v = self.items(v)u = self.u_hidden_layer1(u)u = self.u_hidden_layer2(u)v = self.i_hidden_layer1(v)v = self.i_hidden_layer2(v)#訓練時采取dropout來防止過擬合if isTrain:u = F.dropout(u)v = F.dropout(v)uv = torch.sum( u*v, axis = 1)logit = self.sigmoid(uv*3)return logitdef doEva(net, d):d = torch.LongTensor(d)u, i, r = d[:, 0], d[:, 1], d[:, 2]with torch.no_grad():out = net(u,i,False)y_pred = np.array([1 if i >= 0.5 else 0 for i in out])y_true = r.detach().numpy()p = precision_score(y_true, y_pred)r = recall_score(y_true, y_pred)acc = accuracy_score(y_true,y_pred)return p,r,accdef train( epochs = 10, batchSize = 1024, lr = 0.001, dim = 256, eva_per_epochs = 1):''':param epochs: 迭代次數:param batchSize: 一批次的數量:param lr: 學習率:param dim: 用戶物品向量的維度:param eva_per_epochs: 設定每幾次進行一次驗證'''#讀取數據user_set, item_set, train_set, test_set = \dataloader.readRecData(test_ratio = 0.1)#初始化ALS模型net = ALS_MLP(len(user_set), len(item_set), dim)#定義優化器optimizer = torch.optim.AdamW( net.parameters(), lr = lr, weight_decay=0.2)#定義損失函數criterion = torch.nn.BCELoss()#開始迭代for e in range(epochs):all_lose = 0#每一批次地讀取數據for u, i, r in DataLoader(train_set,batch_size = batchSize, shuffle = True):optimizer.zero_grad()r = torch.FloatTensor(r.detach().numpy())result = net(u,i)loss = criterion(result,r)all_lose += lossloss.backward()optimizer.step()print('epoch {}, avg_loss = {:.4f}'.format(e,all_lose/(len(train_set)//batchSize)))#評估模型if e % eva_per_epochs==0:p, r, acc = doEva(net, train_set)print('train: Precision {:.4f} | Recall {:.4f} | accuracy {:.4f}'.format(p, r, acc))p, r, acc = doEva(net, test_set)print('test: Precision {:.4f} | Recall {:.4f} | accuracy {:.4f}'.format(p, r, acc))def als_mlp_predict(userId=1, itemSize=100, count=4, dim=64):# 讀取數據user_set, item_set, train_set, test_set = \dataloader.readRecData( test_ratio=0.1)# 預測一個用戶的所有的評分形成一個元祖train_set = []for i in range(1, itemSize):train_set.append((userId, i, 0))# print(train_set)# print(train_set)# 初始化ALS模型net = ALS_MLP(len(user_set), len(item_set), dim)d = torch.LongTensor(train_set)u, i, r = d[:, 0], d[:, 1], d[:, 2]with torch.no_grad():out = net(u, i)predict = []preds = out.tolist()# print(len(preds))# 找出最大值,通過這種方式可以求出多個for i in range(0, count):m = max(preds)idx = preds.index(m)predict.append(dict(iid=idx, score=m))del preds[idx]# print(predict)return predictdef test(dim = 64):result = als_mlp_predict(1, 2000, 5)print(result)if __name__ == '__main__':# train()# test()param1 = sys.argv[1]# param1 = "1"result = als_mlp_predict(int(param1), 55, 4)list = []# print(result)for r in result:list.append(dict(iid=r['iid'], rate=r['score']))print(list)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14705.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法打卡 Day13(棧與隊列)-滑動窗口最大值 + 前 K 個高頻元素 + 總結

文章目錄 Leetcode 239-滑動窗口最大值題目描述解題思路 Leetcode 347-前 K 個高頻元素題目描述解題思路 棧與隊列總結 Leetcode 239-滑動窗口最大值 題目描述 https://leetcode.cn/problems/sliding-window-maximum/description/ 解題思路 在本題中我們使用自定義的單調隊列…

C語言指針指針和數組筆試題(必看)

前言: 前面介紹了指針的大體內容,如果接下來能夠把這些代碼的含義搞得清清楚楚,那么你就是代碼king! 一維數組: int a[] {1,2,3,4}; printf("%d\n",sizeof(a)); printf("%d\n",sizeof(a0)); pr…

element-ui輸入框和多行文字輸入框字體不一樣解決

element-ui的type"textarea"的字體樣式與其他樣式不同 <el-input type"textarea"></el-input> <el-input ></el-input>設置&#xff1a; .el-textarea__inner::placeholder {font-family: "Helvetica Neue", Helvetic…

linux排查思路

1.賬號安全 who 查看當前登錄用戶&#xff08;tty本地登錄pts遠程登錄&#xff09; w 查看系統信息&#xff0c;想知道某一時刻用戶的行為 uptime 查看登錄多久、多少用戶&#xff0c;負載 1.查看用戶信息文件/etc/passwd root:x:0:0:root:/root:/bin:/b…

刪除MySQL中所有表的外鍵

方法一&#xff1a; 原理 查詢schema中所有外鍵名稱然后拼接生成刪除語句 第一步&#xff1a; SELECT CONCAT(ALTER TABLE ,TABLE_SCHEMA,.,TABLE_NAME, DROP FOREIGN KEY ,CONSTRAINT_NAME, ;) FROM information_schema.TABLE_CONSTRAINTS c WHERE c.TABLE_SCHEMA數據庫名…

Vue 跨域代理設置

Vue CLI允許你通過項目根目錄下的vue.config.js文件來定制devServer的配置。以下是一些常見的配置示例&#xff1a; module.exports {devServer: {// 跨域代理配置&#xff0c;解決開發環境API跨域問題proxy: {//匹配以api路徑請求的URL&#xff0c;轉發請求的服務器地址/api…

課時135:awk實踐_邏輯控制_綜合實踐

1.3.8 綜合實踐 學習目標 這一節&#xff0c;我們從 網絡實踐、文件實踐、小結 三個方面來學習 網絡實踐 簡介 所謂的網絡實踐&#xff0c;主要是借助于awk的數組功能&#xff0c;進行站點的信息統計操作。準備網絡環境 安裝軟件 yum install nignx -y重啟nginx [rootloca…

Linux修煉之路之自動化構建工具,進度條,gdb調試器

目錄 一&#xff1a;自動化構建工具make/makefile 生成內容&#xff1a; 清理內容&#xff1a; 對于多過程的&#xff1a; 對于多次make&#xff1a; 特殊符號&#xff1a; 二&#xff1a;小程序之進度條 三&#xff1a;git的簡單介紹 四&#xff1a;Linux調試器gdb 接…

fpga 提高有什么進階書推薦?

到FPGA中后期的時候就要開始接觸&#xff0c;如&#xff1a;高速接口、光纖數字信號處理等項目實踐了&#xff0c;那么我們可以讀一些書進行提升&#xff0c;大家可以收藏下。 高速接口項目《嵌入式高速串行總線技術:基于FPGA實現與應用》作者&#xff1a;張鋒 FPGA提升書籍推…

Go團隊:Go是什么

2024年的Google I/O大會[1]如期而至。 這屆大會的核心主旨毫無疑問是堅定不移的以AI為中心&#xff1a;Google先是發布了上下文長度將達到驚人的200萬token的Gemini 1.5 Pro[2]&#xff0c;然后面對OpenAI GPT-4o的挑釁&#xff0c;谷歌在大會上直接甩出大殺器Project Astra[3]…

第七節 ConfigurationClassParser 源碼分析

tips&#xff1a; ConfigurationClassParser 是 Springframework 中的重要類。 本章主要是源碼理解&#xff0c;有難度和深度&#xff0c;也枯燥乏味&#xff0c;可以根據實際情況選擇閱讀。 位置&#xff1a;org.springframework.context.annotation.ConfigurationClassPars…

[LLM-Agents]淺析Agent工具使用框架:MM-ReAct

上文LLM-Agents]詳解Agent中工具使用Workflow提到MM-ReAct框架&#xff0c;通過結合ChatGPT 與視覺專家模型來解決復雜的視覺理解任務的框架。通過設計文本提示&#xff08;prompt design&#xff09;&#xff0c;使得語言模型能夠接受、關聯和處理多模態信息&#xff0c;如圖像…

winform在一個類中調用窗體的控件和方法的兩個方式

第一: 在類中創建窗體對象的方式&#xff0c;通過對象調用控件或方法 eg: Form1 form1 new Form1(); form1.Button; //調用控件 form1.Method(); //調用方法 要注意&#xff0c;對應控件的Modifiers屬性要設置成public . 第二: 在窗體Form類下定義靜態變量(例如:form1)&…

Multi-Attention Transformer for Naturalistic Driving Action Recognition

標題&#xff1a;用于自然駕駛行為識別的多注意力Transformer 源文鏈接&#xff1a;https://openaccess.thecvf.com/content/CVPR2023W/AICity/papers/Dong_Multi-Attention_Transformer_for_Naturalistic_Driving_Action_Recognition_CVPRW_2023_paper.pdfhttps://openaccess…

linux創建私有docker倉庫以及推拉

創建私有倉庫&#xff1a; 1.下載 registry鏡像。 2.執行 registry 鏡像&#xff08;#為注釋內容&#xff0c;\為換行&#xff09;&#xff1a; docker run -d \# --restartalways每次都是開機自動啟動--restartalways \# --name registry 表示容器名--name registry \# 表示…

java讀取shp文件,獲取點位

Testvoid contextLoads() {System.out.println(System.currentTimeMillis());//1716516228057 1716516228798String zipFilePath "C:\\code\\risk\\risk_management_backend\\edatope-app\\src\\main\\resources\\新中心范圍SHP導入模板.zip";String destDir &quo…

【Muduo】TcpServer類

TcpServer統領之前所有的類&#xff0c;是用戶直接使用的類。它通過ThreadPool管理所有的loopthread&#xff0c;保存所有的TcpConnection&#xff0c;保存用戶提供的各種回調函數并向TcpConnection的Channel中注冊回調。它負責監聽指定的端口&#xff0c;并接受來自客戶端的連…

ZeRO-3、模型并行、流水線并行適用情況

ZeRO-3 適用場景&#xff1a;參數量大但計算量相對均衡的情況。 主要特點&#xff1a; 參數分片&#xff1a;將模型參數、優化器狀態和梯度在多個 GPU 上進行分片。顯存優化&#xff1a;顯著減少每個 GPU 上的顯存占用&#xff0c;使得可以在較小的 GPU 上訓練更大的模型。 …

思科模擬器--06.單臂路由升級版--多端路由互連實驗--24.5.20

實驗圖紙如下: 第0步: 先放置六臺個人電腦,一臺交換機和一臺2911路由器(千兆路由器(G0開頭的)) 接著,用直通線將 PC0的F0,PC1的F0分別和交換機的F0/0, F0/1連接 交換機的F0/3和路由器的G0/0連接 PC2的F0,PC3的F0分別和交換機的F0/4, F0/5連接 交換機的F0/6和路由器的G0/1…

電腦連接愛快iKuai軟路由之后,網卡沒有正常獲取到IP,無法訪問愛快路由管理頁?

前言 上一次咱們說到在愛快控制臺上設置/辨認lan口&#xff0c;設置完成之后&#xff0c;其他的一些設置就需要在愛快iKuai軟路由的管理頁面上設置。 有些小伙伴會發現&#xff0c;當電腦連接上愛快軟路由的lan口之后&#xff0c;電腦并沒有正常獲取到ip&#xff0c;導致無法訪…