ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据挖掘-电影推荐系统

2021-05-17 22:03:02  阅读:267  来源: 互联网

标签:train 推荐 电影 test score 数据挖掘 import model data


一。首先导入数据集

import numpy as np
import pandas as pd

data_model = pd.read_csv("E://duanyin_model.csv")
data_model=data_model.drop(['Unnamed: 0','profit'], axis=1)
data_model.head()

该数据集是我自己处理过的。

二。通过info来查看数据

data_model.info()

三。对数据中的电影类型kind进行处理,进行分割并转换list

data_model['kind'][1].split(',') 

stype = set()
for i in data_model['kind'].str.split(','):
    stype=set().union(i,stype) 
stype

stype = list(stype)
stype

四。对kind,one-hot编码,创建一个新的i列,kind列包含字符i时,赋值为1

for i in stype:
    data_model[i] = 0 # 创建名为i的列
    data_model[i][data_model.kind.str.contains(i)]  = 1 #kind列包含字符i时,赋值为1
data_model.head()

五。对数据进行归一化,并且对数据集中的buddget和boxoffice进行处理分类

data_1=data_model[['time','score','outTime']]/data_model[['time','score','outTime']].max()#数据归一化

data_4=data_model['Budget']
data_4.head()

b=pd.DataFrame(data_model['Budget'].describe())
for i,j in zip(b.index,b.values):
    print(i,j[0])

a=data_model['Budget']
bu=[]
for i in a:
    if i>87875000.0:
        bu.append(0)
    else:
        if i>40000000.0:
            bu.append(1)
        else:
             bu.append(2)

data_4 = pd.DataFrame(bu)
data =pd.concat([data_3,data_4],1)

将预算大于75%的赋值为0,大于50%的赋值为1,其余的赋值为2

同理对Boxoffice一样的处理

六。构建模型

这里我用到了人工神经网络和决策树还有分类模型

from sklearn.model_selection import train_test_split #划分训练测试集
from sklearn.metrics import accuracy_score
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.3)
#人工神经网络
from sklearn.neural_network import MLPClassifier as CNN

dianyin_model = CNN((100,100,100)).fit(x_train,y_train)
print(dianyin_model.score(x_train,y_train))#模型在训练集的准确度
y_pred = dianyin_model.predict(x_test)
print(accuracy_score(y_pred,y_test))#模型在测试集的准确度

 

#决策树
from sklearn.tree import DecisionTreeClassifier as DTC#引入分类算法
lg_model =  DTC(criterion='entropy').fit(x_train,y_train)#实例化,拟合

score = lg_model.score(x_test,y_test)
score

 

#分类模型的roc曲线
from sklearn.linear_model import LogisticRegression as LGR
from sklearn.neural_network import MLPClassifier as MLP
from sklearn.tree import DecisionTreeClassifier as DTC

from sklearn.metrics import roc_auc_score
from sklearn.metrics import roc_curve#roc曲线

import matplotlib.pyplot as plt

Models = [LGR,MLP,DTC]
for Model in Models:
    model  = Model()
    model.fit(x_train,y_train)
    y_pred = model.predict(x_test)
    y_score = model.predict_proba(x_test)
    print('score',model.score(x_test,y_test))
    
    fpr,tpr,thr = roc_curve(y_test,y_score[:,-1])
    plt.plot(fpr,tpr)
    plt.show()
    print('auc',roc_auc_score(y_test,y_score[:,-1]))

通过模型的评分来看,逻辑回归模型较好。

标签:train,推荐,电影,test,score,数据挖掘,import,model,data
来源: https://blog.csdn.net/huainteresting_/article/details/116950086

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有