三十二、电子商务服务推荐模型构建
生活随笔
收集整理的這篇文章主要介紹了
三十二、电子商务服务推荐模型构建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 模型構建
本案例在數據預預處理的基礎上,針對預處理后的數據進行模型構建,其中涉及的過程主要有:
- 推薦流程
- 相似度計算
- 推薦結果
2. 推薦流程
2.1 推薦系統流程圖
- 在實際應用中,構造推薦系統時,并不是采用單一的推薦方法進行推薦。為了實現較好的推薦結果,一般會結合多種推薦方法將推薦結果進行組合,最后得出推薦結果。
2.2 選擇合適的推薦算法
- 針對此項目的實際情況,分析目標的特點為:長尾網頁豐富,用戶個性化需求強烈以及推薦結果的實時變化,以及結合原始數據的特點:網頁數明顯小于用戶數,因此采用基于物品的協同過濾推薦系統對用戶進行個性化推薦。
2.3 基于物品的協同過濾推薦算法
- 分析用戶與物品的數據集,通過對用戶對項目的瀏覽與否找到相似的物品;
- 然后根據用戶的歷史喜好,推薦相似的項目給目標用戶。
2.4 基于物品的協同過濾算法主要步驟
- 計算物品之間的相似度
- 根據物品的相似度和用戶的歷史行為給用戶生成推薦列表
- 物品相似度的計算:夾腳余弦、Jaccard、相關系數
3 相似度計算
3.1 相似度計算公式
協同過濾算法的實現
# *-* coding:utf-8 *-* import pandas as pd import numpy as np from sqlalchemy import create_engineengine = create_engine('mysql+pymysql://root:222850@127.0.0.1:3306/7law?charset=utf8')sql = pd.read_sql('splited_gzdata', engine, chunksize=10000) c = [i for i in sql] sample = pd.concat(c) sample = pd.DataFrame(sample) data = pd.crosstab(sample[sample['type_l_1'] == 'hunyin']['realIP'], sample[sample['type_l_1'] == 'hunyin']['fullURL']) data_ = data.valuesprint(type(data_))def Jaccard(a, b):return abs(((a + b) // 2).sum()) / abs(np.ceil((a + b) / 2).sum())class Recommender:sim = Nonedef similarity(self, x, distance):y = np.ones((len(x), len(x)))for i in range(len(x)):for j in range(len(x)):y[i, j] = distance(x[i], x[j])return ydef fit(self, x, distance=Jaccard):self.sim = self.similarity(x, distance)def recommend(self, a):return np.dot(self.sim, a)3.2 基于物品的協同過濾推薦過程
4 推薦結果
4.1 實驗方法與步驟
- 安裝PyMySQL、SQLAlchemy,連接本地安裝的數據庫;
- 由于數據庫中含有中文內容,需要設置鏈接的編碼格式
- 通過Pandas連接數據庫后,讀取并進行數據預處理
- 根據預處理的結果產生推薦結果
4.2 代碼實現
5完整代碼
5.1 代碼目錄結構
5.2 完整代碼
# *-* coding:utf-8 *-*def Jaccard(a, b):return abs(((a + b) // 2).sum()) / abs(np.ceil((a + b) / 2).sum())class Recommender:sim = Nonedef similarity(self, x, distance):y = np.ones((len(x), len(x)))for i in range(len(x)):for j in range(len(x)):y[i, j] = distance(x[i], x[j])return ydef fit(self, x, distance=Jaccard):self.sim = self.similarity(x, distance)def recommend(self, a):return np.dot(self.sim, a)r = Recommender() r.fit(data_.T)realid = 500271579 print(type(realid)) uid = list(data.index).index(realid) print(type(uid)) sim_sort = pd.Series(r.recommend(data_[uid])).sort_values(ascending=False) vind = sim_sort[sim_sort >= 1].index ind = sim_sort[(sim_sort > 0) & (sim_sort < 1)].index for i in vind:print(data.columns[i]) for i in ind:print(data.columns[i])c = pd.DataFrame({'訪問頁面': '\n'.join(data.columns[i] for i in vind), '推薦頁面': '\n'.join(data.columns[i] for i in ind[:5])},index=[realid], columns=['訪問頁面', '推薦頁面']).to_excel('123.xls')a.columns[i] for i in vind), '推薦頁面': '\n'.join(data.columns[i] for i in ind[:5])},index=[realid], columns=['訪問頁面', '推薦頁面']).to_excel('123.xls')總結
以上是生活随笔為你收集整理的三十二、电子商务服务推荐模型构建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三十一、电子商务分析与服务推荐
- 下一篇: 三十三、数据仓库的概述