【问题标题】:Scikit-learn: How to normalize row values horizontally?Scikit-learn:如何水平标准化行值?
【发布时间】:2016-04-18 00:11:31
【问题描述】:

我想水平而不是垂直标准化下面的值。代码读取代码后提供的 csv 文件并输出具有标准化值的新 csv 文件。如何使其水平标准化?代码如下:

代码

#norm_code.py
#normalization = x-min/max-min

import numpy as np
from sklearn import preprocessing
all_data=np.loadtxt(open("c:/Python27/test.csv","r"),
delimiter=",",
skiprows=0,
dtype=np.float64)

x=all_data[:]

print('total number of samples (rows):', x.shape[0])
print('total number of features (columns):', x.shape[1])
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1)).fit(x)

X_minmax=minmax_scale.transform(x)
with open('test_norm.csv',"w") as f:
    f.write("\n".join(",".join(map(str, x)) for x in (X_minmax)))

test.csv

1   2   0   4   3
3   2   1   1   0
2   1   1   0   1

【问题讨论】:

    标签: python numpy scikit-learn


    【解决方案1】:

    您可以简单地对转置进行操作,并对结果进行转置:

    minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1)).fit(x.T)
    
    X_minmax=minmax_scale.transform(x.T).T
    

    【讨论】:

      【解决方案2】:

      不使用 sklearn 的 Oneliner 答案:

      X_minmax = np.transpose( (x-np.min(x,axis=1))/(np.max(x, axis=1)-np.min(x,axis=1)))
      

      这比在预处理中使用 MinMaxScaler 快大约 8 倍。

      【讨论】:

        猜你喜欢
        • 2014-10-17
        • 2013-01-19
        • 2014-03-31
        • 2016-05-08
        • 2018-08-12
        • 2021-01-15
        • 2019-01-14
        • 2019-11-14
        • 2013-01-29
        相关资源
        最近更新 更多