【数据分析】IMDB data from 2006 to 2016

数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data

数据列名
在这里插入图片描述

1.电影时长分布

import pandas as pd
from matplotlib import pyplot as plt

file_path = './IMDB-Movie-Data.csv'

df = pd.read_csv(file_path)

time_data = df['Runtime (Minutes)'].values
max_time = time_data.max()
min_time = time_data.min()
group_time = (max_time - min_time) // 5

# 可视化
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(15, 8))
plt.hist(time_data, group_time)
plt.xticks(range(min_time, max_time + 5, 5))
plt.xlabel('电影时长')
plt.ylabel('电影数量')
plt.show()

在这里插入图片描述

2.电影评分分布

range步长不能为浮点数

import pandas as pd
from matplotlib import pyplot as plt

file_path = './IMDB-Movie-Data.csv'
df = pd.read_csv(file_path)

rating_data = df['Rating'].values
max_rating = rating_data.max()
min_rating = rating_data.min()
group = (max_rating - min_rating) // 0.5

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(15, 8))
plt.hist(rating_data, int(group))

_x = [min_rating]
i = min_rating
while i < max_rating + 0.5:
    i += 0.5
    _x.append(i)

plt.xticks(_x)
plt.xlabel('评分')
plt.ylabel('电影数量')
plt.show()

在这里插入图片描述

3.电影体裁

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

file_path = './IMDB-Movie-Data.csv'
df = pd.read_csv(file_path)

temp_list = df['Genre'].str.split(',').tolist()
genre_list = list(set(i for j in temp_list for i in j))

zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(genre_list))),
                        columns=genre_list)
# 统计每个电影对应的标签
for i in range(df.shape[0]):
    zeros_df.loc[i, temp_list[i]] = 1

# 每个分类电影的数量
genre_count = zeros_df.sum()
_x = genre_count.index
_y = genre_count.values

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(15, 8))
rects = plt.bar(range(len(_x)), _y)
plt.xticks(range(len(_x)), _x)
plt.xlabel('电影类型')
plt.ylabel('电影数量')
for rect in rects:
    height = rect.get_height()
    plt.text(rect.get_x() + rect.get_width() / 2, height + 2, str(height), ha='center')
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是使用TensorFlow框架搭建GRU模型实现对IMDB数据集的分析的步骤: 1. 导入所需的库和数据集 ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras.layers import Dense, GRU, Embedding from tensorflow.keras.datasets import imdb # 加载IMDB数据集 vocab_size = 10000 # 词汇表大小 (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=vocab_size) ``` 2. 对数据进行预处理 ```python maxlen = 500 # 句子最大长度 # 将句子进行填充或截断,使其长度相同 train_data = keras.preprocessing.sequence.pad_sequences(train_data, maxlen=maxlen) test_data = keras.preprocessing.sequence.pad_sequences(test_data, maxlen=maxlen) ``` 3. 构建GRU模型并编译 ```python embedding_dim = 32 # 词向量维度 gru_units = 64 # GRU单元数 model = keras.Sequential([ Embedding(vocab_size, embedding_dim, input_length=maxlen), GRU(gru_units), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) ``` 4. 训练模型 ```python epochs = 10 # 迭代次数 model.fit(train_data, train_labels, epochs=epochs, batch_size=128, validation_split=0.2) ``` 5. 在测试集上评估模型性能 ```python test_loss, test_acc = model.evaluate(test_data, test_labels, verbose=2) print('Test accuracy:', test_acc) ``` 这样就完成了使用TensorFlow框架搭建GRU模型实现对IMDB数据集的分析。完整代码如下: ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras.layers import Dense, GRU, Embedding from tensorflow.keras.datasets import imdb # 加载IMDB数据集 vocab_size = 10000 # 词汇表大小 (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=vocab_size) maxlen = 500 # 句子最大长度 # 将句子进行填充或截断,使其长度相同 train_data = keras.preprocessing.sequence.pad_sequences(train_data, maxlen=maxlen) test_data = keras.preprocessing.sequence.pad_sequences(test_data, maxlen=maxlen) embedding_dim = 32 # 词向量维度 gru_units = 64 # GRU单元数 model = keras.Sequential([ Embedding(vocab_size, embedding_dim, input_length=maxlen), GRU(gru_units), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) epochs = 10 # 迭代次数 model.fit(train_data, train_labels, epochs=epochs, batch_size=128, validation_split=0.2) test_loss, test_acc = model.evaluate(test_data, test_labels, verbose=2) print('Test accuracy:', test_acc) ``` 注意:上述代码仅供参考,实际使用中需要根据具体情况进行调整和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶柖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值