电影分类问题

# 建模实现
# 目标:对电影进行分类预测
# 电影的哪些属性对电影的类别有影响.
# 建模:首先要考虑的就是哪些属性对我们研究的目标是可能有影响的

# 思考:如何对电影进行分类预测

# 假设电影分为两类:动作电影 和 爱情电影
import numpy as np
import pandas as pd 
from pandas import Series,DataFrame

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

data=pd.read_excel("电影预测问题.xlsx",sheet_name=0)
data
电影名称打斗镜头接吻镜头类别
0黄飞鸿102动作
1泰塔尼克号39爱情
2钢铁侠123动作
3后会无期410爱情
4星语心愿18爱情
5通天教主91动作
6加勒比海盗112动作
7天下无贼133动作
8同桌的你27爱情
9天气之子311爱情
10变形金刚132动作
y = data["类别"]
x = data[["打斗镜头","接吻镜头"]]

#特征空间:由样本集的数据的特征展开的空间
x
打斗镜头接吻镜头
0102
139
2123
3410
418
591
6112
7133
827
9311
10132
y.map({"动作":0,"爱情":1})
0     0
1     1
2     0
3     1
4     1
5     0
6     0
7     0
8     1
9     1
10    0
Name: 类别, dtype: int64
plt.scatter(x["打斗镜头"],x["接吻镜头"],c = y.map({"动作":0,"爱情":1}))
<matplotlib.collections.PathCollection at 0x24b4a8699d0>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NnVbAs1f-1661069258396)(output_7_1.png)]

action = x.loc[y == "动作"]
love = x.loc[y == "爱情"]
action

打斗镜头接吻镜头
0102
2123
591
6112
7133
10132
colors = sns.color_palette("husl")
sns.palplot(colors)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2cyidJj7-1661069258398)(output_9_0.png)]

plt.scatter(action["打斗镜头"],action["接吻镜头"],marker ="+",s =180,color = colors[2],label = "action")
plt.scatter(love["打斗镜头"],love["接吻镜头"],marker ="*",s =180,color = colors[4],label = "love")
plt.legend()
plt.xlabel("action",color = colors[2],fontsize = 20)
plt.ylabel("love",color = colors[4],fontsize = 20)
Text(0, 0.5, 'love')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XUQ73v16-1661069258399)(output_10_1.png)]

#在特征空间中,我们发现不同类别的电影的距离会更加接近
# KNN ( K  nearest neighbors)
# 在特征空间中,计算出距离带预测样本点的最近的k个样本,由这k个样本投票产生预测结果

from sklearn.neighbors import KNeighborsClassifier
#n_neighbors 就是k值的个数,分类问题一般会选择奇数而不是偶数

knn = KNeighborsClassifier(n_neighbors=3)
y
0     动作
1     爱情
2     动作
3     爱情
4     爱情
5     动作
6     动作
7     动作
8     爱情
9     爱情
10    动作
Name: 类别, dtype: object
#把标签数值化处理
target = y.map({"动作":0, "爱情":1})
target 
0     0
1     1
2     0
3     1
4     1
5     0
6     0
7     0
8     1
9     1
10    0
Name: 类别, dtype: int64
#算法对象需要被训练,被数据样本集训练,才能具有预测能力
knn.fit(x,target)
KNeighborsClassifier(n_neighbors=3)
#knn算法对象被训练之后,就成为一个模型对象,模型对象可以预测未知的数据的属性

film=np.array([[10,2],[15,5],[6,2]])

knn.predict(film)
array([0, 0, 0], dtype=int64)
plt.scatter(action["打斗镜头"],action["接吻镜头"],marker ="+",s =180,color = colors[2],label = "action")
plt.scatter(love["打斗镜头"],love["接吻镜头"],marker ="*",s =180,color = colors[4],label = "love")
plt.legend()
plt.xlabel("action",color = colors[2],fontsize = 20)
plt.ylabel("love",color = colors[4],fontsize = 20)

plt.scatter(film[:,0],film[:,1],c= knn.predict(film))


<matplotlib.collections.PathCollection at 0x24b4e545a00>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1lDsMftQ-1661069258400)(output_20_1.png)]














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值