TrustGeo代码理解(五)utils.py(辅助函数,包括视图融合的代码)

本文详细介绍了TrustGeo项目中的`utils.py`文件,包含多个NN模型预处理类如MaxMinScaler家族,以及数据处理函数如融合、损失函数等。这些函数在处理大规模IP地理位置数据集时,进行数据预处理、模型训练和测试中的关键步骤。代码适用于vscode环境,涉及网络协议和tcp/ip相关处理。
摘要由CSDN通过智能技术生成

代码链接:https://github.com/ICDM-UESTC/TrustGeo

└── TrustGeo
    ├── datasets # 包含3个大规模的真实街道IP地理位置数据集。
    │        |── New_York # 从纽约市收集的街道级IP地理定位数据集,包括91,808个IP地址。
    │        |── Los_Angeles # 从洛杉矶收集的街道级IP地理定位数据集,包括92,804个IP地址。
    │        |── Shanghai # 收集自上海的街道级IP地理定位数据集,包括126,258个IP地址。
    ├── lib # 包含模型(model)实现文件
    │        |── layers.py # 注意力机制的代码。
    │        |── model.py # TrustGeo的核心源代码。
    │        |── sublayers.py # layer.py的支持文件。
    │        |── utils.py # 辅助函数,包括视图融合的代码
    ├── asset # 包含运行模型时保存的检查点和日志
    │        |── log # 包含运行模型时保存的日志
    │        |── model # 包含运行模型时保存的检查点
    ├── preprocess.py # 预处理数据集并为模型运行执行IP聚类
    ├── main.py # 运行模型进行训练和测试
    ├── test.py #加载检查点,然后测试
    └── README.md

一、导入常用库和模块

from __future__ import print_function
from distutils.version import LooseVersion
from matplotlib.scale import LogisticTransform
import numpy as np
import torch
import warnings
import torch.nn as nn
import random
import matplotlib.pyplot as plt
import copy

这段代码首先包含一些导入语句,接着进行一些版本和警告的处理,最后导入了一些常用的库(numpytorchmatplotlib),并定义了一些常用的模块(nnplt)。

该块实现与RIPGeo部分一致

RIPGeo代码理解(五)utils.py( 辅助函数)第一部分-CSDN博客

不同之处在于:

1、from distutils.version import LooseVersion导入LooseVersion类,用于比较版本号。

2、from matplotlib.scale import LogisticTransform导入了matplotlib库中的LogisticTransform类。LogisticTransformmatplotlib中用于对坐标轴进行变换的一个类。

二、warnings.filterwarnings(action='once')

设置了在使用warnings.filterwarnings时的参数。filterwarnings函数用于配置警告过滤器,以控制哪些警告会被触发,以及如何处理这些警告。

该块实现与RIPGeo完全一致

RIPGeo代码理解(五)utils.py( 辅助函数)第一部分-CSDN博客

三、MaxMinLogRTTScaler类定义(NN模型)

class MaxMinLogRTTScaler():
    def __init__(self):
        self.min = 0.
        self.max = 1.

    def transform(self, data):
        data_o = np.array(data)
        data_o = np.log(data_o + 1)
        return (data_o - self.min) / (self.max - self.min)

这是一个最大最小归一化和对数变换的类,用于对输入数据进行预处理。这个类的实例可以用于对RTT(Round-Trip Time)等数据进行预处理,使其适用于某些需要输入在固定范围内的模型。

该块实现与RIPGeo完全一致

RIPGeo代码理解(五)utils.py( 辅助函数)第二部分-CSDN博客

四、MaxMinRTTScaler类定义(NN模型)

class MaxMinRTTScaler():
    def __init__(self):
        self.min = 0.
        self.max = 1.

    def transform(self, data):
        data_o = np.array(data)
        # data_o = np.log(data_o + 1)
        return (data_o - self.min) / (self.max - self.min)

这是一个用于进行最大-最小缩放(Max-Min Scaling)的类。这种缩放方法用于将数据缩放到指定的范围,通常是[0, 1]。

该块实现与RIPGeo完全一致

RIPGeo代码理解(五)utils.py( 辅助函数)第二部分-CSDN博客

五、MaxMinLogScaler类定义(NN模型)

class MaxMinLogScaler():
    def __init__(self):
        self.min = 0.
        self.max = 1.

    def transform(self, data):
        data[data != 0] = -np.log(data[data != 0] + 1)
        max = torch.from_numpy(self.max).type_as(data).to(data.device) if torch.is_tensor(data) else self.max
        min = torch.from_numpy(self.min).type_as(data).to(data.device) if torch.is_tensor(data) else self.min
        data[data != 0] = (data[data != 0] - min) / (max - min)
        return data

    def inverse_transform(self, data):
        max = torch.from_numpy(self.max).type_as(data).to(data.device) if torch.is_tensor(data) else self.max
        min = torch.from_numpy(self.min).type_as(data).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值