当初之前没有接触过机器学习的人尝试了一下(第五部分)

这次,我们将从先前下载的各种赛艇数据文件中提取所需项目,并将其注册到数据库(本次使用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 和关系型数据库的名称比较。

MongoDB RDB MongoDBの特徴 データベース データベース 「CREATE DATABASE」は無く、「USE」でデータベース作成 コレクション テーブル スキーマ定義が無い ドキュメント レコード ドキュメントは、JSON形式(キー・バリュー)

2.2. 在MongoDB中设置唯一索引。

為了避免重複數據的積累,設置MongoDB的每個集合的唯一索引。

我們以節目表作為例子來解釋。
節目表是根據日期、場地和賽車編號唯一確定的,因此我們要創建一個唯一索引。
順帶一提,贏家成績也使用相同的鍵值創建了唯一索引。

項目 MongoDB内での名称 データベース名 boatRace コレクション名 program 日付キー date   開催場キー location レース番号キー raceno
$ 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)

bannerAds