【发布时间】:2019-04-02 02:10:32
【问题描述】:
代码如下:
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
【问题讨论】:
-
也许您可以发布几行数据文件,因为它只有 3 列。在标签编码器步骤之前和之后查看可能会有所帮助。 (我无法在工作中访问 Google Drive)
-
你在做
onehotencoder.fit_transform(X)你的X会有一些字符串值导致这个错误。你确定使用X而不是X[:, 1]不是错字吗? -
如果我尝试 onehotencoder.fit_transform(X[:, 1]),会得到以下结果: ValueError: Expected 2D array, got 1D array instead: array=[ 1. 1. 1. ... 21. 4. 19.]。如果您的数据具有单个特征,则使用 array.reshape(-1, 1) 重塑您的数据,如果它包含单个样本,则使用 array.reshape(1, -1)。
-
您可以使用
pd.get_dummies(dataset['col'])或pd.get_dummies(dataset.iloc[ : , : 3)获得与来自sklearn 的OneHotEncoder相同的结果
标签: python scikit-learn