gpt4 book ai didi

python - sklearn OneHotEncoder输出非数组对象错误

转载 作者:行者123 更新时间:2023-11-30 09:43:05 25 4
gpt4 key购买 nike

我正在 Udemy 上使用以下数据集学习 Python 机器学习类(class)(仅显示前几行)

   R&D Spend  Administration  Marketing Spend       State  Profit
0 165349 136898 471784 New York 192262
1 162598 151378 443899 California 191792
2 153442 101146 407935 Florida 191050
3 144372 118672 383200 New York 182902

该类(class)是在 2016 年制作的,因此一些模块已经更新,我在代码中对此进行了更改(例如:使用 ColumnTransformer make_column_transformer)。此代码的输出应该一个 float 组(它在 Udemy 教程中),但是,由于某种原因,在代码更新后,我的变量 x 被认为是对其进行处理后成为一个 ndarray 对象。我不知道为什么,因为当我打印变量 x 时,它会打印出一个 float 组。

原始数据文件可以在 this link 找到(一个 zip 文件夹)位于文件 50_startups.csv 中。

我尝试添加 .toarray() 但这破坏了代码。

谢谢

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

dataset = pd.read_csv("Startups (multiple linear regression).csv")
x=dataset.iloc[:,:-1].values
y=dataset.iloc[:,-1]


#Encode categorical variables (New York, California, Florida)
from sklearn.compose import ColumnTransformer, make_column_transformer
from sklearn.preprocessing import OneHotEncoder
preprocess = make_column_transformer((OneHotEncoder(),[-1]),remainder="passthrough")
x = preprocess.fit_transform(x)

enter image description here

最佳答案

在这种情况下,我认为这只是输入和输出中混合数据类型的结果。例如,如果您检查 x:

x
array([[165349, 136898, 471784, 'New York'],
[162598, 151378, 443899, 'California'],
[153442, 101146, 407935, 'Florida'],
[144372, 118672, 383200, 'New York']], dtype=object)

您将看到它具有dtype=object。这是因为数组中混合了整数和字符串。因此,直通数组(研发支出、管理支出和营销支出)保持相同的dtype。然后,在 fit_transform 中,该数组与 OneHotEncoder 转换的结果堆叠以生成结果。这样,输出dtype与您提供的输入相同。

如果您想更改dtype,您始终可以使用.astype(float)

关于python - sklearn OneHotEncoder输出非数组对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56443049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com