Tôi là người mới sử dụng Python và tôi đang viết một lớp Python đại diện cho một mục lịch, mỗi mục chứa 2 thuộc tính. ngày và loại ngày, có thể là ngày trong tuần/cuối tuần/ngày lễ hợp pháp/ngày nghỉ có lương/ngày nghỉ không lương. Các đối tượng có thể được tuần tự hóa thành định dạng JSON, được lưu vào bộ sưu tập MongoDB và được tải lại vào bộ nhớ
Việc tuần tự hóa và giải tuần tự hóa được thực hiện với Marshmallow. Vấn đề là MongoDB sử dụng trường _id
làm khóa chính, nhưng tôi muốn tạo khóa chính cho thuộc tính lớp entry_date
, vì vậy tôi phải thực hiện thủ công bằng cách thêm dòng. serialized['_id'] = serialized['entry_date']
Đây là mã nguồn hoàn chỉnh
#!/usr/bin/python
# -*- coding: utf-8 -*-
from marshmallow import Schema, fields, post_load
from pymongo import MongoClient
from datetime import date
ENTRY_WEEKDAY = 0
ENTRY_WEEKEND = 1
ENTRY_LEGAL_HOLIDAY = 2
ENTRY_PAID_HOLIDAY = 3
ENTRY_UNPAID_HOLIDAY = 4
class CalendarEntry[object]:
def __init__[self, entry_date, entry_type]:
self.entry_date = entry_date
iso_format = self.entry_date.isoformat[]
if self.entry_date.weekday[] in range[5] and entry_type == ENTRY_WEEKDAY:
raise ValueError['{0} is already a weekday.'.format[iso_format]]
else:
if entry_type == ENTRY_WEEKEND:
raise ValueError['{0} is already a weekend day.'.format[iso_format]]
elif entry_type == ENTRY_UNPAID_HOLIDAY:
raise ValueError['{0} is a weekend day, cannot be an unpaid holiday.'.format[iso_format]]
self.entry_type = entry_type
def __getattribute__[self, item]:
if item == 'year':
return object.__getattribute__[self, 'entry_date'].year
elif item == 'month':
return object.__getattribute__[self, 'entry_date'].month
elif item == 'day':
return object.__getattribute__[self, 'entry_date'].day
return object.__getattribute__[self, item]
def serialize[self]:
schema = CalendarEntrySchema[]
output = schema.dump[self]
return output.data
@classmethod
def make_instance[cls, data]:
schema = CalendarEntrySchema[]
result = schema.load[data]
return result.data
class CalendarEntrySchema[Schema]:
entry_date = fields.Date[required=True]
entry_type = fields.Integer[required=True]
@post_load
def make_entry[self, data]:
return CalendarEntry[**data]
if __name__ == '__main__':
entry = CalendarEntry[date[2018, 1, 14], ENTRY_WEEKDAY]
serialized = entry.serialize[]
print 'Serialized:', serialized
# Manually add _id field for MongoDB.
serialized['_id'] = serialized['entry_date']
print 'Serialized with _id:', serialized
clnt = MongoClient[]
collection = clnt.hrm.calendar_setting
result = collection.insert_one[serialized]
print 'Entry saved, inserted ID:', result.inserted_id
Đầu ra
Serialized: {u'entry_type': 0, u'entry_date': '2018-01-14'}
Serialized with _id: {u'entry_type': 0, '_id': '2018-01-14', u'entry_date': '2018-01-14'}
Mã hoạt động, nhưng với các trường trùng lặp, _id
và entry_date
chứa chính xác cùng một giá trị
Bất kỳ đề nghị và phê bình xin vui lòng?
Như chúng ta biết khi đào tạo các mô hình học máy hoặc học sâu, chúng ta phải lưu các mô hình đã đào tạo để dự đoán trong tương lai. Tiết kiệm các mô hình học máy có nghĩa là tiết kiệm trí thông minh được tạo ra để đáp ứng nhu cầu của doanh nghiệp. Các mô hình đào tạo ngày nay rất đắt đỏ, vì vậy nếu chúng ta có thể lưu chúng và sử dụng lại trí thông minh đó để giải quyết một số vấn đề khác thì còn được gọi là học chuyển giao. Ví dụ: một mạng thần kinh được đào tạo có thể nhận dạng ô tô có thể được sử dụng để xác định xe tải sau khi tinh chỉnh nó bằng phương pháp học chuyển giao
Lưu các mô hình trong cơ sở dữ liệu và tải chúng bằng python thật dễ dàng. Chúng tôi chọn MongoDB vì nó là cơ sở dữ liệu tài liệu mã nguồn mở và cơ sở dữ liệu NoSQL hàng đầu. Bây giờ, hãy thực hiện từng bước này bằng python
Đầu tiên, cài đặt pymongo bằng pip như hình bên dưới,
pip cài đặt pymongo
Đảm bảo rằng bạn đã cài đặt MongoDB trong hệ thống của mình nếu bạn muốn cài đặt nó, hãy nhấp vào đây
Trước tiên, chúng tôi sẽ đào tạo mô hình xgboost trên bộ dữ liệu iris, sau đó kết xuất nó vào cơ sở dữ liệu và tải lại và sử dụng nó để dự đoán. Nhập các thư viện quan trọng như hình bên dưới
Bây giờ chúng tôi sẽ đào tạo xgboost trên bộ dữ liệu iris
Sau khi đào tạo, chúng tôi sẽ viết một hàm trợ giúp để lưu mô hình, trước tiên sẽ chọn mô hình. Pickling chỉ chuyển đổi bất kỳ đối tượng nào thành byte. Chúng tôi phải chọn mô hình của mình vì chúng tôi không thể lưu các đối tượng trực tiếp vào MongoDB. Chức năng này cũng tạo một kết nối, cơ sở dữ liệu và bộ sưu tập và sau đó lưu mô hình với tên
Bây giờ chúng ta sẽ viết một hàm trợ giúp khác để tải mô hình đã lưu. Trước tiên, chức năng này mở khóa mô hình đã lưu và sau đó trả về mô hình. Ở đây, chúng tôi đang sử dụng hàm find[] và chuyển tên mô hình của nó để tìm nạp mô hình từ cơ sở dữ liệu
Sau khi viết các hàm trợ giúp để lưu và tải mô hình, chúng ta chỉ cần gọi chúng như hình bên dưới
Vì vậy, việc lưu và tải mô hình trong cơ sở dữ liệu thật dễ dàng bằng python. Sau khi lưu các mô hình này, chúng tôi có thể sử dụng chúng trong tương lai bất cứ khi nào chúng tôi muốn. Đối với máy tính xách tay đầy đủ bấm vào đây. Nếu bạn thấy bài viết này hữu ích, hãy vỗ tay hoặc phản hồi, hẹn gặp lại bạn trong blog tiếp theo cho đến khi học tập vui vẻ