标签: normalization

Tfidvectorizer - L2 归一化向量

我想确保 TfidfVectorizer 对象返回 l2 归一化向量。我正在运行具有不同长度的文档的二元分类问题。

我正在尝试提取每个语料库的归一化向量,因此我假设我可以对 Tfidfvectorizer 矩阵的每一行求和。然而总和大于 1,我认为标准化的 copora 会将所有文档转换为 0-1 之间的范围。

vect = TfidfVectorizer(strip_accents='unicode',
stop_words=stopwords,analyzer='word', use_idf=True, tokenizer=tokenizer, ngram_range=(1,2),sublinear_tf= True , norm='l2')

tfidf = vect.fit_transform(X_train)
# sum norm l2 documents
vect_sum = tfidf.sum(axis=1)
Run Code Online (Sandbox Code Playgroud)

vect_sum 的值大于 1,我认为使用范数会导致所有向量都在 0-1 之间。我刚刚意识到 scikit learn 中的一个预处理对象 - preprocessing.normalizer。这是我应该在 Gridsearch 管道中使用的东西吗?请参阅下面的示例。

pipeline = Pipeline([
    ('plb', normalize(tfidf, norm='l2')), #<-- sklearn.preprocessing
    ('tfidf', tfidf_vectorizer),
    ('clf', MultinomialNB()),  
])
Run Code Online (Sandbox Code Playgroud)

preprocessing.normalizer 和 Tfidfvectorizer 范数参数有什么区别?

python normalization tf-idf scikit-learn

2
推荐指数
1
解决办法
2781
查看次数

格式化浮点数,去掉尾随零和小数点,在 haskell 中将大数切换为科学记数法

我正在 Haskell 中寻找一种方法,以完全按照此(Java)问题中描述的方式格式化浮点数,以获得最佳紧凑性。我想这也可以称为“常态化”。

我将在此处复制该问题的示例场景:

2.80000-> 应格式化为"2.8"

765.000000-> "765"(注意小数点也被删除了)

0.0073943162953-> "0.00739432"(限制精度位数 — 在本例中为 6)

0.0000073943162953-> "7.39432E-6"(如果幅度足够小,则切换到科学计数法 - 小于1E-5本例)

7394316295300000-> "7.39432E+6"(如果幅度足够大,则切换到科学记数法 - 例如,当大于时1E+10

0.0000073900000000-> "7.39E-6"(从科学计数法中的有效数中去除尾随零)

0.000007299998344-> "7.3E-6"(从 6 位精度限制舍入导致该数字的尾随零被删除)

Haskell 中是否有一个内置库可以做到这一点,或者我必须自己推出?

printf haskell decimal normalization

2
推荐指数
1
解决办法
585
查看次数

Symfony 序列化:更改默认的 DateTimeNormalizer 格式

我正在尝试序列化一个具有一些 \DateTime 字段的实体类。一切正常,但 \DateTime 对象使用以下格式转换为字符串:“2019-10-21T01:05:12+00:00”,而我只想获取日期部分:“2019-10-21 ”。

Symfony文档提到了默认格式,但没有解释如何配置它:

DateTimeNormalizer此规范化器将 DateTimeInterface 对象(例如 DateTime 和 DateTimeImmutable)转换为字符串。默认情况下,它使用 RFC3339 格式。

是否可以更改默认的日期时间规范化格式以及如何更改?

实体类:

class Fact
{
    /**
     * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
     * @Groups({"api"})
     */
    private $created_on;
}
Run Code Online (Sandbox Code Playgroud)

标准化示例:

use Symfony\Component\Serializer\SerializerInterface;

class FactController extends AbstractController
{
    private $serializer;

    public function __construct(SerializerInterface $serializer)
    {
        $this->serializer = $serializer;
    }

    public function view($id)
    {
        ....   
        $data = array(
            'fact' => $this->serializer->normalize($fact, null, ['groups'=> 'api']),
        );
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

serialization datetime normalization symfony

2
推荐指数
1
解决办法
4049
查看次数

如何对多个属性(列)进行对数转换 - Python

我有一个包含两列的数据集,它们的比例完全不同。

我需要对两列进行日志转换,以便能够对它们进行一些可视化。

我找不到允许我对多个列进行日志转换的 python 代码。

有谁能够帮助我?

我有一个包含定性和定量列的数据集,我希望在 RealizedPL 和体积列上进行日志记录。

我的数据集看起来有点像这样:

     Date           Name       Country     Product     RealizedPL     Volume
0    2019.01.01     Charles    Country1    ProductA      100           10200
1    2019.02.20     Pierre     Country2    ProductB      150           20500
2    2019.03.02     Chiara     Country1    ProductA      200           15300
Run Code Online (Sandbox Code Playgroud)

如何进行日志转换并保留其他列?通过为日志创建新列或直接用日志替换列。

谢谢

python logging transformation normalization scikit-learn

2
推荐指数
1
解决办法
2328
查看次数

python中将数据缩放到特定范围

我想将大小为 [192,4000] 的数组缩放到特定范围。我希望将每一行(1:192)重新调整到特定范围,例如(-840,840)。我运行一个非常简单的代码:

import numpy as np
from sklearn import preprocessing as sp
sample_mat = np.random.randint(-840,840, size=(192, 4000))
scaler = sp.MinMaxScaler(feature_range=(-840,840))
scaler = scaler.fit(sample_mat)
scaled_mat= scaler.transform(sample_mat)
Run Code Online (Sandbox Code Playgroud)

即使原始矩阵的最大值和最小值完全相同,这也会弄乱我的矩阵范围。我不知道出了什么问题,有什么想法吗?

python normalization scikit-learn

2
推荐指数
1
解决办法
5585
查看次数

如何仅在某些值上在管道内使用 StandardScaler?

我有个问题。我想使用StandardScaler(),但我的数据集包含某些值和其他不应缩放的OneHotEncoding值。但如果我正在运行,所有值都会缩放。那么是否可以选择仅对管道内的某些值运行此方法?StandardScaler()

我发现了这个问题:使用以下代码对分类变量进行 One-Hot-Encode 并同时缩放连续变量

columns = ['rank']
columns_to_scale  = ['gre', 'gpa']

scaler = StandardScaler()
ohe    = OneHotEncoder(sparse=False)

# Concatenate (Column-Bind) Processed Columns Back Together
processed_data = np.concatenate([scaled_columns, encoded_columns], axis=1)
Run Code Online (Sandbox Code Playgroud)

那么是否有一个选项可以仅在某些值上运行StandardScaler()内部 a pipeline,而其他值应该合并到缩放值中?因此管道应该只对值使用StandardScaler 'xy', 'xyz'

标准定标器类

from sklearn.base import BaseEstimator, TransformerMixin
class StandardScaler_with_certain_features(BaseEstimator, TransformerMixin):
    def __init__(self, columns_to_scale):
        scaler = StandardScaler()
        

    def fit(self, X, y = None):
        scaler.fit(X_train) # only std.fit on train set
        X_train_nor = scaler.transform(X_train.values)

    def transform(self, X, …
Run Code Online (Sandbox Code Playgroud)

python pipeline machine-learning normalization scikit-learn

2
推荐指数
1
解决办法
2002
查看次数

yolov5 中的非标准化标签

我正在自定义数据集上训练 yolov5 并收到非标准化标签错误。注释有 x,y 和 w,h,这意味着边界框存在于 (x,y) 到 (x+w,y+h) 之间。我正在使用 cv2 矩形函数来显示图像上的边界框,它正在创建完美的边界框。我知道我必须将原始标签转换为标准化中心 x、中心 y、宽度和高度值。我正在下面这样做:

x2=x+w # x,y, w and h are given
y2=y1+h

xc=x+w/2
yc=y+h/2
xc=xc/width # normalize from 0-1. Width and height are image's width and height
yc=yc/height
  
wn=w/width # normalize the width from 0-1
hn=h/height
 
label_file.write(f"{category_idx} {xc} {yc} {wn} {hn}\n")
Run Code Online (Sandbox Code Playgroud)

但是当我在文本文件中写入这些标签并运行 yolov5 训练时,它会给出以下断言错误:

assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file # throws assertion error
AssertionError: non-normalized or out of bounds …
Run Code Online (Sandbox Code Playgroud)

opencv normalization python-3.x yolov5

2
推荐指数
1
解决办法
2407
查看次数

数据库已规范化,但生成的复合键包含20列

问题在于,存在的关系是如此之大,以至于在标准化之后它们就像20个主键(复合键),它们实际上是外键。

必须将它们声明为主键,以唯一地标识该关系。它是否正确?

database-design normalization database-normalization

1
推荐指数
1
解决办法
343
查看次数

为什么LINQ查询返回比我查询的表更多的结果/行?

为了上下文,我正在从已导入数据库的多个Excel工作表中进行一次数据转换.数据未规范化,我正在尝试将其标准化.

我在SQL数据库中有3个表.它们被称为OldAssets,OldTransactions和OldUsers.

OldTransactions有7903条记录.OldUsers有7437. OldAssets有9764

我正在使用LINQ to SQL来使用此代码查询这些表

from oa in OldAssets
from ot in OldTransactions
from u in OldUsers
where (oa.Asset_Serial_Number == ot.Asset_Serial_Number  && ot.User_EID == u.User_EID  && ot.Asset_Tag == oa.Asset_Tag)
select new Transactions { 
            DevCenter = ot.Transaction_Dev_Center,
            Action  =   ot.Transaction_Action, 
            Status  =   ot.Transaction_Status,
            ModificationDate =  ot.Modified,
            ModifiedBy = ot.ModifiedBy,
            CreatedBy = ot.CreatedBy,
            TransactionDate = (System.DateTime)ot.Transaction_Date,
            Transaction_Asset = (System.Int32)oa.ID,
            Transaction_User = (System.Int32)u.ID }
Run Code Online (Sandbox Code Playgroud)

我正在尝试遍历所有OldTransactions,并为每个OldTransaction创建一个新事务,该事务根据资产序列号和user_EID的映射指定Transaction_Asset和Transaction_User.

我的结果是给了我超过10,000条新的"交易记录".我不明白我怎么能获得比我拥有的OldTransactions数量更多的记录.

我可以编写哪些查询将为每个OldTransaction返回一个新的Transaction,但是根据serial_number和User_EID的映射添加了Transaction_Asset和Transaction_User的属性?

c# normalization linq-to-sql

1
推荐指数
1
解决办法
322
查看次数

正则表达式中的匹配条件

只是提前注意:我是一个正念新手.也许对这个问题的一个很好的答案将涉及将我与一个解释这些条件如何工作的资源联系起来:)

让我们说我有一个街道名称,如23rd St或5th St.我想摆脱诉讼"th","rd","nd"和"st".如何才能做到这一点?

现在我的表达式为:(st | nd | rd | th).这个问题是它也会匹配包含"st","nd","rd"或"th"的街道名称.所以我真正需要的是一个条件匹配,它在自身之前寻找至少一个数字(即;第一个而不是街道).

谢谢!

regex normalization street-address

1
推荐指数
1
解决办法
510
查看次数