当初之前没有接触过机器学习的人尝试了一下(第五部分)
这次,我们将从先前下载的各种赛艇数据文件中提取所需项目,并将其注册到数据库(本次使用MongoDB)中。
数据库的集合将分别创建以下三个集合:
– 节目表
– 竞赛成绩
– 赛马手个人成绩
–
1. 从各种数据中进行获取并进行注册。
以下是從各種數據文件中提取必要項目的一些關鍵點,詳細描述已在節目表中記錄。
以二进制模式加载
由于节目清单的字符编码为SJIS,因此将在Jetson上进行解析,将以二进制模式解析文件。
# filePath:番組表ファイルパス
# 'br':バイナリモード読み込み
with open(filePath, 'br') as raceData:
1.2. 获取日语使用UTF-8编码。
由于正在使用二进制模式进行分析,所以需要将获取的数据转换为UTF-8格式,以便处理日语部分。
# 選手名
# line[6:14]:選手名を表す部分バイト位置
# decode('cp932'):SJISからデコードしUTF-8に変換(あってる?)
# cp9321がSJISを意味している。
playerName = line[6:14].decode('cp932')
只需要一种选择,将以下内容用中文进行本地化转述:
1.3.非数字类别项需要转换为数值。
等级(A1、A2等)代表赛艇选手的排名。
然而,为了进行机器学习,数值化是必要的。
# 級別
grade = line[22:24].decode('cp932')
# 級別が'A1'である場合
if 'A1' in grade:
# 数値化し1とする
numGrade = 1
# 級別が'A2'である場合
elif 'A2' in grade:
# 数値化し2とする
numGrade = 2
# 級別が'B1'である場合
elif 'B1' in grade:
# 数値化し3とする
numGrade = 3
# 級別がその他である場合
else:
# 数値化し4とする
numGrade = 4
1.4. 注册到MongoDB。
将数据以Python的字典类型注册到MongoDB中。这个过程是将数据填入字典中,然后进行注册。
# mongo DB
from pymongo import MongoClient
# mongoDB
client = MongoClient()
# データベース
# DBNAME:データベース名称
db = client[DBNAME]
# プログラムコレクション
# P_COLL:番組表格納コレクション名
pgCol = db[P_COLL]
# 番組表情報辞書
pgDic = {}
# 開催場所格納
# LOCATION:MongoDBに対する開催場のキー名称
# ちなみに私は、「LOCATION = 'location'」で定義しました。
pgDic[LOCATION] = int(location)
# レース番号取得
raceNo = int(line[0:4].decode('cp932'))
# RACENO:MongoDBに対する開催場のキー名称
# ちなみに私は、「RACENO = 'raceno'」で定義しました。
pgDic[RACENO] = raceNo
(以降、必要項目を辞書に登録)
try:
# 番組表情報辞書を登録
# insert_oneは、1件挿入メソッド
result = pgCol.insert_one(pgDic)
# キーが重複する場合
# 番組表コレクションは、「日付、開催場、レース番号」をキーとする。
except pymongo.errors.DuplicateKeyError:
# キー重複例外は無視
pass
关于MongoDB
2.1. 不要忘记MongoDB的各种名称。
MongoDB 和关系型数据库的名称比较。
2.2. 在MongoDB中设置唯一索引。
為了避免重複數據的積累,設置MongoDB的每個集合的唯一索引。
我們以節目表作為例子來解釋。
節目表是根據日期、場地和賽車編號唯一確定的,因此我們要創建一個唯一索引。
順帶一提,贏家成績也使用相同的鍵值創建了唯一索引。
$ mongo
MongoDB shell version: 3.2.11
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
> use boatRace
switched to db boatRace
> boatRace.program.createIndex( { date: 1, location: 1, raceno: 1 }, { unique: true } )
如果想要以可视化的方式查看MongoDB,可以考虑以下选项:
Jetson采用无头方式运行,如果想要以可视化方式查看MongoDB的数据,可以使用MongoDB Compass来查看数据。
相关(连载)
如果一个初学者尝试机器学习(其0)
如果一个初学者尝试机器学习(其6)