Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Sklearn在Python中规范化列表列表_Python_Scikit Learn - Fatal编程技术网

如何使用Sklearn在Python中规范化列表列表

如何使用Sklearn在Python中规范化列表列表,python,scikit-learn,Python,Scikit Learn,这是一个抛出错误: s2 = [[0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194], [0.2, 0.4892574205256839, 0.2, 0.2, 0.383258146374831], [0.3193817886456925, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.3193817886456925, 0.31938178864569

这是一个抛出错误:

s2 = [[0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194], [0.2, 0.4892574205256839, 0.2, 0.2, 0.383258146374831], [0.3193817886456925, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.3193817886456925, 0.3193817886456925], [0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194]]

from sklearn.preprocessing import normalize
X = normalize(s2)

如何用Sklearn规范Python中的列表。

因为我没有足够的声誉来评论;因此将其作为答案发布

让我们快速查看您的数据点

我已经将给定的数据点转换为NumPy数组。因为它没有相同的长度,所以看起来像

ValueError: setting an array element with a sequence.
您可以在这里看到,转换后的值不是按值顺序排列的,要实现这一点,您需要保持相同的长度,因为内部列表看起来像是0.1666666在数组中被多次复制;如果没有,那么确定长度,它将看起来像

>>> n2 = np.array([[0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194], [0.2, 0.4892574205256839, 0.2, 0.2, 0.383258146374831], [0.3193817886456925, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.3193817886456925, 0.3193817886456925], [0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194]])
>>> n2
array([list([0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194]),
       list([0.2, 0.4892574205256839, 0.2, 0.2, 0.383258146374831]),
       list([0.3193817886456925, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.3193817886456925, 0.3193817886456925]),
       list([0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194])],
      dtype=object)
正如您现在看到的,n3已成为一系列值

如果您使用normalize函数,它就会简单地工作

>>> n3 = np.array([[0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194], [0.2, 0.4892574205256839, 0.2, 0.2, 0.383258146374831], [0.3193817886456925, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.319381788645692], [0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194]])
>>> n3
array([[0.2       , 0.2       , 0.2       , 0.30216512, 0.24462871],
       [0.2       , 0.48925742, 0.2       , 0.2       , 0.38325815],
       [0.31938179, 0.16666667, 0.16666667, 0.16666667, 0.31938179],
       [0.2       , 0.2       , 0.2       , 0.30216512, 0.24462871]])

如何使用NumPy数组来避免此问题,请查看此SO链接重要提示:为了使所有列表具有相同的长度,我从第三个列表中删除了一个元素

我这样做是因为我真的认为这是一个复制粘贴错误。如果没有,请在下面评论,我将修改我的答案

>>> X = normalize(n3)
>>> X
array([[0.38408524, 0.38408524, 0.38408524, 0.58028582, 0.46979139],
       [0.28108867, 0.6876236 , 0.28108867, 0.28108867, 0.53864762],
       [0.59581303, 0.31091996, 0.31091996, 0.31091996, 0.59581303],
       [0.38408524, 0.38408524, 0.38408524, 0.58028582, 0.46979139]])

问题是列表的长度不尽相同,因此无法正确转换为数组。你期望它正常化到什么程度?
import numpy as np

s2 = [[0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194], [0.2, 0.4892574205256839, 0.2, 0.2, 0.383258146374831], [0.3193817886456925, 0.16666666666666666, 0.16666666666666666, 0.3193817886456925, 0.3193817886456925], [0.2, 0.2, 0.2, 0.3021651247531982, 0.24462871026284194]]

X = normalize(np.array(s2))