python 实现数据降维推荐系统(附Python源码)

主成分分析原理:请点击PCA查看

#!usr/bin/env python
#_*_ coding:utf-8 _*_
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#如果一个旅游网站里面有100000个注册用户,以及100个注册酒店,网站有用户通过本网站点击酒店页面的
#记录数据信息A=Aij   100000*100  Aij表示第i个用户点击j酒店的次数
#Q1:如何评价酒店之间的相似度
#Q2:给定一个酒店,请找出与它最相似的其他几个酒店
#Q3:如何要给酒店分类,有什么办法?
#prepare data set,suppose there are 5 types of hotels  纬度评分
generatorNum=5     #5

hotelNum=100               #100
customerNum=100000  #100000
#10000用户个对五个纬度的侧重点的评分
generators=np.random.randint(5,size=(customerNum,generatorNum))
print(generators)
#酒店在各个纬度为评分
hotelcomp=np.random.random(size=(generatorNum,hotelNum))-0.5# 0.5出现负值
print(hotelcomp)
#.dot矩阵运算,生成顾客对酒店评分
hotelRating=pd.DataFrame(generators.dot(hotelcomp),index=['c%.6d'%i for i in range(customerNum)],columns=['hotel_%.3d'%j for j in range(100)]).astype(int)

#data z-score公式
def normalize(s):
    if s.std()>1e-6:
        #**乘方,就散标准分数z-score,用来算离数据中心的偏差的,https://www.zhihu.com/question/21600637
        return(s-s.mean())*s.std()**(-1)
    else:
        return (s-s.mean())
#如何评价酒店之间的相似度?
#data to z-score
hotelRating_norm=hotelRating.apply(normalize)
print('hotelRating_norm\n{}'.format(hotelRating_norm))
print(type(hotelRating_norm))
#计算协方差
hotelRating_norm_corr=hotelRating_norm.cov()
print('hotelRating_norm_corr\n{}'.format(hotelRating_norm_corr))

#SVD,即奇异值分解
u,s,v=np.linalg.svd(hotelRating_norm_corr)
#碎石图确定分类,测试时是5
print('u\n{}'.format(u))
print(s)
plt.plot(s,'o')
plt.title("singular value spectrum")
plt.show()
#截取SVD纬度
u_short = u[:,:5]
v_short = v[:5,:]
s_short = s[:5]

print('u,s,v,short{}'.format(u_short,v_short,s_short))
#numpy.diag()创建一个对角矩阵
hotelRating_norm_corr_rebuild=pd.DataFrame(u_short.dot(np.diag(s_short).dot(v_short)),
index=hotelRating_norm_corr.index,columns=hotelRating_norm_corr.keys())

#get the top components ,np.power数组的元素分别求n次方
top_component=hotelRating_norm.dot(u_short).dot(np.diag(np.power(s_short,-0.5)))
#classfication of each hotel
hotel_ind = 3
rating = hotelRating_norm.loc[:,'hotel_%.3d'%hotel_ind]
print ("classification of the %dth hotel"%hotel_ind,top_component.T.dot(rating)/customerNum)

结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华章科技

数据分析图的十大错误,你占了几个?

优秀的数据可视化依赖优异的设计,并非仅仅选择正确的图表模板那么简单。全在于以一种更加有助于理解和引导的方式去表达信息,尽可能减轻用户获取信息的成本。当然并非所有...

871
来自专栏程序员叨叨叨

1.2 GPU VS CPU

从上节阐述了GPU的发展历史,那么为什么在CPU之外要发展GPU?GPU 的 vertex programmability 和 fragment program...

1405
来自专栏CDA数据分析师

资源 | 2017年最流行的15个数据科学Python库

Python 近几年在数据科学行业获得了人们的极大青睐,各种资源也层出不穷。数据科学解决方案公司 ActiveWizards 近日根据他们自己的应用开发经验,总...

1885
来自专栏华章科技

2017年最流行的15个数据科学Python库

Python 近几年在数据科学行业获得了人们的极大青睐,各种资源也层出不穷。数据科学解决方案公司 ActiveWizards 近日根据他们自己的应用开发经验,总...

1083
来自专栏深度学习自然语言处理

这么好的视频不看吗?深度学习和线代,微积分

大家盼望的中秋节和十一已经基本都要过去了,大家是不是都玩的挺开心呀?(哎,我可没0.0,基本没离开过实验室,别认为我在学习

2292
来自专栏数据科学与人工智能

【Python环境】数据科学的完整学习路径(Python版)

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

3015
来自专栏数据科学与人工智能

【Python环境】数据科学的完整学习路径—Python版

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

25110
来自专栏数据科学与人工智能

【陆勤践行】数据科学的完整学习路径—Python版

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

1989
来自专栏大数据钻研

大数据入门之路 献给迷茫的你

假如你想成为一个数据科学家,或者已经是数据科学家的你想扩展你的技能,那么你已经来对地方了。本文的目的就是给数据分析方面的Python新手提供一个完整的学习路径。...

3284
来自专栏算法+

这一路走来,冷暖自知 (附算法demos)

最近半年多,除了“一键修图”算法之外我还做了其他什么算法? 1.实时单图HDR算法(颜色矫正,智能曝光) 2.多图曝光融合HDR算法(最高支持八百万像素左右) ...

4288

扫码关注云+社区

领取腾讯云代金券