尝试使用 OneHot Encoder Python 的预处理错误
Posted
技术标签:
【中文标题】尝试使用 OneHot Encoder Python 的预处理错误【英文标题】:preprocessing error trying to use OneHot Encoder Python 【发布时间】:2017-10-13 00:00:50 【问题描述】:我正在尝试在虚拟机中运行以下代码来解决家庭作业问题。我收到下面的错误消息,我正在尝试确定这是否是我的代码或网站的问题。如果有人能指出我的代码是否有错误以及如何修复它,我将不胜感激。如果我的代码看起来没问题,那么我会让课程知道他们有错误。
Code:
import numpy as np
import pandas as pd
# Load the dataset
X = pd.read_csv('titanic_data.csv')
# Limit to categorical data
X = X.select_dtypes(include=[object])
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
# TODO: Create a LabelEncoder object, which will turn all labels present in
# in each feature to numbers.
# HINT: Use LabelEncoder()
df=pd.DataFrame(X)
le = preprocessing.labelEncoder()
# TODO: For each feature in X, apply the LabelEncoder's fit_transform
# function, which will first learn the labels for the feature (fit)
# and then change the labels to numbers (transform).
df2=df.apply(le.fit_transform)
#for feature in X:
# HINT: use fit_transform on X[feature] using the LabelEncoder() object
#X[feature] = label_encoder.fit_transform(X[feature])
# TODO: Create a OneHotEncoder object, which will create a feature for each
# label present in the data.
# HINT: Use OneHotEncoder()
ohe = preprocessing.OneHotEncoder()
# TODO: Apply the OneHotEncoder's fit_transform function to all of X, which will
# first learn of all the (now numerical) labels in the data (fit), and then
# change the data to one-hot encoded entries (transform).
# HINT: Use fit_transform on X using the OneHotEncoder() object
onehotlabels = enc.fit_transform(df2)
Error:
Traceback (most recent call last):
File "vm_main.py", line 33, in <module>
import main
File "/tmp/vmuser_zrkfroofmi/main.py", line 2, in <module>
import studentMain
File "/tmp/vmuser_zrkfroofmi/studentMain.py", line 3, in <module>
import OneHot
File "/tmp/vmuser_zrkfroofmi/OneHot.py", line 21, in <module>
le = preprocessing.labelEncoder()
NameError: name 'preprocessing' is not defined
【问题讨论】:
le = preprocessing.labelEncoder()
应该是 le = labelEncoder()
,因为您导入 labelEncoder 而不是预处理。 ohe = preprocessing.OneHotEncoder()
也一样。
【参考方案1】:
在名称前调用 OneHotEncoder 而不进行预处理。所以就做ohe = OneHotEncoder()
。问题在于您的导入,如果您执行from sklearn import preprocessing
,您的脚本中的内容将起作用。
【讨论】:
【参考方案2】:从代码中,“从 sklearn.preprocessing 导入 OneHotEncoder”,用户试图从预处理导入 OneHotEncoder,而没有先导入预处理。 Preprocessing 是 sklearn 的一个包,OneHotEncoder 是一个预处理器。这导致了错误。所以导入预处理,然后用 OneHotEncoder 试试
【讨论】:
欢迎来到 SO!上一个答案是说同样的问题。你的新 P.O.V. 是什么? 从代码中,'from sklearn.preprocessing import OneHotEncoder',用户试图从预处理中导入 OneHotEncoder 而没有先导入预处理。因为预处理是 sklearn 的一个包,而 OneHotEncoder 是一个预处理器。这导致了错误。所以导入预处理,然后尝试使用 OneHotEncoder 所以,请用你的评论编辑你的答案,你会得到一个很好的答案。以上是关于尝试使用 OneHot Encoder Python 的预处理错误的主要内容,如果未能解决你的问题,请参考以下文章