簡體   English   中英

在StandardScalar Fit_Transform上獲取錯誤

[英]Getting Error on StandardScalar Fit_Transform

 import numpy as np
 import matplotlib.pyplot as plt
 import pandas as pd

 dataset = pd.read_csv('Position_Salaries.csv')
 X = dataset.iloc[:, 1:2].values
 y = dataset.iloc[:, 2].values

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)

好的,這就是問題所在。 X和y都是單一要素,並且只有一列。 如您所見,X是一個矩陣 y是向量 X = dataset.iloc [:, 1:2] .values y = dataset.iloc [:, 2] .values

現在,當我運行y = sc_y.fit_transform(y)我得到一個錯誤,它是一維數組。 如果我更改y = dataset.iloc[:, 2:3].values ,使其成為2D數組。 但是我希望它由於其因變量而保持為一維數組,並希望保持這種狀態。 我也解決了較早的不同示例,在這些示例中,我不得不重新縮放相似的數據,但是它沒有給我這種錯誤。 不知道為什么現在給我。 此外,我在編碼時正在觀看視頻,並且視頻中的所有內容都相同,但他沒有出現任何錯誤。

StandardScaler用於處理功能,而不是標簽或目標數據。 因此僅適用於二維數據。 請參閱此處獲取文檔:

您可以做的是使用比例功能 StandardScaler只是該函數的包裝。

from sklearn.preprocessing import scale
y = scale(y)

或者,如果您想使用StandarScaler,則需要將y重塑為二維數組,如下所示:

import numpy as np
y = np.array(y).reshape(-1,1)
y = sc_y.fit_transform(y)
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X = sc_X.fit_transform(X)

sc_y = StandardScaler()
y = np.array(y).reshape(-1,1)
y = sc_y.fit_transform(y)
y = y.flatten()

您可以使用flatten從2D數組獲取1D數組:

y.flatten()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM