技术标签: 人工智能 机器学习 深度学习 lstm 人工智能 项目篇 分类
本次对电影评论的情感进行分析,看是否为积极评论还是消极评论。
import os
data_dir = "./Dataset"
print(os.listdir(data_dir))
['test.txt', 'train.txt', 'validation.txt', 'wiki_word2vec_50.bin']
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os
import time
import datetime
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.utils import class_weight as cw
from keras import Sequential
from keras.models import Model
from keras.layers import LSTM,Activation,Dense,Dropout,Input,Embedding,BatchNormalization,Add,concatenate,Flatten
from keras.layers import Conv1D,Conv2D,Convolution1D,MaxPool1D,SeparableConv1D,SpatialDropout1D,GlobalAvgPool1D,GlobalMaxPool1D,GlobalMaxPooling1D
from keras.layers.pooling import _GlobalPooling1D
from keras.layers import MaxPooling2D,GlobalMaxPooling2D,GlobalAveragePooling2D
from keras.optimizers import RMSprop,Adam
from keras.preprocessing.text import Tokenizer
from keras.preprocessing import sequence
from keras.utils import to_categorical
from keras.callbacks import EarlyStopping
from keras.callbacks import ModelCheckpoint
from keras.callbacks import ReduceLROnPlateau
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")
Using TensorFlow backend.
train_df = pd.read_csv("./Dataset/train.txt",encoding="utf-8",header=None,sep="\t",names=["label","text"])
valid_df = pd.read_csv("./Dataset/validation.txt",encoding="utf-8",header=None,sep="\t",names=["label","text"])
test_df = pd.read_csv("./Dataset/test.txt",encoding="utf-8",header=None,sep="\t",names=["label","text"])
train_df
label | text | |
---|---|---|
0 | 1 | 死囚 爱 刽子手 女贼 爱 衙役 我们 爱 你们 难道 还有 别的 选择 没想到 胡军 除了... |
1 | 1 | 其实 我 对 锦衣卫 爱情 很萌 因为 很 言情小说 可惜 女主角 我要 不是 这样 被 乔... |
2 | 1 | 两星 半 小 明星 本色 出演 老 演员 自己 发挥 基本上 王力宏 表演 指导 上 没有 ... |
3 | 1 | 神马 狗血 编剧 神马 垃圾 导演 女 猪脚 无 胸无 人 胃口 一干 男 猪脚 基情 四射... |
4 | 1 | Feb 半顆 星 我們 家 說 這是 一部 從 開始 第十二 分鐘 我 開始 打哈欠 一直 ... |
... | ... | ... |
19993 | 0 | 齐齐 像 一幅 油彩 色彩 绚烂 青春 斑斓 栗子 姐姐 女神 般的 存在 多少 女孩 幻想... |
19994 | 0 | 使 我 想起 多年 前 看 精武 英雄 叙事 按部就班 打斗 倒 精彩 刺激 也 颇 能 安... |
19995 | 0 | 看 之前 豆瓣 上 看到 一个 评论 说 要 找到 自己 看 这部 电影 哭泣 原因 我 想... |
19996 | 0 | 假如 影片 大前提 逻辑 完全 成立 那么 影片 前后 呼应 节奏 情节 主题 简直 完美 ... |
19997 | 0 | 一种 浪漫 能 让 美女 感动 两种 浪漫 却 能 让 美女 不知所措 房子 车子 足以 让... |
19998 rows × 2 columns
# 重新排序
train_df = train_df.sample(frac=1).reset_index(drop=True)
train_df
label | text | |
---|---|---|
0 | 0 | 一直 一来 我 认为 最好 电影 之一 基本上 一段时间 翻出来 看一遍 感动 那么 多 人... |
1 | 0 | 哭 很 感触 鬼 经历 真的 好像 好像 虽然 最后 回到 现实 但是 他们 精神 留下 鬼... |
2 | 0 | 依旧 不用 看前 部 能 看 懂 美式 剧情 特效 制作 相当 精细 阿汤哥 迪拜 一系列 ... |
3 | 0 | 好 电影 不 需要 大 成本 好 电影 只 需要 打动 你 一点 东西 很 喜欢 这样 大家... |
4 | 1 | 王宝强 农民 但 这部 戏里 不是 傻根 为什么 非要 演 跟 年代 傻根 一样 你 见 过... |
... | ... | ... |
19993 | 0 | 不管 别人 怎么样 抨击 我 心里 这是 一部 好 电影 爱 恨 感觉 情到 深处 贝尔 演... |
19994 | 0 | 一部 故事情节 太 完整 主题 太 直接 有点 脱离 新海 诚 以往 风格 中间 部分 感觉... |
19995 | 1 | 其实 世界 上本 没有 火星 男 女人 普遍 认可 并 接受 花心 不负责任 只用 下半身 ... |
19996 | 0 | 成龙 终于 一部 没有 成龙 风格 电影 尔冬升 用 很 重 力 直面 人性 贪婪 生存 面... |
19997 | 1 | 一部 完全 扯淡 B 级片 唯一 让 我 提起 精神 那个 硕大 毛 爷爷 头像 好 我 准... |
19998 rows × 2 columns
valid_df
label | text | |
---|---|---|
0 | 1 | 台湾 导演 执导 林志玲 一人 分饰两角 扮演 一对 双胞胎 姐妹 廖凡 陈坤 杨佑宁 出演... |
1 | 1 | 我 一向 主张 文艺片 商业片 区别对待 需要 用 不同 标准 来 衡量 英雄 无极 我 认... |
2 | 1 | 比较 失望 本 以为 冯是 国内 导演 中 最会 讲故事 一个 结果 中途 因为 吃 太饱 ... |
3 | 1 | 改编 很 失败 把 莎 老公 改成 个 中年 带 儿子 大叔 给 两人 美好 结局 本书 本... |
4 | 1 | 剧情 一直 没看 懂 看到 一半 时 女友 旁 笑 说 演 电影 疯子 看 电影 傻子 老实... |
... | ... | ... |
5624 | 0 | 看不懂 棒球 规则 以及 数据 理论 情况 下 仍然 交杂 激动 播报 连胜 结果 眼眶 皮... |
5625 | 0 | 笑點 還挺 多 但 又 不是 無厘頭 那種 不知 所謂 戲中 四個 故事 還挺 有意思 至於... |
5626 | 0 | 其实 电视剧 比 电影版 不 知道 强 多少倍 起码 王 珞丹 很 适合 杜 拉拉 这个 角... |
5627 | 0 | 这是 一部 给 后 看 片子 对于 整日 大城市 里 工作 奔波 还要 担心 明儿 会 不会... |
5628 | 0 | 出 电影 前 看 那个 MV 万分 期待 觉得 女生 太 帅气 可是 看 又 觉得 好像 没... |
5629 rows × 2 columns
# 重新排序
valid_df = valid_df.sample(frac=1).reset_index(drop=True)
valid_df
label | text | |
---|---|---|
0 | 0 | 真的 很 搞笑 虽然 很多 场景 比较 暴露 比较 赤裸裸 但是 看 时候 完全 没有 觉得... |
1 | 0 | 好看 不是 净 追求 大 场面 古装片 更 多 桌子 底下 暗流 涌动 那根 弦 时时 令人... |
2 | 0 | 值得一看 印度 贫民窟 种种 感情 面对 生活 不同 抉择 随着 一个个 问题 慢慢 展现 ... |
3 | 1 | 分钟 其实 剪辑版 剧情 节奏 这么 莫名其妙 不要 以为 结局 其他人 全灭 两个 男人 ... |
4 | 1 | 片子 看得 我 直起 鸡皮疙瘩 那群 多毛 强壮 未开化 猩猩 竟然 比 人类 还要 聪明 ... |
... | ... | ... |
5624 | 0 | 经典台词 地球 上 热带雨林 目前 正以 每秒钟 相当于 两个 场 速度 消失 造成 每天 ... |
5625 | 0 | 以 小说 改编 不管 十三 钗 这事 真是假 我们 南京城 三十万 同胞 确是 真真实实 牺... |
5626 | 0 | 一切 淡淡的 爱 无奈 滔滔 巨浪 般 对 金鱼 公主 爱恋 之后 宫崎 爷爷 转而 描画 ... |
5627 | 0 | 如果说 四 奶奶 大 奶奶 天生 敌人 那么 柴 九 就是 天生 知己 他们 之间 应该 不... |
5628 | 1 | 天天 里 出现 每个 演员 当 电影 好不好 先不说 做法 让 人 反 感到 作呕 本来 想... |
5629 rows × 2 columns
test_df
label | text | |
---|---|---|
0 | 1 | 如果 我 无聊 时 网上 乱逛 偶尔 看到 这部 电影 我 可能 会 给 它 打 四星 但是... |
1 | 1 | 服装 很漂亮 场景 很大 气 演员 演得 也 不错 特技 效果 也 非常 精彩 魔幻 味 够... |
2 | 1 | 冯小刚 越来越 会 摸 国人 卖 搞 人 还有 很多 傻 跟着 转 个人 认为 完全 个 喜... |
3 | 1 | 该剧 还是 正 老 问题 就是 痕迹 过重 宫廷 剧是 最受 观众 欢迎 所以 人人 来 拍... |
4 | 1 | 戏 不够 误会 凑 戏 不够 人妖 凑 戏 不够 卧底 凑 戏 不够 寻宝 凑 戏 不够 野... |
... | ... | ... |
364 | 0 | 像 多年 前 朋友 說 一樣 法國人 浪漫 總讓 人覺 他們 心裡 綻 滿 花 如果 每天 ... |
365 | 0 | 看 这部 片子 时候 我 一直 想 这种 影片 属于 什么 类型 影片 开始 部分 普通人 ... |
366 | 0 | 阿娇 从 啥子 时候 那么 漂亮 演技 也好 看来 就是 要 赤裸裸 经历 才 真的 体验 ... |
367 | 0 | 没有 华丽 镜头 或者 刻意 营造 小 清新 就是 普普通通 台湾 巷子 简简单单 中学 教... |
368 | 0 | 我 从来不 认为 个人 应当 集体 社会 而 赎罪 你 可以 说 没有 个人 忏悔 没有 集... |
369 rows × 2 columns
# 重新排序
test_df = test_df.sample(frac=1).reset_index(drop=True)
test_df
label | text | |
---|---|---|
0 | 0 | 原来 这部 戏 黑暗 对 观看 者 精神 摧残 逼迫 我们 去 思考 科技 网络 技术 发展... |
1 | 1 | 实在 不 明白 就是 他们 说 非常 感人 电影 任何 情节 上 硬伤 或者 我 认为 硬伤... |
2 | 1 | 残 不忍 睹 看 个 开头 实在 坚持 不了 精虫 吃光 他们 大脑 东京 热 正式 后 新... |
3 | 0 | 未来 房屋 架构 思想 不管 动画 还是 真人 电影 想要 表现 这种 温情 手段 并 不 ... |
4 | 1 | 对 维多利亚 爱情 萌生 过渡 太硬 她 动人 处 究竟 一度 产生 这样 感觉 吸引 基努... |
... | ... | ... |
364 | 0 | 当人 落魄 时候 检验 一个 人 真正 时刻 兄弟 情义 男人 与 男人 之间 对决 能屈能... |
365 | 1 | 刘导 拍 这个 您 就是 晚节不保 就算 看看 后面 那些 乱七八糟 差一 杠子 人 我 恶... |
366 | 1 | 祢 丫 昰 就算 讓 我 淚 撒 奧斯卡 祢 也 昰 部爛片 前半部 男人 拯救 苦海 小三... |
367 | 0 | 很 经典 恐怖片 结局 很 出乎意料 我 看 好几遍 发现 不少 感人 地方 也 去 思考 ... |
368 | 0 | 我 唯一 愿意 给 满分 片子 诺兰 片子 虽然 很 主观 但是 我 喜欢 他 叙事 喜欢 ... |
369 rows × 2 columns
print(train_df.shape,valid_df.shape,test_df.shape)
(19998, 2) (5629, 2) (369, 2)
valid_df = pd.concat([valid_df,test_df[:50]],axis=0)
# 合并
train_df = pd.concat([train_df,valid_df],axis=0)
print(train_df.shape)
(25677, 2)
# 统计一下
sns.countplot(train_df["label"])
plt.title("Number of ham and spam messages")
plt.xlabel("Label")
Text(0.5, 0, 'Label')
# 对标签进行处理
# LabelEncoder 是对不连续的数字或者文本进行编号
# LabelEncoder可以将标签分配一个0—n_classes-1之间的编码
x_train = train_df["text"]
y_train = train_df["label"]
le = LabelEncoder()
y_train = le.fit_transform(y_train)
y_train = y_train.reshape(-1,1)
# 分词器Tokenizer Tokenizer是一个用于向量化文本,或将文本转换为序列(即单词在字典中的下标构成的列表,从1算起)的类
# 类方法
# fit_on_texts(texts) :texts用于训练的文本列表
# texts_to_sequences(texts):texts待转为序列的文本列表 返回值:序列的列表,列表中的每个序列对应于一段输入文本
# 填充序列pad_sequences 将长为nb_smaples的序列转换为(nb_samples,nb_timesteps)2Dnumpy attay.如果提供maxlen,nb_timesteps=maxlen,
#否则其值为最长序列的长度。
# 其它短于该长度的序列都会在后部填充0以达到该长度。长与nb_timesteps的序列会被阶段,以使其匹配该目标长度。
#max_words = 1000
#max_len = 150
max_words = len(set(" ".join(x_train).split()))
max_len = x_train.apply(lambda x:len(x)).max()
tok = Tokenizer(num_words=max_words)
tok.fit_on_texts(x_train)
sequences = tok.texts_to_sequences(x_train)
sequences_matrix = sequence.pad_sequences(sequences,maxlen=max_len)
ModelCheckpoint:
EarlyStopping:
ReduceLROnPlateau:
print("Setting Callbacks")
checkpoint = ModelCheckpoint("model.h5",
monitor="val_acc",
verbose=1,
save_best_only=True,
mode="max")
early_stopping = EarlyStopping(monitor="val_loss",
patience=3,
verbose=1,
restore_best_weights=True,
mode="min")
reduce_lr = ReduceLROnPlateau(monitor="val_loss",
factor=0.5,
patience=2,
verbose=1,
mode="min")
callbacks=[checkpoint,early_stopping,reduce_lr]
Setting Callbacks
# 定义RNN模型
def RNN():
model = Sequential()
model.add(Embedding(max_words,128,input_length=max_len))
model.add(LSTM(64))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(256,activation="relu"))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(64,activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(1,activation="sigmoid"))
model.summary()
return model
# 画曲线
def plot_performance(history=None,figure_directory=None,ylim_pad=[0,0]):
xlabel="Epoch"
legends=["Training","Validation"]
plt.figure(figsize=(20,5))
y1=history.history["accuracy"]
y2=history.history["val_accuracy"]
min_y=min(min(y1),min(y2))-ylim_pad[0]
max_y=max(max(y1),max(y2))+ylim_pad[0]
plt.subplot(121)
plt.plot(y1)
plt.plot(y2)
plt.title("Model Accuracy\n",fontsize=17)
plt.xlabel(xlabel,fontsize=15)
plt.ylabel("Accuracy",fontsize=15)
plt.ylim(min_y,max_y)
plt.legend(legends,loc="upper left")
plt.grid()
y1=history.history["loss"]
y2=history.history["val_loss"]
min_y=min(min(y1),min(y2))-ylim_pad[1]
max_y=max(max(y1),max(y2))+ylim_pad[1]
plt.subplot(122)
plt.plot(y1)
plt.plot(y2)
plt.title("Model Loss:\n",fontsize=17)
plt.xlabel(xlabel,fontsize=15)
plt.ylabel("Loss",fontsize=15)
plt.ylim(min_y,max_y)
plt.legend(legends,loc="upper left")
plt.grid()
plt.show()
rnn_model = RNN()
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_1 (Embedding) (None, 1954, 128) 7551616
_________________________________________________________________
lstm_1 (LSTM) (None, 64) 49408
_________________________________________________________________
dropout_1 (Dropout) (None, 64) 0
_________________________________________________________________
batch_normalization_1 (Batch (None, 64) 256
_________________________________________________________________
dense_1 (Dense) (None, 256) 16640
_________________________________________________________________
dropout_2 (Dropout) (None, 256) 0
_________________________________________________________________
batch_normalization_2 (Batch (None, 256) 1024
_________________________________________________________________
dense_2 (Dense) (None, 64) 16448
_________________________________________________________________
dropout_3 (Dropout) (None, 64) 0
_________________________________________________________________
dense_3 (Dense) (None, 1) 65
=================================================================
Total params: 7,635,457
Trainable params: 7,634,817
Non-trainable params: 640
_________________________________________________________________
loss = "binary_crossentropy"
metrics=["accuracy"]
# RNN模型训练
print("Starting...\n")
learning_rate=0.001
optimizer=Adam(learning_rate)
print("\n\nCompliling Model...\n")
rnn_model.compile(optimizer=optimizer,
loss=loss,
metrics=metrics)
verbose = 1
epochs=100
batch_size=128
validation_split=0.1
print("Trainning Model...\n")
rnn_history=rnn_model.fit(sequences_matrix,
y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
callbacks=callbacks,
validation_split=validation_split)
Starting...
Compliling Model...
WARNING:tensorflow:From D:\software\Anaconda\anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\ops\nn_impl.py:180: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
Trainning Model...
WARNING:tensorflow:From D:\software\Anaconda\anaconda\envs\tensorflow\lib\site-packages\keras\backend\tensorflow_backend.py:422: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.
Train on 23109 samples, validate on 2568 samples
Epoch 1/100
23109/23109 [==============================] - 320s 14ms/step - loss: 0.6358 - accuracy: 0.6747 - val_loss: 0.6019 - val_accuracy: 0.8236
Epoch 2/100
23109/23109 [==============================] - 317s 14ms/step - loss: 0.2775 - accuracy: 0.8940 - val_loss: 0.4068 - val_accuracy: 0.8162
Epoch 3/100
23109/23109 [==============================] - 319s 14ms/step - loss: 0.1187 - accuracy: 0.9601 - val_loss: 0.4475 - val_accuracy: 0.8185
Epoch 4/100
23109/23109 [==============================] - 325s 14ms/step - loss: 0.0608 - accuracy: 0.9803 - val_loss: 0.9544 - val_accuracy: 0.7819
Epoch 00004: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.
Epoch 5/100
23109/23109 [==============================] - 325s 14ms/step - loss: 0.0285 - accuracy: 0.9904 - val_loss: 0.7304 - val_accuracy: 0.8209
Restoring model weights from the end of the best epoch
Epoch 00005: early stopping
# 可视化
plot_performance(history=rnn_history)
# 数据导入
data = pd.read_csv("./Dataset/test.txt",encoding="utf-8",header=None,sep="\t",names=["label","text"])
data.head()
label | text | |
---|---|---|
0 | 1 | 如果 我 无聊 时 网上 乱逛 偶尔 看到 这部 电影 我 可能 会 给 它 打 四星 但是... |
1 | 1 | 服装 很漂亮 场景 很大 气 演员 演得 也 不错 特技 效果 也 非常 精彩 魔幻 味 够... |
2 | 1 | 冯小刚 越来越 会 摸 国人 卖 搞 人 还有 很多 傻 跟着 转 个人 认为 完全 个 喜... |
3 | 1 | 该剧 还是 正 老 问题 就是 痕迹 过重 宫廷 剧是 最受 观众 欢迎 所以 人人 来 拍... |
4 | 1 | 戏 不够 误会 凑 戏 不够 人妖 凑 戏 不够 卧底 凑 戏 不够 寻宝 凑 戏 不够 野... |
y_test = data["label"]
y_test = np.array(y_test)
predict_data = data["text"]
# 将带预测数据转为序列
predict_sequences = tok.texts_to_sequences(predict_data)
predict_sequences_matrix = sequence.pad_sequences(predict_sequences,maxlen=max_len)
# RNN预测
rnn_predict_num = rnn_model.predict_classes(predict_sequences_matrix )
predict = rnn_predict_num[:,0]
predict
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1,
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1])
y_test
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int64)
from sklearn.metrics import accuracy_score
print(accuracy_score(predict,y_test))
0.8373983739837398
点赞收藏评论走起来,亲爱的瓷们!!!!
文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态
文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境
文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn
文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker
文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机
文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk
文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入
文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。 Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。
文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动
文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计
文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;gt;Jni-&amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图
文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法