【问题标题】:Cannot impute 1D array with fit_transform from sklearn library (split-test)无法使用 sklearn 库中的 fit_transform 估算一维数组(拆分测试)
【发布时间】:2020-06-13 22:30:08
【问题描述】:

我正在尝试使用带有 most_frequent 策略的简单估算器来估算具有形状 (14599,) 的一维数组,但它说它需要二维数组,我已经尝试过重塑它 (-1,1) 和 (1,-1) 但是它的错误 ValueError: could not broadcast input array from shape (14599,1) into shape (14599) 我怎么能估算这个,因为重塑不能解决问题?我不明白为什么它会抛出错误。我已经尝试在DS stackexchange 中询问它,有人回答可能是熊猫系列,但我在 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])

【问题讨论】:

    标签: python arrays numpy scikit-learn train-test-split


    【解决方案1】:

    换行:

    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()
    

    你的错误就会消失。

    它将估算值分配回导致代码问题的原因。

    【讨论】:

    • 它成功了,谢谢,我很抱歉,你指派回推算值是什么意思?为什么ravel能解决呢?
    • impC.fit_transform(X_train[:,8].reshape(-1,1))的形状。因此你的错误。它应该手动转换为一维数组。
    • 哦,所以,因为我分配了不同的形状会导致错误,好吧我明白了,谢谢你解释谢尔盖
    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 2019-05-22
    • 2017-04-25
    • 2020-09-01
    • 2017-08-08
    • 1970-01-01
    • 2018-12-26
    • 2020-02-20
    相关资源
    最近更新 更多