我正在将用户输入设置为1行8列的矩阵,然后功能缩放这些值,以便可以使用矩阵中的值预测得到的错误
ValueError:找到的数组为暗3。预期的StandardScaler <= 2
我尝试了
matrix = q.fit_transform(matrix[:, np.newaxis])
但是它返回-Found数组,其值为暗3。StandardScaler预期为<= 2。
R = int(input("Enter the number of rows:"))
C = int(input("Enter the number of columns:"))
print("Enter the entries in a single line (separated by space): ")
entries = list(map(float, input().split()))
matrix = np.array(entries).reshape(R, C)
print(matrix)
matrix = q.fit_transform(matrix)
我希望获得StandardScale
结果,但返回
[0.000000000000000000e+00 0.000000000000000000e+00
0.000000000000000000e+00 0.000000000000000000e+00
0.000000000000000000e+00 0.000000000000000000e+00
0.000000000000000000e+00 0.000000000000000000e+00]
答案 0 :(得分:0)
我认为您误解了StandardScaler
的逻辑。每个数据点均值减去并用标准偏差归一化。因此,如果数据点的数量为1,则该值为零。
样本x的标准得分计算如下:
z =(x-u)/ s
其中,u是训练样本的平均值;如果是,则为零 with_mean = False,并且s是训练的标准偏差 样本,如果with_std = False,则为一个。
因此,如果您只有一个数据点,那么标准分数将始终为全零。
from sklearn.preprocessing import StandardScaler
data = [[1, 2, 3, 1, 3, 2, 1]]
scaler = StandardScaler()
print(scaler.fit_transform(data))
# [[0. 0. 0. 0. 0. 0. 0.]]