无法使用 sklearn 库中的 fit_transform 估算一维数组(拆分测试)
Cannot impute 1D array with fit_transform from sklearn library (split-test)
我正在尝试使用具有 most_frequent 策略的简单输入器来估算形状为 (14599,) 的一维数组,但它说它需要二维数组,我已经尝试过重塑它 (-1,1) 和 ( 1,-1) 但它的错误 ValueError: 无法将形状 (14599,1) 中的输入数组广播到形状 (14599) 中,因为重塑无法解决问题,我怎么能归因于此?我不明白为什么会抛出错误。我已经尝试在 DS stackexchange 中询问它,有人回答说可能是 pandas 系列,但我在 numpy 数组中创建了 x,y,然后将其传递给 X,y/train,test 的参数所以我不确定
##libraries
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
##codes
plt.close('all')
avo_sales = pd.read_csv('avocados.csv')
avo_sales.rename(columns = {'4046':'small PLU sold',
'4225':'large PLU sold',
'4770':'xlarge PLU sold'},
inplace= True)
avo_sales.columns = avo_sales.columns.str.replace(' ','')
plt.scatter(avo_sales.Date,avo_sales.TotalBags)
x = np.array(avo_sales.drop(['TotalBags','Unnamed:0','year','region','Date'],1))
y = np.array(avo_sales.TotalBags)
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
impC = SimpleImputer(strategy='most_frequent')
X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1)) <-- error here
imp = SimpleImputer(strategy='median')
X_train[:,1:8] = imp.fit_transform(X_train[:,1:8])
le = LabelEncoder()
X_train[:,8] = le.fit_transform(X_train[:,8])
换行:
X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1))
到
X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1)).ravel()
你的错误就会消失。
它正在将导致代码出现问题的估算值赋值回来。
我正在尝试使用具有 most_frequent 策略的简单输入器来估算形状为 (14599,) 的一维数组,但它说它需要二维数组,我已经尝试过重塑它 (-1,1) 和 ( 1,-1) 但它的错误 ValueError: 无法将形状 (14599,1) 中的输入数组广播到形状 (14599) 中,因为重塑无法解决问题,我怎么能归因于此?我不明白为什么会抛出错误。我已经尝试在 DS stackexchange 中询问它,有人回答说可能是 pandas 系列,但我在 numpy 数组中创建了 x,y,然后将其传递给 X,y/train,test 的参数所以我不确定
##libraries
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
##codes
plt.close('all')
avo_sales = pd.read_csv('avocados.csv')
avo_sales.rename(columns = {'4046':'small PLU sold',
'4225':'large PLU sold',
'4770':'xlarge PLU sold'},
inplace= True)
avo_sales.columns = avo_sales.columns.str.replace(' ','')
plt.scatter(avo_sales.Date,avo_sales.TotalBags)
x = np.array(avo_sales.drop(['TotalBags','Unnamed:0','year','region','Date'],1))
y = np.array(avo_sales.TotalBags)
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
impC = SimpleImputer(strategy='most_frequent')
X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1)) <-- error here
imp = SimpleImputer(strategy='median')
X_train[:,1:8] = imp.fit_transform(X_train[:,1:8])
le = LabelEncoder()
X_train[:,8] = le.fit_transform(X_train[:,8])
换行:
X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1))
到
X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1)).ravel()
你的错误就会消失。
它正在将导致代码出现问题的估算值赋值回来。