python - 我遇到了 OnehotEncoder 的问题
问题描述
这是代码:
import numpy as np
import pandas as pd
dataset = pd.read_csv('googleplaystore.csv')
X = dataset.iloc[:, :3].values
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[:, 1] = labelencoder.fit_transform(X[:, 1])
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
ValueError:无法将字符串转换为浮点数:'iHoroscope - 2018 年每日星座运势和占星术'
这是 csv 文件的链接:https ://drive.google.com/file/d/1Z3uT_tU9QsdE8QSBd8husItHeh36ztZa/view?usp=drivesdk
解决方案
自categorical_features
0.20 版以来已弃用(并将在 0.22 版中删除)scikit-learn
建议您改用ColumnTransformer。
这只是将不同的变压器应用于不同的列的一种便捷方式。
因此,您可以使用以下方法对列进行一次热编码ColumnTransformer
:
from sklearn.compose import ColumnTransformer
#Specify what you want to do, and provide column index
ct = ColumnTransformer([('ohe', OneHotEncoder(), [1])])
ohe_category = ct.fit_transform(X)
这为您提供了一个单热编码的稀疏矩阵。您可以将其转换为dense
:
ohe_category.todense()
也就是说,我建议您继续使用pd.get_dummies(正如@JonasCristens 所提到的),因为它使用起来要简单得多:
pd.get_dummies(dataset['Category'])
推荐阅读
- java - JSON Schema - 对象枚举
- sql - 如何解决此编码问题?
- node.js - Expo react-native 将无法连接到 socketio(Android 和 iOS)
- php - PHP SQL PDO Memcached未将结果存储在缓存中
- macos - 在 Mac OSX 上创建 Win32 资源文件
- c - 赋值运算符和 c
- c++ - 在不同线程的套接字中使用 ZMQ,但不能同时使用
- wordpress - 在 Wordpress/Timber 中搜索作者的所有帖子
- javascript - 将 react-native 更新到 0.64.1 后,在 `../node_modules/react-native/Libraries/FBReactNativeSpec` 中找不到 `FBReactNativeSpec` 的 podspec
- python - 需要帮助从字典中删除空列表