III.Data Modeling and Aggregation(数据模型和整合)

Recipe 3-1. Data Model Using an Embedded Document(数据模型使用整合文档)
    1.一对一的关系
    比如:
        {
            _id: "James",
            name: "James William"
        }
        {
            student_id: "James",
            street: "123 Hill Street",
            city: "New York",
            state: "US",
        }
    整合:
        {
            _id: "James",
            name: "James William",
            address: {
                street: "123 Hill Street",
                city: "New York",
                state: "US",
            }
        }
    2.一对多的关系
    比如:
        {
            _id: "James",
            name: "James William"
        }
        {
            student_id: "James",
            street: "123 Hill Street",
            city: "New York",
            state: "US",
        }
        {
            student_id: "James",
            street: "234 Thomas Street",
            city: "New Jersey",
            state: "US",
        }
    整合:
        {
            _id: "James",
            name: "James William",
            address: [{
                street: "123 Hill Street",
                city: "New York",
                state: "US",
            },
            {
                street: "234 Thomas Street",
                city: "New Jersey",
                state: "US",
            }]
        }

Recipe 3-2. Model Tree Structure with Parent References    (模型树--Parent)
    1.插入如下数据
        db.author.insert( { _id: "Practical Apache Spark", parent:"Books" } )
        db.author.insert( { _id: "MongoDB Recipes", parent: "Books" } )
        db.author.insert( { _id: "Books", parent: "Subhashini" } )
        db.author.insert( { _id: "A Framework For Extracting Information From Web Using VTD-XML ' s XPath", parent:"Article" } )
        db.author.insert( { _id: "Article", parent: "Subhashini" } )
        db.author.insert( { _id: "Subhashini", parent: null } )
    2.树结构
                          Subhashii
                    Books           Article
        Practical Apache Spark      A Framework For Extracting Information From Web Using VTD-XML
    3.查询父级
        db.author.findOne( { _id: "MongoDB Recipes" } ).parent
        db.author.find( { parent: "Subhashini" } )
Recipe 3-3. Tree Structure with Child References    (模型树--Child)
    1.插入数据
        db.author.insert( { _id: "Practical Apache Spark", children: [] } )
        db.author.insert( { _id: "MongoDB", children: [] } )
        db.author.insert( { _id: "Books", children: [ "Practical Apache Spark", "MongoDB Recipes" ] } )
        db.author.insert( { _id: " A Framework For Extracting Information From Web Using VTD-XML ' s XPath ", children: [] } )
        db.author.insert( { _id: "Article", children: [ " A Framework For Extracting Information From Web Using VTD-XML ' s XPath " ] } )
        db.categories.insert( { _id: "Subhashini", children: ["Books","Article" ] } )
    2.查询子级
        db.author.findOne( { _id: "Books" } ).children
        db.author.find( { children: "MongoDB Recipes" } )
Recipe 3-4. Tree Structure with an Array of Ancestors    (模型树--数组Ancestors)
    1.插入数据
        db.author.insert( { _id: "Practical Apache Spark", ancestors: ["Subhashini", "Books" ], parent: "Books" } )
        db.author.insert( { _id: "MongoDB Recipes", ancestors: ["Subhashini", "Books" ], parent: "Books" } )
        db.author.insert( { _id: "Books", ancestors: [ "Subhashini" ],parent: "Subhashini" } )
        db.author.insert( { _id: " A Framework For Extracting Information From Web Using VTD-XML ", ancestors: ["Subhashini", "Article" ], parent: "Article" } )
        db.author.insert( { _id: "Article", ancestors: [ "Subhashini"], parent: "Subhashini" } )
        db.author.insert( { _id: "Subhashini", ancestors: [ ], parent:null } )
    2.查询ancestors
        db.author.findOne( { _id: "MongoDB Recipes" } ).ancestors
        db.author.find( { ancestors: "Subhashini" } )
Recipe 3-5. Aggregation Pipeline(整合渠道)
    准备数据
        db.orders.insertMany([
        {custID:"10001",amount:500,status:"A"},
        {custID:"10001",amount:250,status:"A"},
        {custID:"10002",amount:200,status:"A"},
        {custID:"10001",amount: 300, status:"D"}]);
    1.仅仅需要custID
        db.orders.aggregate( [ { $project : { custID : 1 , _id : 0 }} ] )
    2.查询相当于group的语句,并查询总数
        db.orders.aggregate({$group:{_id:"$custID",TotalAmount:{$sum:"$amount"}}});
    3.使用$match来求总数
        db.orders.aggregate({$match:{status:"A"}},{$group:{_id:"$custID",TotalAmount:{ $sum:"$amount"}}});
    4.求平均数
        db.orders.aggregate({$group:{_id:"$custID",AverageAmount:{$avg:"$amount"}}});
Recipe 3-6. Map-Reduce
    准备数据
        db.orders.insertMany([
        {custID:"10001",amount:500,status:"A"},
        {custID:"10001",amount:250,status:"A"},
        {custID:"10002",amount:200,status:"A"},
        {custID:"10001",amount: 300, status:"D"}]);
    1.创建map的函数--过滤数据查询
        var map = function()
        {
            emit (this.custID, this.amount);
        }
    2.创建Reduce函数--计算总数
        var reduce = function(key, values)
        { 
            return Array.sum(values) ;
        }
    3.使用上面创建的函数
        db.orders.mapReduce(map, reduce,
        {
            out: "order_totals",query:{status:"A"}
        });
    4.查询
        db.order_totals.find()
    5.结果
        { "_id" : "10001", "value" : 750 }
        { "_id" : "10002", "value" : 200 }
Recipe 3-7. Single-Purpose Aggregation Operations(单一整合操作)
    准备数据
        db.orders.insertMany([
        {custID:"10001",amount:500,status:"A"},
        {custID:"10001",amount:250,status:"A"},
        {custID:"10002",amount:200,status:"A"},
        {custID:"10001",amount: 300, status:"D"}]);
    1.排除重复custID
        db.orders.distinct("custID")

    
Recipe 3-8. Matching SQL Aggregation to MongoDB Aggregation Operations(SQL与Mongodb的术语匹配)
    SQL Term         MongoDB Operator
    Where            $match
    groUp BY         $group
    haVing             $match
    SeleCt             $project
    orDer BY         $sort
    liMit             $limit
    SUM             $sum
    CoUnt             $sum
    Join             $lookup

对于模型的训练和推理,通常需要使用除了 `XLNetPretrainedModel` 模块之外的其他模块和函数来完成。下面是一个简单的代码示例,展示了如何使用 `XLNetPretrainedModel` 模块进行训练和推理: ```python import paddle from paddlenlp.transformers import XLNetPretrainedModel, XLNetTokenizer # 加载预训练的 XLNet 模型和分词器 model = XLNetPretrainedModel.from_pretrained('xlnet-base-cased') tokenizer = XLNetTokenizer.from_pretrained('xlnet-base-cased') # 训练数据 train_data = [...] # 假设为训练数据列表 # 定义输入数据 input_ids = paddle.to_tensor(tokenizer.batch_encode(train_data)) # 训练 model.train() outputs = model(input_ids) loss = outputs[0] # 推理 model.eval() outputs = model(input_ids) logits = outputs[0] # 打印结果 print("训练损失:", loss.numpy()) print("推理结果:", logits.numpy()) ``` 在上述代码中,我们首先使用 `XLNetPretrainedModel.from_pretrained()` 方法加载预训练的 XLNet 模型,并使用 `XLNetTokenizer.from_pretrained()` 方法加载相应的分词器。 接下来,我们定义了训练数据 `train_data`,并使用分词器对其进行编码得到 `input_ids`,然后将其转换为 PaddlePaddle 的 Tensor 格式。 在训练过程中,我们使用 `model.train()` 将模型设置为训练模式,并执行前向传播操作得到模型输出。然后,我们可以计算损失函数,并进行后续的反向传播和优化更新参数。 在推理过程中,我们使用 `model.eval()` 将模型设置为推理模式,并执行前向传播操作得到模型输出。这里的 `logits` 是模型的预测结果。 最后,我们打印了训练损失和推理结果。 需要注意的是,这只是一个简单的示例代码,实际的训练和推理过程通常还涉及到数据加载、优化器的设置、迭代训练等复杂的步骤。具体的实现方式可能根据任务需求和数据格式的不同而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值