我正在尝试使用scikit-learn LabelEncoder
来编码一大串DataFrame
字符串标签。由于数据框有许多(50+)列,因此我想避免LabelEncoder
为每一列创建一个对象。我宁愿只有一个LabelEncoder
可以在我所有数据列中使用的大对象。
将整个数据DataFrame
投入LabelEncoder
会产生以下错误。请记住,我在这里使用伪数据。实际上,我正在处理大约50列的字符串标记数据,因此需要一种不按名称引用任何列的解决方案。
import pandas
from sklearn import preprocessing
df = pandas.DataFrame({
'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'],
'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'],
'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego',
'New_York']
})
le = preprocessing.LabelEncoder()
le.fit(df)
追溯(最近一次通话最近):文件“ /Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/label.py”
中的行1,在第y行中= column_or_1d
中的第306行“ column_or_1d(y,warn = True)
文件“ /Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py”
引发ValueError
(“错误的输入形状{ 0}“。format(shape))ValueError:
输入形状错误(6,3)
关于如何解决这个问题有什么想法吗?
你可以轻松地做到这一点,
df.apply(LabelEncoder().fit_transform)
编辑2:
在scikit-learn 0.20中,推荐的方法是
OneHotEncoder().fit_transform(df)
因为OneHotEncoder现在支持字符串输入。使用ColumnTransformer可以仅将OneHotEncoder应用于某些列。
编辑:
由于这个答案是一年多以前的,并且产生了很多赞誉(包括赏金),所以我可能应该进一步扩大。
对于inverse_transform和transform,你必须做一点改动。
from collections import defaultdict
d = defaultdict(LabelEncoder)
这样,你现在将所有列保留LabelEncoder为字典。
# Encoding the variable
fit = df.apply(lambda x: d[x.name].fit_transform(x))
# Inverse the encoded
fit.apply(lambda x: d[x.name].inverse_transform(x))
# Using the dictionary to label future data
df.apply(lambda x: d[x.name].transform(x))
我正在尝试使用Scikit-Learn的来编码字符串标签的pandas。由于dataframe有许多(50+)列,我希望避免为每个列创建对象;我宁愿只有一个大的对象,它可以跨我的所有数据列工作。 将整个抛入会产生以下错误。请记住,我在这里使用的是虚拟数据;实际上,我正在处理大约50列字符串标记的数据,因此需要一个不引用任何列名称的解决方案。 回溯(最近一次调用):文件“”,第1行,在文件“/use
问题内容: scikit学习的快速SVM问题。训练SVM时,就像 有什么办法可以成为非数字类型的列表?例如,如果我想将向量分类为“猫”或“狗”,而不必使用某种外部查找表将“猫”和“狗”编码为1和2。当我尝试仅传递字符串列表时,我得到… 因此,看起来像只是推弦乐不起作用。有任何想法吗? 问题答案: sklearn的最新版本能够使用字符串作为标签。例如:
这适用于必须使用SVM方法来提高模型精度的分配。 共有3部分,编写了下面的代码 但在此之后,问题如下 执行数字标准化。数据,并将转换后的数据存储在可变数字中。 提示:从sklearn.preprocessing.使用所需的实用程序再次,将digits_standardized分成两个集合名称X_train和X_test。此外,将digits.target分成两组Y_train和Y_test。 提示
scikit-learn 是一个 Python 的机器学习项目。是一个简单高效的数据挖掘和数据分析工具。基于 NumPy、SciPy 和 matplotlib 构建。 Installation 依赖 scikit-learn 要求: Python (>= 2.7 or >= 3.3) NumPy (>= 1.8.2) SciPy (>= 0.13.3) 运行示例需要 Matplotlib >= 1
本文向大家介绍解释Python中scikit-learn库的基础?,包括了解释Python中scikit-learn库的基础?的使用技巧和注意事项,需要的朋友参考一下 Scikit-learn,通常称为sklearn,是Python中的一个库,用于实现机器学习算法。 这是一个开源库,因此可以免费使用。强大而强大,因为它提供了多种工具来执行统计建模。在Python强大而稳定的界面的帮助下,这包括分类
Introduction to Machine Learning with scikit-learn This video series will teach you how to solve Machine Learning problems using Python's popular scikit-learn library. There are 10 video tutorials tot