python - 如何更改我的 OneHotEncoder 以准备更改
问题描述
所以目前我编码我的分类特征的方式是这样的:
# Import the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('weatherHistory_edited.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 6].values
# Encode categorical features
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 5] = labelencoder_X.fit_transform(X[:,5])
onehotencoder = OneHotEncoder(categorical_features= [5])
X = onehotencoder.fit_transform(X).toarray()
这很好用,唯一的事情是我收到警告,即 categorical_features 是 0.20 版中已弃用的关键字,将在 0.22 版中删除。您可以改用 ColumnTransformer。
所以我将最后一段代码切换为:
# Encode categorical features
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
columntransformer = ColumnTransformer([("one_hot_encoder", OneHotEncoder(), [5])], remainder= "passthrough")
X = np.array(columntransformer.fit_transform(X))
现在,当我使用此代码时,我没有收到错误,但我的 X 数组完全搞砸了,甚至变成了一个奇怪的元组。
更奇怪的是,当使用不同的数据集时,该代码似乎确实有效。例子:
# Import the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 4].values
# Encode categorical features
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
columntransformer = ColumnTransformer([("one_hot_encoder", OneHotEncoder(), [3])], remainder= "passthrough")
X = np.array(columntransformer.fit_transform(X))
在此示例中,X 值获得预期值。
我将示例数据集上传到公共存储库,以便您可以重新创建问题:
解决方案
推荐阅读
- jquery - 从后端获取后在表单中填充输入值的问题
- angular - 如何将 Angular 4 中的生物指纹认证与 asp.net 核心 Web 应用程序集成?
- android - 电子商务App,如果支付网关完成交易,但我们的服务器未能存储返回的数据怎么办
- c# - 单击关闭按钮后如何取消控制台关闭
- amazon-web-services - ListObjectV2 在 AWS Lambda 中获取拒绝访问错误
- angular-material - 找不到嵌套在 mat-grid-tile 中的 HTML 元素
- python - 使用 pybind11 或 Python C API 编译和执行 AST
- python - 访问排序嵌套列表的第一个元素以获得第二小的第二个元素
- ios - 运行 react-native run-ios 会启动应用程序但在启动后关闭,但通过 Xcode 可以完美运行
- xcode - Xcode 10.0 模拟器错误“Mach 错误 -308 - (ipc/mig) 服务器死亡”