05-推荐系统案例&作业练习

某大型真爱网,红娘推荐系统开发

1570956826825

杜紫藤女士, 一直在某婚恋网站上寻找自己中意的他, 网站给她推荐了很多男士, 但是她并不是每个都喜欢, 网站统计了这些男士的情况 , 统计数据如下:

每月手机淘宝消费金额(¥) 每周手机游戏类应用使用时间(h) 每周阅读类应用使用时间(h) 是否喜欢
40920 8.33 1.91 非常喜欢
14488 7.15 3.35 有点喜欢
26052 1.44 1.61 不喜欢
75136 13.15 0.86 不喜欢
... ... ... ...

数据处理,把excel转换为csv文件

1
2
3
#导包
import numpy as np
np.set_printoptions(suppress=True)
1
2
#加载数据
data = np.loadtxt('yuehui_test.csv',delimiter=',')
1
2
3
#拆分label和feature
feature = data[:,0:3]
label = data[:,-1:]
1
2
3
4
#设置掩码 过滤数据
maskverylike = data[:, -1] == 0
masklittlelike = data[:, -1] == 1
maskdislike = data[:, -1] == 2
1
2
3
4
5
6
7
8
9
fig = plt.figure(figsize=(8, 8), dpi=80)


plt.scatter(feature[maskverylike][:,0],feature[maskverylike][:,1],c='r',marker='o',label='like')
plt.scatter(feature[masklittlelike][:,0],feature[masklittlelike][:,1],c='b',marker='x',label='normal')
plt.scatter(feature[maskdislike][:,0],feature[maskdislike][:,1],c='y',marker='*',label='dislike')
plt.legend()

plt.show()

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#展示3d可视化图像
from mpl_toolkits.mplot3d import Axes3D
%matplotlib notebook  
# 魔法配置,可以让表格显示在jupyter里面
import matplotlib.pyplot as plt #导包

fig = plt.figure(figsize=(8, 8), dpi=80)
ax = Axes3D(fig)

ax.scatter(feature[maskverylike][:,0],feature[maskverylike][:,1],feature[maskverylike][:,2],c='red',label='like')
ax.scatter(feature[masklittlelike][:,0],feature[masklittlelike][:,1],feature[masklittlelike][:,2],c='green',label='normal')
ax.scatter(feature[maskdislike][:,0],feature[maskdislike][:,1],feature[maskdislike][:,2],c='blue',label='dislike')

plt.show()
1
2
3
4
5
#数据标准化
def standration(input):
    return (input- np.mean(input.T,axis=1)) /(np.std(input.T,axis=1)) 

feature = standration(feature)

作业练习-KNN算法

  • 编写knn算法,实现命令行或者qt界面

输入任意的每月手机淘宝消费金额(¥) 每周手机游戏类应用使用时间(h) 每周阅读类应用使用时间(h) ,判断杜紫藤女生是否喜欢他。

寻找合适的K